gtk 3 stuck menu bug on Mac
- From: Christian Schoenebeck <schoenebeck linuxsampler org>
- To: gtk-devel-list gnome org
- Subject: gtk 3 stuck menu bug on Mac
- Date: Fri, 17 Nov 2017 00:51:25 +0100
Hi!
I am currently investigating a menu handling bug of Gtk 3.22.26 on Mac (Quartz
implementation). It happens quite often that Gtk 3 menus on Mac stop
processing any mouse events. So when that happens, i.e. menu items are no more
highlighted when moving the mouse pointer over them, nor do the menu items fire
when being clicked, nor does i.e. a submenu close when moving the pointer over
another toplevel menu node. The menu simply remains stuck at this point.
Has somebody looked into this issue before?
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;
So it seems when this misbehavior occurs, a wrong toplevel widget was assigned
to the gdk event object (exactly: event->any.window->user_data). However so
far I don't know the root cause yet.
What looks suspicous to me though is that in gdkevents-quartz.c the toplevel
widget under the pointer coordinates is resolved before the corresponding gdk
event is pushed into the gdk event queue. I mean if this Quartz implementation
pushes a bunch of mouse events into the gdk event queue, and one of the events
i.e. would cause a new menu to popup (which always happens after pulling the
events from the queue), then the previously resolved toplevel widget (in
gdkevents-quartz.c) could be wrong since it resolved widgets in the past.
Hints appreciated!
CU
Christian
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]