xwindows/GTK 焦点错误

xwindows/GTK 焦点错误

正如许多人所料,这个错误早在几年前(~2010 年)就已发现。这个错误本质上是当单击一个工具栏,然后转到应用程序的另一个区域时,窗口焦点无法正确更新。这目前影响 GIMP 2.8.22(偶尔在多窗口模式下,经常在单窗口模式下)和 Inkscape 0.92.2,使它们几乎无法使用。这些曾经运行得很好,但现在我倾向于尽可能避免使用它们。

我搜索过许多来源,但得到的都是不确定的错误报告,或尚未修复的报告。

我知道这个问题,有没有办法修复 OSX 上的 gimp 来解决 xwindows 焦点问题? 然而,情况有所不同,因为对于这种情况,单窗口模式是一种有效的解决方法,但它确实有效。

更多错误报告:

我不确定这是否是 MS Windows 独有的,但我可以确认这个错误在某些 Win7 和 Win10 PC 上存在。然而,在其中一份报告中,似乎一些 Linux 用户也受到了影响。

有人能解释一下吗?有解决办法吗?或者有什么理论可以解释为什么会发生这种情况?

更新

我转而使用旧版本的 Inkscape (v0.48.2)。它在我的家用笔记本电脑 (Win10) 和工作笔记本电脑 (Win10) 上运行良好。没有窗口焦点错误。仅提供 32 位版本... 可能是 x64 的问题吗?我必须测试一下。

更新 2

这似乎已在 GIMP v2.9.8 (devel) 中修复。 https://www.gimp.org/downloads/devel/

答案1

与之相关的问题列表多种多样,而且似乎涉及一些不同的原因。

但是,GTK+ 中有一个问题可能会导致此类症状,并且只要触发应用程序正在运行,该问题就会持续存在。最近,GIMP 应用程序的错误报告中已经检查了这个问题,请参阅https://bugzilla.gnome.org/show_bug.cgi?id=780979

它是 GTK+ 事件处理的实际设计选择,是为了修复错误而引入的:

  • 如果发生鼠标事件,特别是单击,UI 工具包(GTK+,其 GDK 子系统)必须确定此事件应转到哪个窗口。通常这是单击位置最上面的窗口
  • 可能是这个位置被另一个应用程序的窗口覆盖了,但是
  • 这正是错误报告中的情况:应用程序使用全屏透明窗口全局捕获鼠标手势
  • GDK 收到鼠标点击事件,检查是否有任何应用程序窗口被点击,发现它们被另一个应用程序窗口覆盖,则丢弃该事件

可以做的是更改 GTK+ 源代码以防止发生这种情况。我们在 GIMP 源代码树中获得了 GTK+ 补丁,并计划在 MS Windows 平台上使用 GIMP 2.9.8 对其进行测试。您可以在发布后通过测试此版本来提供帮助,因为我们不确定这是否会导致其他奇怪的行为(因为引入了当前事件丢弃来修复某些问题)。

答案2

我发现在我的 Windows 7 上,我将操作系统的主题从阿雷奥对于任何其他人来说,现在都没有问题了!

为什么 Areo 主题不能与 GTK+ 很好地兼容?

相关内容