From 9c252988f8378876b9710561428666799317673c Mon Sep 17 00:00:00 2001 From: =?utf8?q?Rodolfo=20Garc=C3=ADa=20Pe=C3=B1as=20=28kix=29?= Date: Tue, 8 Oct 2013 00:56:34 +0200 Subject: [PATCH] Variable workspace_menu moved to workspace object in global namespace 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 global workspace struct because it is related to the workspace system, and not to the screen. --- src/WindowMaker.h | 3 +++ src/defaults.c | 4 ++-- src/menu.c | 4 ++-- src/rootmenu.c | 6 +++--- src/screen.h | 1 - src/workspace.c | 24 ++++++++++++------------ 6 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/WindowMaker.h b/src/WindowMaker.h index 64d603b1..5fd9d697 100644 --- a/src/WindowMaker.h +++ b/src/WindowMaker.h @@ -490,6 +490,9 @@ extern struct wmaker_global_variables { int last_used; /* last used workspace number */ WMFont *font_for_name; /* used during workspace switch */ + + /* Menus */ + struct WMenu *menu; /* workspace operation */ } workspace; /* definition for X Atoms */ diff --git a/src/defaults.c b/src/defaults.c index 6292ebb5..2db256fc 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -1202,8 +1202,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 (w_global.workspace.menu) + wWorkspaceMenuUpdate(scr, w_global.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 7e915c6c..29a2755f 100644 --- a/src/menu.c +++ b/src/menu.c @@ -2264,9 +2264,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 (w_global.workspace.menu && w_global.workspace.menu->flags.buttoned) { key = WMCreatePLString("WorkspaceMenu"); - saveMenuInfo(menus, scr->workspace_menu, key); + saveMenuInfo(menus, w_global.workspace.menu, key); WMReleasePropList(key); save_menus = 1; } diff --git a/src/rootmenu.c b/src/rootmenu.c index 8308d040..ad7ca111 100644 --- a/src/rootmenu.c +++ b/src/rootmenu.c @@ -757,8 +757,8 @@ static void constructPLMenuFromPipe(WMenu * menu, WMenuEntry * entry) } static void cleanupWorkspaceMenu(WMenu *menu) { - if (menu->frame->screen_ptr->workspace_menu == menu) - menu->frame->screen_ptr->workspace_menu = NULL; + if (w_global.workspace.menu == menu) + w_global.workspace.menu = NULL; } static WMenuEntry *addWorkspaceMenu(WScreen *scr, WMenu *menu, const char *title) @@ -776,7 +776,7 @@ static WMenuEntry *addWorkspaceMenu(WScreen *scr, WMenu *menu, const char *title wsmenu = wWorkspaceMenuMake(scr, True); wsmenu->on_destroy = cleanupWorkspaceMenu; - scr->workspace_menu = wsmenu; + w_global.workspace.menu = wsmenu; entry = wMenuAddCallback(menu, title, NULL, NULL); wMenuEntrySetCascade(menu, entry, wsmenu); diff --git a/src/screen.h b/src/screen.h index 0496a912..892a53c8 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 f3520f10..0ff60f02 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -114,7 +114,7 @@ int wWorkspaceNew(WScreen *scr) w_global.workspace.array = list; - wWorkspaceMenuUpdate(scr, scr->workspace_menu); + wWorkspaceMenuUpdate(scr, w_global.workspace.menu); wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); wNETWMUpdateDesktop(scr); WMPostNotificationName(WMNWorkspaceCreated, scr, (void *)(uintptr_t) (w_global.workspace.count - 1)); @@ -165,7 +165,7 @@ Bool wWorkspaceDelete(WScreen * scr, int workspace) w_global.workspace.count--; /* update menu */ - wWorkspaceMenuUpdate(scr, scr->workspace_menu); + wWorkspaceMenuUpdate(scr, w_global.workspace.menu); /* clip workspace menu */ wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); @@ -482,7 +482,7 @@ void wWorkspaceForceChange(WScreen * scr, int workspace) w_global.workspace.last_used = w_global.workspace.current; w_global.workspace.current = workspace; - wWorkspaceMenuUpdate(scr, scr->workspace_menu); + wWorkspaceMenuUpdate(scr, w_global.workspace.menu); wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); @@ -691,11 +691,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 (w_global.workspace.menu) { + if (strcmp(w_global.workspace.menu->entries[workspace + MC_WORKSPACE1]->text, buf) != 0) { + wfree(w_global.workspace.menu->entries[workspace + MC_WORKSPACE1]->text); + w_global.workspace.menu->entries[workspace + MC_WORKSPACE1]->text = wstrdup(buf); + wMenuRealize(w_global.workspace.menu); } } @@ -856,10 +856,10 @@ void wWorkspaceRestoreState(WScreen *scr) if (i >= w_global.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 (w_global.workspace.menu) { + wfree(w_global.workspace.menu->entries[i + MC_WORKSPACE1]->text); + w_global.workspace.menu->entries[i + MC_WORKSPACE1]->text = wstrdup(WMGetFromPLString(pstr)); + w_global.workspace.menu->flags.realized = 0; } wfree(w_global.workspace.array[i]->name); -- 2.11.4.GIT