summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
Diffstat (limited to 'openbox')
-rw-r--r--openbox/client.c1
-rw-r--r--openbox/client_list_menu.c2
-rw-r--r--openbox/client_menu.c22
-rw-r--r--openbox/menu.c2
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);