From: "Rodolfo García Peñas (kix)" <[email protected]>
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_nfo struct because is related
to the workspace system, and not to the screen.
---
src/defaults.c | 4 ++--
src/menu.c | 4 ++--
src/rootmenu.c | 7 ++++---
src/screen.h | 1 -
src/workspace.c | 24 ++++++++++++------------
src/workspace.h | 3 +++
6 files changed, 23 insertions(+), 20 deletions(-)
diff --git a/src/defaults.c b/src/defaults.c
index 142097a..a317151 100644
--- a/src/defaults.c
+++ b/src/defaults.c
@@ -1204,8 +1204,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_nfo.workspace_menu)
+ wWorkspaceMenuUpdate(scr,
wks_nfo.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 1891d03..ccb1c51 100644
--- a/src/menu.c
+++ b/src/menu.c
@@ -2270,9 +2270,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_nfo.workspace_menu && wks_nfo.workspace_menu->flags.buttoned) {
key = WMCreatePLString("WorkspaceMenu");
- saveMenuInfo(menus, scr->workspace_menu, key);
+ saveMenuInfo(menus, wks_nfo.workspace_menu, key);
WMReleasePropList(key);
save_menus = 1;
}
diff --git a/src/rootmenu.c b/src/rootmenu.c
index 64939f7..5f6c4b3 100644
--- a/src/rootmenu.c
+++ b/src/rootmenu.c
@@ -63,6 +63,7 @@
extern char *Locale;
extern WDDomain *WDRootMenu;
extern Cursor wCursor[WCUR_LAST];
+extern wks_info wks_nfo;
static WMenu *readMenuPipe(WScreen * scr, char **file_name);
static WMenu *readPLMenuPipe(WScreen * scr, char **file_name);
@@ -759,8 +760,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 (wks_nfo.workspace_menu == menu)
+ wks_nfo.workspace_menu = NULL;
}
static WMenuEntry *addWorkspaceMenu(WScreen *scr, WMenu *menu, const char
*title)
@@ -778,7 +779,7 @@ static WMenuEntry *addWorkspaceMenu(WScreen *scr, WMenu
*menu, const char *title
wsmenu = wWorkspaceMenuMake(scr, True);
wsmenu->on_destroy = cleanupWorkspaceMenu;
- scr->workspace_menu = wsmenu;
+ wks_nfo.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 41196bc..07e0981 100644
--- a/src/workspace.c
+++ b/src/workspace.c
@@ -116,7 +116,7 @@ int wWorkspaceNew(WScreen *scr)
wks_nfo.workspaces = list;
- wWorkspaceMenuUpdate(scr, scr->workspace_menu);
+ wWorkspaceMenuUpdate(scr, wks_nfo.workspace_menu);
wWorkspaceMenuUpdate(scr, scr->clip_ws_menu);
wNETWMUpdateDesktop(scr);
WMPostNotificationName(WMNWorkspaceCreated, scr, (void
*)(uintptr_t) (wks_nfo.workspace_count - 1));
@@ -167,7 +167,7 @@ Bool wWorkspaceDelete(WScreen * scr, int workspace)
wks_nfo.workspace_count--;
/* update menu */
- wWorkspaceMenuUpdate(scr, scr->workspace_menu);
+ wWorkspaceMenuUpdate(scr, wks_nfo.workspace_menu);
/* clip workspace menu */
wWorkspaceMenuUpdate(scr, scr->clip_ws_menu);
@@ -488,7 +488,7 @@ void wWorkspaceForceChange(WScreen * scr, int workspace)
wks_nfo.last_used_workspace = wks_nfo.current_workspace;
wks_nfo.current_workspace = workspace;
- wWorkspaceMenuUpdate(scr, scr->workspace_menu);
+ wWorkspaceMenuUpdate(scr, wks_nfo.workspace_menu);
wWorkspaceMenuUpdate(scr, scr->clip_ws_menu);
@@ -697,11 +697,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_nfo.workspace_menu) {
+ if (strcmp(wks_nfo.workspace_menu->entries[workspace +
MC_WORKSPACE1]->text, buf) != 0) {
+ wfree(wks_nfo.workspace_menu->entries[workspace +
MC_WORKSPACE1]->text);
+ wks_nfo.workspace_menu->entries[workspace +
MC_WORKSPACE1]->text = wstrdup(buf);
+ wMenuRealize(wks_nfo.workspace_menu);
}
}
@@ -863,10 +863,10 @@ void wWorkspaceRestoreState(WScreen *scr)
if (i >= wks_nfo.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_nfo.workspace_menu) {
+ wfree(wks_nfo.workspace_menu->entries[i +
MC_WORKSPACE1]->text);
+ wks_nfo.workspace_menu->entries[i +
MC_WORKSPACE1]->text = wstrdup(WMGetFromPLString(pstr));
+ wks_nfo.workspace_menu->flags.realized = 0;
}
wfree(wks_nfo.workspaces[i]->name);
diff --git a/src/workspace.h b/src/workspace.h
index 07d9e4f..966b9fe 100644
--- a/src/workspace.h
+++ b/src/workspace.h
@@ -33,6 +33,9 @@ typedef struct wks_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 */
} wks_info;
void wWorkspaceMake(WScreen *scr, int count);
--
1.7.10.4
--
To unsubscribe, send mail to [email protected].