Web lists-archives.com

Re: gtk 3 stuck menu bug on Mac

I uploaded a patch for this bug to the bug tracker:


Since I filed this report on the "Quartz" driver component, and since I have 
the impression that the Quartz driver is not really maintained right now, 
maybe somebody else might review this patch.


On Montag, 20. November 2017 15:43:37 CET Christian Schoenebeck wrote:
> Actually I have no idea where I would find those "OS X build patches".
> Anyway, I decided to be pragmatic and I am now using the attached patch to
> address this Quartz driver bug on Mac. The actual root cause seems to be
> that the Quartz driver does not generate crossing events correctly under
> all situations (i.e when menus or tooltips appear or disappear), which in
> turn causes the pointer info to reflect often an old, wrong top level
> window, sometimes even NULL, which finally leads to the described symptoms
> with hanging menus. Because when the current toplevel window info is
> already wrong, then it is impossible for Gtk to resolve the correct child
> widget that should receive pointer events.
> So the patch does not fix the Quartz driver, instead it forces to update the
> pointer info very frequently instead (asking the native driver callback
> always about the latest top level window). It is a suboptimal approach to
> handle this issue, I know, but to be honest; in practice the user won't
> feel a performance penalty, and thus I decided for myself that it does not
> make sense for me to invest more days (or even weeks?) to restructure the
> Quartz driver's event generation code in a way expected by Gtk3 now, just
> to fix this bug in a more "clean" way from a pure theoretical point of
> view.
> The rest is up to you to decide whether or whether not you might want to
> apply this or a similar workaround patch to upstream Gtk. All I can say
> from my side is that without addressing this issue at all, Gtk3 IMHO is not
> usable on Mac, because you end up with frozen menus in a matter of few
> seconds.
> CU
> Christian
gtk-devel-list mailing list