X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fmenuframe.c;h=b908ad4ff0a6be146562d62a0265c0c6ef24d26f;hb=96fbc0c6229ff2f13a102da603339472c176bc0b;hp=c6dd02fa3d8ec5a9e9ac21bfdab645207bbd6cc4;hpb=18c2737a2fb3b3c85623dae5d2265d3a97c347e8;p=chaz%2Fopenbox diff --git a/openbox/menuframe.c b/openbox/menuframe.c index c6dd02fa..b908ad4f 100644 --- a/openbox/menuframe.c +++ b/openbox/menuframe.c @@ -45,6 +45,7 @@ static ObMenuEntryFrame* menu_entry_frame_new(ObMenuEntry *entry, static void menu_entry_frame_free(ObMenuEntryFrame *self); static void menu_frame_update(ObMenuFrame *self); static gboolean menu_entry_frame_submenu_timeout(gpointer data); +static void menu_frame_hide(ObMenuFrame *self); static Window createWindow(Window parent, gulong mask, XSetWindowAttributes *attrib) @@ -914,10 +915,10 @@ static gboolean menu_frame_show(ObMenuFrame *self) /* grab the pointer in such a way as to pass through "owner events" so that we can get enter/leave notifies in the menu. */ - if (!grab_pointer(TRUE, TRUE, OB_CURSOR_POINTER)) + if (!grab_pointer(TRUE, FALSE, OB_CURSOR_POINTER)) return FALSE; - if (!grab_keyboard(TRUE)) { - grab_pointer(FALSE, TRUE, OB_CURSOR_POINTER); + if (!grab_keyboard()) { + ungrab_pointer(); return FALSE; } } @@ -1013,7 +1014,7 @@ gboolean menu_frame_show_submenu(ObMenuFrame *self, ObMenuFrame *parent, return TRUE; } -void menu_frame_hide(ObMenuFrame *self) +static void menu_frame_hide(ObMenuFrame *self) { GList *it = g_list_find(menu_frame_visible, self); @@ -1035,8 +1036,8 @@ void menu_frame_hide(ObMenuFrame *self) if (menu_frame_visible == NULL) { /* last menu shown */ - grab_pointer(FALSE, TRUE, OB_CURSOR_NONE); - grab_keyboard(FALSE); + ungrab_pointer(); + ungrab_keyboard(); } XUnmapWindow(ob_display, self->window);