aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJan D2010-07-17 11:59:19 +0200
committerJan D2010-07-17 11:59:19 +0200
commit499322cef9f248af58fb76334076feb80842d592 (patch)
tree6eea65732c03e46ac1cea8686226e52906b576d5 /src
parentf253ef6a8e0dd71cf9fd58e3d9407549d30e091d (diff)
downloademacs-499322cef9f248af58fb76334076feb80842d592.tar.gz
emacs-499322cef9f248af58fb76334076feb80842d592.zip
* gtkutil.c (xg_event_is_for_menubar): Also check that event window
is related to the menu bar (Bug#6499).
Diffstat (limited to 'src')
-rw-r--r--src/ChangeLog5
-rw-r--r--src/gtkutil.c23
2 files changed, 25 insertions, 3 deletions
diff --git a/src/ChangeLog b/src/ChangeLog
index c00d4febc2d..c3d77fc754d 100644
--- a/src/ChangeLog
+++ b/src/ChangeLog
@@ -1,3 +1,8 @@
12010-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
12010-07-14 Jan Djärv <jan.h.d@swipnet.se> 62010-07-14 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 7c3484fbeb5..1a90aabc1c6 100644
--- a/src/gtkutil.c
+++ b/src/gtkutil.c
@@ -2994,6 +2994,13 @@ int
2994xg_event_is_for_menubar (FRAME_PTR f, XEvent *event) 2994xg_event_is_for_menubar (FRAME_PTR f, XEvent *event)
2995{ 2995{
2996 struct x_output *x = f->output_data.x; 2996 struct x_output *x = f->output_data.x;
2997 GList *iter;
2998 GdkRectangle rec;
2999 GList *list;
3000 GdkDisplay *gdpy;
3001 GdkWindow *gw;
3002 GdkEvent gevent;
3003 GtkWidget *gwdesc;
2997 3004
2998 if (! x->menubar_widget) return 0; 3005 if (! x->menubar_widget) return 0;
2999 3006
@@ -3004,14 +3011,24 @@ xg_event_is_for_menubar (FRAME_PTR f, XEvent *event)
3004 && event->xbutton.same_screen)) 3011 && event->xbutton.same_screen))
3005 return 0; 3012 return 0;
3006 3013
3007 GList *list = gtk_container_get_children (GTK_CONTAINER (x->menubar_widget)); 3014 gdpy = gdk_x11_lookup_xdisplay (FRAME_X_DISPLAY (f));
3015 gw = gdk_xid_table_lookup_for_display (gdpy, event->xbutton.window);
3016 if (! gw) return 0;
3017 gevent.any.window = gw;
3018 gwdesc = gtk_get_event_widget (&gevent);
3019 if (! gwdesc) return 0;
3020 if (! GTK_IS_MENU_BAR (gwdesc)
3021 && ! GTK_IS_MENU_ITEM (gwdesc)
3022 && ! gtk_widget_is_ancestor (x->menubar_widget, gwdesc))
3023 return 0;
3024
3025 list = gtk_container_get_children (GTK_CONTAINER (x->menubar_widget));
3008 if (! list) return 0; 3026 if (! list) return 0;
3009 GList *iter;
3010 GdkRectangle rec;
3011 rec.x = event->xbutton.x; 3027 rec.x = event->xbutton.x;
3012 rec.y = event->xbutton.y; 3028 rec.y = event->xbutton.y;
3013 rec.width = 1; 3029 rec.width = 1;
3014 rec.height = 1; 3030 rec.height = 1;
3031
3015 for (iter = list ; iter; iter = g_list_next (iter)) 3032 for (iter = list ; iter; iter = g_list_next (iter))
3016 { 3033 {
3017 GtkWidget *w = GTK_WIDGET (iter->data); 3034 GtkWidget *w = GTK_WIDGET (iter->data);