[prev in list] [next in list] [prev in thread] [next in thread] 

List:       gtk-devel
Subject:    Re: gtk 3 stuck menu bug on Mac
From:       Matthias Clasen <matthias.clasen () gmail ! com>
Date:       2017-11-20 13:04:20
Message-ID: CAFwd_vD-WYoJ+bD+b9zwQMs6U5tb6WMX_QZL5x+Bn5EBq1TH8g () mail ! gmail ! com
[Download RAW message or body]

[Attachment #2 (multipart/alternative)]


On Sat, Nov 18, 2017 at 3:34 PM, <philip.chimento@gmail.com> wrote:

> On Sat, Nov 18, 2017 at 6:45 AM Christian Schoenebeck <
> schoenebeck@linuxsampler.org> wrote:
>
>> On Freitag, 17. November 2017 00:51:25 CET Christian Schoenebeck wrote:
>> > What I found out so far is that whenever this problem occurs, both of
>> the
>> > following two checks in function gtk_menu_motion_notify() (gtkmenu.c)
>> return
>> > false and the function is thus aborted at this point:
>> >
>> >       menu_item = gtk_get_event_widget ((GdkEvent*) event);
>> >       ...
>> >       if (!GTK_IS_MENU_ITEM (menu_item) ||
>> >           !GTK_IS_MENU (parent))
>> >           return false;
>>
>> Looking further at this issue, the problem is probably not a timing issue
>> like
>> I first considered in my previous email. Fact is that the wrong widget
>> under
>> the mouse pointer is resolved forever whenever this issue starts to occur:
>>
>> At this code location above, the gtk_menu_motion_notify() function expects
>> menu_item to be a "GtkMenuItem" gobject class, however when this issue
>> occurs,
>> menu_item is pointing at its parent "GtkMenu" gobject instead.
>>
>> I would understand if this misbehavior just happens immediately after a
>> new
>> menu pops up. But whenever this stuck menu issue occurs, I can continue to
>> move the mouse pointer over all the visible menu items for hours and the
>> resolved toplevel widget under the mouse pointer (resolved by the Quartz
>> implementation) is always the GtkMenu widget instead of the respective
>> GtkMenuItem widget.
>>
>> Since this issue only seems to happen on Mac, and since it worked
>> flawlessly on
>> Mac before, and since I see the Quartz implementation hasn't really
>> changed
>> (significantly) in the last couple years, was there some kind of important
>> change in gtk 3 that still would need to be applied to the Quartz driver?
>>
>
> No-one's really maintaining the Quartz backend at the moment, so if you
> felt like investigating this it would be really appreciated. You could try
> a 'git bisect' to see what change in GTK3 might have caused the regression
> and that would probably make it easy to see what would need to be changed
> in the Quartz backend.
>
>
As Philip, a git bisect might be helpful. But keep in mind that OS X builds
of GTK+ tend to include quite a few non-upstream patches, so keep any eye
out for those.

[Attachment #5 (text/html)]

<div dir="ltr">On Sat, Nov 18, 2017 at 3:34 PM,  <span dir="ltr">&lt;<a \
href="mailto:philip.chimento@gmail.com" \
target="_blank">philip.chimento@gmail.com</a>&gt;</span> wrote:<br><div \
class="gmail_extra"><div class="gmail_quote"><blockquote \
class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc \
solid;padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div><div \
class="h5"><div dir="ltr">On Sat, Nov 18, 2017 at 6:45 AM Christian \
Schoenebeck &lt;<a href="mailto:schoenebeck@linuxsampler.org" \
target="_blank">schoenebeck@linuxsampler.org</a>&gt; \
wrote:<br></div><blockquote class="gmail_quote" style="margin:0 0 0 \
.8ex;border-left:1px #ccc solid;padding-left:1ex">On Freitag, 17. November \
2017 00:51:25 CET Christian Schoenebeck wrote:<br> &gt; What I found out so \
far is that whenever this problem occurs, both of the<br> &gt; following \
two checks in function gtk_menu_motion_notify() (gtkmenu.c) return<br> &gt; \
false and the function is thus aborted at this point:<br> &gt;<br>
&gt;           menu_item = gtk_get_event_widget ((GdkEvent*) event);<br>
&gt;           ...<br>
&gt;           if (!GTK_IS_MENU_ITEM (menu_item) ||<br>
&gt;                 !GTK_IS_MENU (parent))<br>
&gt;                 return false;<br>
<br>
Looking further at this issue, the problem is probably not a timing issue \
like<br> I first considered in my previous email. Fact is that the wrong \
widget under<br> the mouse pointer is resolved forever whenever this issue \
starts to occur:<br> <br>
At this code location above, the gtk_menu_motion_notify() function \
expects<br> menu_item to be a &quot;GtkMenuItem&quot; gobject class, \
however when this issue occurs,<br> menu_item is pointing at its parent \
&quot;GtkMenu&quot; gobject instead.<br> <br>
I would understand if this misbehavior just happens immediately after a \
new<br> menu pops up. But whenever this stuck menu issue occurs, I can \
continue to<br> move the mouse pointer over all the visible menu items for \
hours and the<br> resolved toplevel widget under the mouse pointer \
(resolved by the Quartz<br> implementation) is always the GtkMenu widget \
instead of the respective<br> GtkMenuItem widget.<br>
<br>
Since this issue only seems to happen on Mac, and since it worked \
flawlessly on<br> Mac before, and since I see the Quartz implementation \
hasn&#39;t really changed<br> (significantly) in the last couple years, was \
there some kind of important<br> change in gtk 3 that still would need to \
be applied to the Quartz \
driver?<br></blockquote><div><br></div></div></div><div>No-one&#39;s really \
maintaining the Quartz backend at the moment, so if you felt like \
investigating this it would be really appreciated. You could try a &#39;git \
bisect&#39; to see what change in GTK3 might have caused the regression and \
that would probably make it easy to see what would need to be changed in \
the Quartz backend.</div><div><br></div></div></div></blockquote><div><br></div><div>As \
Philip, a git bisect might be helpful. But keep in mind that OS X builds of \
GTK+ tend to include quite a few non-upstream patches, so keep any eye out \
for those. <br></div></div></div></div>



_______________________________________________
gtk-devel-list mailing list
gtk-devel-list@gnome.org
https://mail.gnome.org/mailman/listinfo/gtk-devel-list


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic