[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Emacs-diffs] /srv/bzr/emacs/trunk r100838: Merge latest fix to xg_event
From: |
Chong Yidong |
Subject: |
[Emacs-diffs] /srv/bzr/emacs/trunk r100838: Merge latest fix to xg_event_is_for_menubar. |
Date: |
Sat, 17 Jul 2010 10:43:41 -0400 |
User-agent: |
Bazaar (2.0.3) |
------------------------------------------------------------
revno: 100838 [merge]
committer: Chong Yidong <address@hidden>
branch nick: trunk
timestamp: Sat 2010-07-17 10:43:41 -0400
message:
Merge latest fix to xg_event_is_for_menubar.
modified:
src/ChangeLog
src/gtkutil.c
=== modified file 'src/ChangeLog'
--- a/src/ChangeLog 2010-07-17 11:38:31 +0000
+++ b/src/ChangeLog 2010-07-17 14:41:10 +0000
@@ -1,3 +1,8 @@
+2010-07-17 Jan Djärv <address@hidden>
+
+ * gtkutil.c (xg_event_is_for_menubar): Also check that event window
+ is related to the menu bar (Bug#6499).
+
2010-07-16 Jan Djärv <address@hidden>
* xterm.h (x_menubar_window_to_frame): Second parameter is XEvent*.
=== modified file 'src/gtkutil.c'
--- a/src/gtkutil.c 2010-07-16 15:42:15 +0000
+++ b/src/gtkutil.c 2010-07-17 14:41:10 +0000
@@ -2860,6 +2860,13 @@
xg_event_is_for_menubar (FRAME_PTR f, XEvent *event)
{
struct x_output *x = f->output_data.x;
+ GList *iter;
+ GdkRectangle rec;
+ GList *list;
+ GdkDisplay *gdpy;
+ GdkWindow *gw;
+ GdkEvent gevent;
+ GtkWidget *gwdesc;
if (! x->menubar_widget) return 0;
@@ -2870,14 +2877,24 @@
&& event->xbutton.same_screen))
return 0;
- GList *list = gtk_container_get_children (GTK_CONTAINER (x->menubar_widget));
+ gdpy = gdk_x11_lookup_xdisplay (FRAME_X_DISPLAY (f));
+ gw = gdk_xid_table_lookup_for_display (gdpy, event->xbutton.window);
+ if (! gw) return 0;
+ gevent.any.window = gw;
+ gwdesc = gtk_get_event_widget (&gevent);
+ if (! gwdesc) return 0;
+ if (! GTK_IS_MENU_BAR (gwdesc)
+ && ! GTK_IS_MENU_ITEM (gwdesc)
+ && ! gtk_widget_is_ancestor (x->menubar_widget, gwdesc))
+ return 0;
+
+ list = gtk_container_get_children (GTK_CONTAINER (x->menubar_widget));
if (! list) return 0;
- GList *iter;
- GdkRectangle rec;
rec.x = event->xbutton.x;
rec.y = event->xbutton.y;
rec.width = 1;
rec.height = 1;
+
for (iter = list ; iter; iter = g_list_next (iter))
{
GtkWidget *w = GTK_WIDGET (iter->data);
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [Emacs-diffs] /srv/bzr/emacs/trunk r100838: Merge latest fix to xg_event_is_for_menubar.,
Chong Yidong <=