From d25fde4173aebce579d7903b1d127dd2d8ca32b9 Mon Sep 17 00:00:00 2001 From: Iain Patterson Date: Wed, 27 Mar 2013 22:50:50 +0000 Subject: [PATCH] Show shortcuts for workspace switching menu entries. When showing a Workspaces menu entry for switching to a particular workspace, also show the shortcut if one is bound for switching to that workspace. --- src/defaults.c | 13 +++++++++++++ src/workspace.c | 9 ++++++++- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/defaults.c b/src/defaults.c index 51de3f14..5b57dd9d 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -184,6 +184,8 @@ static int setCursor(); #define REFRESH_ICON_TITLE_COLOR (1<<13) #define REFRESH_ICON_TITLE_BACK (1<<14) +#define REFRESH_WORKSPACE_MENU (1<<15) + #define REFRESH_FRAME_BORDER REFRESH_MENU_FONT|REFRESH_WINDOW_FONT static WOptionEnumeration seFocusModes[] = { @@ -1129,6 +1131,13 @@ void wReadDefaults(WScreen * scr, WMPropList * new_dict) } if (needs_refresh & REFRESH_ICON_TILE) WMPostNotificationName(WNIconTileSettingsChanged, NULL, NULL); + + if (needs_refresh & REFRESH_WORKSPACE_MENU) { + if (scr->workspace_menu) + wWorkspaceMenuUpdate(scr, scr->workspace_menu); + if (scr->clip_ws_menu) + wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); + } } } @@ -2840,6 +2849,10 @@ static int setKeyGrab(WScreen * scr, WDefaultEntry * entry, WShortKey * shortcut wwin = wwin->prev; } + /* do we need to update window menus? */ + if (widx >= WKBD_WORKSPACE1 && widx <= WKBD_WORKSPACE10) + return REFRESH_WORKSPACE_MENU; + return 0; } diff --git a/src/workspace.c b/src/workspace.c index 438fe55f..6d494984 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -61,6 +61,7 @@ extern int ignore_wks_change; extern WPreferences wPreferences; extern XContext wVEdgeContext; extern void ProcessPendingEvents(); +extern WShortKey wKeyBindings[WKBD_LAST]; static WMPropList *dWorkspaces = NULL; static WMPropList *dClip, *dName; @@ -744,12 +745,18 @@ void wWorkspaceMenuUpdate(WScreen * scr, WMenu * menu) wMenuRemoveItem(menu, i); } } - wMenuRealize(menu); for (i = 0; i < scr->workspace_count; i++) { + /* workspace shortcut labels */ + if (i / 10 == scr->current_workspace / 10) + menu->entries[i + MC_WORKSPACE1]->rtext = GetShortcutKey(wKeyBindings[WKBD_WORKSPACE1 + (i % 10)]); + else + menu->entries[i + MC_WORKSPACE1]->rtext = NULL; + menu->entries[i + MC_WORKSPACE1]->flags.indicator_on = 0; } menu->entries[scr->current_workspace + MC_WORKSPACE1]->flags.indicator_on = 1; + wMenuRealize(menu); /* don't let user destroy current workspace */ if (scr->current_workspace == scr->workspace_count - 1) { -- 2.11.4.GIT