The variable workspace_menu, that contains the workspace_menu is moved to the global workspace properties.
Now the screen is not needed to know the workspace_menu. This variable is moved to the wks_info struct because is related to the workspace system, and not to the screen. Signed-off-by: Rodolfo García Peñas (kix) <[email protected]> --- src/defaults.c | 4 ++-- src/menu.c | 4 ++-- src/rootmenu.c | 9 +++++---- src/screen.h | 1 - src/workspace.c | 24 ++++++++++++------------ src/workspace.h | 3 +++ 6 files changed, 24 insertions(+), 21 deletions(-) diff --git a/src/defaults.c b/src/defaults.c index 319bf21..71c6ed0 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -1203,8 +1203,8 @@ void wReadDefaults(WScreen * scr, WMPropList * new_dict) WMPostNotificationName(WNIconTileSettingsChanged, NULL, NULL); if (needs_refresh & REFRESH_WORKSPACE_MENU) { - if (scr->workspace_menu) - wWorkspaceMenuUpdate(scr, scr->workspace_menu); + if (wks_info.workspace_menu) + wWorkspaceMenuUpdate(scr, wks_info.workspace_menu); if (scr->clip_ws_menu) wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); if (scr->workspace_submenu) diff --git a/src/menu.c b/src/menu.c index 9c7b7b5..efdc7f0 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2266,9 +2266,9 @@ void wMenuSaveState(WScreen * scr) if (saveMenuRecurs(menus, scr, scr->root_menu)) save_menus = 1; - if (scr->workspace_menu && scr->workspace_menu->flags.buttoned) { + if (wks_info.workspace_menu && wks_info.workspace_menu->flags.buttoned) { key = WMCreatePLString("WorkspaceMenu"); - saveMenuInfo(menus, scr->workspace_menu, key); + saveMenuInfo(menus, wks_info.workspace_menu, key); WMReleasePropList(key); save_menus = 1; } diff --git a/src/rootmenu.c b/src/rootmenu.c index 9a4f36b..aed27e0 100644 --- a/src/rootmenu.c +++ b/src/rootmenu.c @@ -61,6 +61,7 @@ #define MAX_SHORTCUT_LENGTH 32 extern WDDomain *WDRootMenu; +extern WWorkspace_info wks_info; static WMenu *readMenuPipe(WScreen * scr, char **file_name); static WMenu *readPLMenuPipe(WScreen * scr, char **file_name); @@ -755,10 +756,10 @@ static void constructPLMenuFromPipe(WMenu * menu, WMenuEntry * entry) wfree(cmd); } -static void cleanupWorkspaceMenu(WMenu * menu) +static void cleanupWorkspaceMenu(WMenu *menu) { - if (menu->frame->screen_ptr->workspace_menu == menu) - menu->frame->screen_ptr->workspace_menu = NULL; + if (wks_info.workspace_menu == menu) + wks_info.workspace_menu = NULL; } static WMenuEntry *addWorkspaceMenu(WScreen *scr, WMenu *menu, const char *title) @@ -776,7 +777,7 @@ static WMenuEntry *addWorkspaceMenu(WScreen *scr, WMenu *menu, const char *title wsmenu = wWorkspaceMenuMake(scr, True); wsmenu->on_destroy = cleanupWorkspaceMenu; - scr->workspace_menu = wsmenu; + wks_info.workspace_menu = wsmenu; entry = wMenuAddCallback(menu, title, NULL, NULL); wMenuEntrySetCascade(menu, entry, wsmenu); diff --git a/src/screen.h b/src/screen.h index 0496a91..892a53c 100644 --- a/src/screen.h +++ b/src/screen.h @@ -209,7 +209,6 @@ typedef struct _WScreen { struct WMenu *root_menu; /* root window menu */ struct WMenu *switch_menu; /* window list menu */ - struct WMenu *workspace_menu; /* workspace operation */ struct WMenu *window_menu; /* window command menu */ struct WMenu *icon_menu; /* icon/appicon menu */ struct WMenu *workspace_submenu; /* workspace list for window_menu */ diff --git a/src/workspace.c b/src/workspace.c index 4ae1ecf..b5e8e5e 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -115,7 +115,7 @@ int wWorkspaceNew(WScreen *scr) wks_info.workspaces = list; - wWorkspaceMenuUpdate(scr, scr->workspace_menu); + wWorkspaceMenuUpdate(scr, wks_info.workspace_menu); wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); wNETWMUpdateDesktop(scr); WMPostNotificationName(WMNWorkspaceCreated, scr, (void *)(uintptr_t) (wks_info.workspace_count - 1)); @@ -166,7 +166,7 @@ Bool wWorkspaceDelete(WScreen * scr, int workspace) wks_info.workspace_count--; /* update menu */ - wWorkspaceMenuUpdate(scr, scr->workspace_menu); + wWorkspaceMenuUpdate(scr, wks_info.workspace_menu); /* clip workspace menu */ wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); @@ -483,7 +483,7 @@ void wWorkspaceForceChange(WScreen * scr, int workspace) wks_info.last_used_workspace = wks_info.current_workspace; wks_info.current_workspace = workspace; - wWorkspaceMenuUpdate(scr, scr->workspace_menu); + wWorkspaceMenuUpdate(scr, wks_info.workspace_menu); wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); @@ -692,11 +692,11 @@ void wWorkspaceRename(WScreen *scr, int workspace, const char *name) wMenuRealize(scr->clip_ws_menu); } } - if (scr->workspace_menu) { - if (strcmp(scr->workspace_menu->entries[workspace + MC_WORKSPACE1]->text, buf) != 0) { - wfree(scr->workspace_menu->entries[workspace + MC_WORKSPACE1]->text); - scr->workspace_menu->entries[workspace + MC_WORKSPACE1]->text = wstrdup(buf); - wMenuRealize(scr->workspace_menu); + if (wks_info.workspace_menu) { + if (strcmp(wks_info.workspace_menu->entries[workspace + MC_WORKSPACE1]->text, buf) != 0) { + wfree(wks_info.workspace_menu->entries[workspace + MC_WORKSPACE1]->text); + wks_info.workspace_menu->entries[workspace + MC_WORKSPACE1]->text = wstrdup(buf); + wMenuRealize(wks_info.workspace_menu); } } @@ -857,10 +857,10 @@ void wWorkspaceRestoreState(WScreen *scr) if (i >= wks_info.workspace_count) wWorkspaceNew(scr); - if (scr->workspace_menu) { - wfree(scr->workspace_menu->entries[i + MC_WORKSPACE1]->text); - scr->workspace_menu->entries[i + MC_WORKSPACE1]->text = wstrdup(WMGetFromPLString(pstr)); - scr->workspace_menu->flags.realized = 0; + if (wks_info.workspace_menu) { + wfree(wks_info.workspace_menu->entries[i + MC_WORKSPACE1]->text); + wks_info.workspace_menu->entries[i + MC_WORKSPACE1]->text = wstrdup(WMGetFromPLString(pstr)); + wks_info.workspace_menu->flags.realized = 0; } wfree(wks_info.workspaces[i]->name); diff --git a/src/workspace.h b/src/workspace.h index 5fcbe9b..0c434bd 100644 --- a/src/workspace.h +++ b/src/workspace.h @@ -34,6 +34,9 @@ typedef struct WWorkspace_info { int current_workspace; /* current workspace number */ int last_used_workspace; /* last used workspace number */ WMFont *workspace_name_font; + + /* Menus */ + struct WMenu *workspace_menu; /* workspace operation */ } WWorkspace_info; void wWorkspaceMake(WScreen *scr, int count); -- 1.8.4.rc3 -- To unsubscribe, send mail to [email protected].
