diff options
| author | Dana Jansens <danakj@orodu.net> | 2007-05-12 19:50:32 +0000 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2007-05-12 19:50:32 +0000 |
| commit | c2e4d42e6d086b60d4ecd9ef2e51ef9ed7575dfc (patch) | |
| tree | 0b2f3c12e20424e27773c01fb5f10a3b51bd2da2 | |
| parent | ab75dd867259d2a3165f1b2fdc255764106370c5 (diff) | |
ignore enter events on top menu and submenu popup
| -rw-r--r-- | openbox/menuframe.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/openbox/menuframe.c b/openbox/menuframe.c index 5782b7ac..a42c138d 100644 --- a/openbox/menuframe.c +++ b/openbox/menuframe.c @@ -932,6 +932,7 @@ static gboolean menu_frame_show(ObMenuFrame *self) gboolean menu_frame_show_topmenu(ObMenuFrame *self, gint x, gint y, gint button) { + gint px, py; guint i; if (menu_frame_is_visible(self)) @@ -957,14 +958,20 @@ gboolean menu_frame_show_topmenu(ObMenuFrame *self, gint x, gint y, XMapWindow(ob_display, self->window); + if (screen_pointer_pos(&px, &py)) { + ObMenuEntryFrame *e = menu_entry_frame_under(px, py); + if (e && e->frame == self) + e->ignore_enters++; + } + return TRUE; } gboolean menu_frame_show_submenu(ObMenuFrame *self, ObMenuFrame *parent, ObMenuEntryFrame *parent_entry) { - ObMenuEntryFrame *e; gint x, y, dx, dy; + gint px, py; if (menu_frame_is_visible(self)) return TRUE; @@ -994,9 +1001,11 @@ gboolean menu_frame_show_submenu(ObMenuFrame *self, ObMenuFrame *parent, XMapWindow(ob_display, self->window); - if (screen_pointer_pos(&dx, &dy) && (e = menu_entry_frame_under(dx, dy)) && - e->frame == self) - ++e->ignore_enters; + if (screen_pointer_pos(&px, &py)) { + ObMenuEntryFrame *e = menu_entry_frame_under(px, py); + if (e && e->frame == self) + e->ignore_enters++; + } return TRUE; } @@ -1086,7 +1095,7 @@ ObMenuEntryFrame* menu_entry_frame_under(gint x, gint y) ObMenuEntryFrame *e = it->data; if (RECT_CONTAINS(e->area, x, y)) { - ret = e; + ret = e; break; } } |
