summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2007-05-07 23:48:05 +0000
committerDana Jansens <danakj@orodu.net>2007-05-07 23:48:05 +0000
commit1fa08abd9c6674c14bf4088112e69a172ddf19b6 (patch)
tree6b77e5b476e32a39c53704aea13a7b55d668a611 /openbox
parentfa332cc31474cf1337a0aba5b7d2e9bdd028d87c (diff)
um... hide the client menu when the window changes desktops. its not visible anymore (probably..) and no send to menu wont be wrong too.
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);