X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fclient_menu.c;h=8375d396819bd189937fd00d884786149ad270a9;hb=fa332cc31474cf1337a0aba5b7d2e9bdd028d87c;hp=acb525300ad181f436817e648eebf33919fb00d0;hpb=280529221e9349aa07c6c498df6b80b3a8951198;p=chaz%2Fopenbox 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); }