diff options
| author | Chong Yidong | 2010-07-17 10:41:10 -0400 |
|---|---|---|
| committer | Chong Yidong | 2010-07-17 10:41:10 -0400 |
| commit | 1c5f6018d55ea3c0e5430cde60624e2232d87bec (patch) | |
| tree | 92a6e263283507a745ef0540615d38e0df6f34d3 /src | |
| parent | f6003da52e7aeee4d1e3a4e2a44da1baf8479c29 (diff) | |
| parent | 499322cef9f248af58fb76334076feb80842d592 (diff) | |
| download | emacs-1c5f6018d55ea3c0e5430cde60624e2232d87bec.tar.gz emacs-1c5f6018d55ea3c0e5430cde60624e2232d87bec.zip | |
Merge latest fix to xg_event_is_for_menubar.
Diffstat (limited to 'src')
| -rw-r--r-- | src/ChangeLog | 5 | ||||
| -rw-r--r-- | src/gtkutil.c | 23 |
2 files changed, 25 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog index ce0956310ac..9914cc0767a 100644 --- a/src/ChangeLog +++ b/src/ChangeLog | |||
| @@ -1,3 +1,8 @@ | |||
| 1 | 2010-07-17 Jan Djärv <jan.h.d@swipnet.se> | ||
| 2 | |||
| 3 | * gtkutil.c (xg_event_is_for_menubar): Also check that event window | ||
| 4 | is related to the menu bar (Bug#6499). | ||
| 5 | |||
| 1 | 2010-07-16 Jan Djärv <jan.h.d@swipnet.se> | 6 | 2010-07-16 Jan Djärv <jan.h.d@swipnet.se> |
| 2 | 7 | ||
| 3 | * xterm.h (x_menubar_window_to_frame): Second parameter is XEvent*. | 8 | * xterm.h (x_menubar_window_to_frame): Second parameter is XEvent*. |
diff --git a/src/gtkutil.c b/src/gtkutil.c index 8676aa6200c..3a8212ebdb6 100644 --- a/src/gtkutil.c +++ b/src/gtkutil.c | |||
| @@ -2860,6 +2860,13 @@ int | |||
| 2860 | xg_event_is_for_menubar (FRAME_PTR f, XEvent *event) | 2860 | xg_event_is_for_menubar (FRAME_PTR f, XEvent *event) |
| 2861 | { | 2861 | { |
| 2862 | struct x_output *x = f->output_data.x; | 2862 | struct x_output *x = f->output_data.x; |
| 2863 | GList *iter; | ||
| 2864 | GdkRectangle rec; | ||
| 2865 | GList *list; | ||
| 2866 | GdkDisplay *gdpy; | ||
| 2867 | GdkWindow *gw; | ||
| 2868 | GdkEvent gevent; | ||
| 2869 | GtkWidget *gwdesc; | ||
| 2863 | 2870 | ||
| 2864 | if (! x->menubar_widget) return 0; | 2871 | if (! x->menubar_widget) return 0; |
| 2865 | 2872 | ||
| @@ -2870,14 +2877,24 @@ xg_event_is_for_menubar (FRAME_PTR f, XEvent *event) | |||
| 2870 | && event->xbutton.same_screen)) | 2877 | && event->xbutton.same_screen)) |
| 2871 | return 0; | 2878 | return 0; |
| 2872 | 2879 | ||
| 2873 | GList *list = gtk_container_get_children (GTK_CONTAINER (x->menubar_widget)); | 2880 | gdpy = gdk_x11_lookup_xdisplay (FRAME_X_DISPLAY (f)); |
| 2881 | gw = gdk_xid_table_lookup_for_display (gdpy, event->xbutton.window); | ||
| 2882 | if (! gw) return 0; | ||
| 2883 | gevent.any.window = gw; | ||
| 2884 | gwdesc = gtk_get_event_widget (&gevent); | ||
| 2885 | if (! gwdesc) return 0; | ||
| 2886 | if (! GTK_IS_MENU_BAR (gwdesc) | ||
| 2887 | && ! GTK_IS_MENU_ITEM (gwdesc) | ||
| 2888 | && ! gtk_widget_is_ancestor (x->menubar_widget, gwdesc)) | ||
| 2889 | return 0; | ||
| 2890 | |||
| 2891 | list = gtk_container_get_children (GTK_CONTAINER (x->menubar_widget)); | ||
| 2874 | if (! list) return 0; | 2892 | if (! list) return 0; |
| 2875 | GList *iter; | ||
| 2876 | GdkRectangle rec; | ||
| 2877 | rec.x = event->xbutton.x; | 2893 | rec.x = event->xbutton.x; |
| 2878 | rec.y = event->xbutton.y; | 2894 | rec.y = event->xbutton.y; |
| 2879 | rec.width = 1; | 2895 | rec.width = 1; |
| 2880 | rec.height = 1; | 2896 | rec.height = 1; |
| 2897 | |||
| 2881 | for (iter = list ; iter; iter = g_list_next (iter)) | 2898 | for (iter = list ; iter; iter = g_list_next (iter)) |
| 2882 | { | 2899 | { |
| 2883 | GtkWidget *w = GTK_WIDGET (iter->data); | 2900 | GtkWidget *w = GTK_WIDGET (iter->data); |