summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--openbox/client_menu.c11
1 files changed, 11 insertions, 0 deletions
diff --git a/openbox/client_menu.c b/openbox/client_menu.c
index acb52530..8375d396 100644
--- a/openbox/client_menu.c
+++ b/openbox/client_menu.c
@@ -178,8 +178,19 @@ static void desktop_change_callback(ObClient *c, gpointer data)
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);
}