X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fmenu.c;h=34150391fe8e760fb7eb9b0354cc77d39787c420;hb=1fbc70da580b94dfcfe1a8549ed512eb02c5b73a;hp=d4e444182dfee20370f4cda0c74e67849d335995;hpb=c7a75a5ca893b10b06deb2f42afc4995cb5cbf1c;p=chaz%2Fopenbox diff --git a/openbox/menu.c b/openbox/menu.c index d4e44418..34150391 100644 --- a/openbox/menu.c +++ b/openbox/menu.c @@ -1,6 +1,7 @@ /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- menu.c for the Openbox window manager + Copyright (c) 2006 Mikael Magnusson Copyright (c) 2003 Ben Jansens This program is free software; you can redistribute it and/or modify @@ -24,6 +25,7 @@ #include "config.h" #include "screen.h" #include "menuframe.h" +#include "keyboard.h" #include "geom.h" #include "misc.h" #include "client_menu.h" @@ -68,7 +70,7 @@ void menu_startup(gboolean reconfig) menu_hash = g_hash_table_new_full(g_str_hash, g_str_equal, NULL, (GDestroyNotify)menu_destroy_hash_value); - client_list_menu_startup(); + client_list_menu_startup(reconfig); client_menu_startup(); menu_parse_inst = parse_startup(); @@ -109,6 +111,8 @@ void menu_shutdown(gboolean reconfig) parse_shutdown(menu_parse_inst); menu_parse_inst = NULL; + client_list_menu_shutdown(reconfig); + menu_frame_hide_all(); g_hash_table_destroy(menu_hash); menu_hash = NULL; @@ -286,7 +290,8 @@ void menu_show(gchar *name, gint x, gint y, ObClient *client) ObMenuFrame *frame; guint i; - if (!(self = menu_from_name(name))) return; + if (!(self = menu_from_name(name)) + || keyboard_interactively_grabbed()) return; /* if the requested menu is already the top visible menu, then don't bother */ @@ -315,6 +320,12 @@ void menu_show(gchar *name, gint x, gint y, ObClient *client) } if (!menu_frame_show(frame, NULL)) menu_frame_free(frame); + else if (frame->entries) { + ObMenuEntryFrame *e = frame->entries->data; + if (e->entry->type == OB_MENU_ENTRY_TYPE_NORMAL && + e->entry->data.normal.enabled) + menu_frame_select(frame, e); + } } static ObMenuEntry* menu_entry_new(ObMenu *menu, ObMenuEntryType type, gint id)