From 1fa08abd9c6674c14bf4088112e69a172ddf19b6 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 7 May 2007 23:48:05 +0000 Subject: [PATCH] um... hide the client menu when the window changes desktops. its not visible anymore (probably..) and no send to menu wont be wrong too. --- openbox/client.c | 1 + openbox/client_list_menu.c | 2 +- openbox/client_menu.c | 22 ++-------------------- openbox/menu.c | 2 +- 4 files changed, 5 insertions(+), 22 deletions(-) diff --git a/openbox/client.c b/openbox/client.c index 0d74882c..54ae99fc 100644 --- a/openbox/client.c +++ b/openbox/client.c @@ -3027,6 +3027,7 @@ void client_set_desktop_recursive(ObClient *self, focus_order_to_bottom(self); /* call the notifies */ + GSList *it; for (it = client_desktop_notifies; it; it = g_slist_next(it)) { ClientCallback *d = it->data; d->func(self, d->data); diff --git a/openbox/client_list_menu.c b/openbox/client_list_menu.c index 036c2408..12c16815 100644 --- a/openbox/client_list_menu.c +++ b/openbox/client_list_menu.c @@ -159,7 +159,7 @@ static gboolean self_update(ObMenuFrame *frame, gpointer data) } for (; it; it = next, ++i) { next = g_slist_next(it); - menu_unref(it->data); + menu_free(it->data); desktop_menus = g_slist_delete_link(desktop_menus, it); menu_entry_remove(menu_find_entry_id(menu, i)); } diff --git a/openbox/client_menu.c b/openbox/client_menu.c index 8375d396..11e31965 100644 --- a/openbox/client_menu.c +++ b/openbox/client_menu.c @@ -173,26 +173,8 @@ static void desktop_change_callback(ObClient *c, gpointer data) { ObMenuFrame *frame = data; if (c == frame->client) { - /* adding/removing entries while it's shown is not fun, so just hide - the menu and reshow it */ - if (frame->parent) { - ObMenuEntryFrame *me = frame->parent_entry; - ObMenuFrame *parent = frame->parent; - gint sel = - g_list_position(frame->entries, - g_list_find(frame->entries, frame->selected)); - menu_frame_select(parent, NULL, TRUE); - menu_frame_select(parent, me, TRUE); - - frame = parent->child; - /* reselect the same spot or the last one if it got shorter */ - sel = MIN(sel, (gint)g_list_length(frame->entries)); - if (sel >= 0) - menu_frame_select(frame, - g_list_nth(frame->entries, sel)->data, - TRUE); - } else - menu_frame_hide(frame); + /* the client won't even be on the screen anymore, so hide the menu */ + menu_frame_hide_all(); } } diff --git a/openbox/menu.c b/openbox/menu.c index da9ba6b8..0e203739 100644 --- a/openbox/menu.c +++ b/openbox/menu.c @@ -361,7 +361,7 @@ static void menu_destroy_hash_value(ObMenu *self) g_free(self); } -void menu_unref(ObMenu *menu) +void menu_free(ObMenu *menu) { if (menu) g_hash_table_remove(menu_hash, menu->name); -- 2.39.2