From: Rodolfo García Peñas (kix) <[email protected]>

The variable workspace_count, that contains the number of workspaces
is moved to the global workspace properties.

Now the screen is not needed to know the workspace_count.
---
 src/WindowMaker.h |  2 ++
 src/appicon.c     |  6 ++---
 src/dock.c        | 14 ++++++------
 src/event.c       |  8 +++----
 src/moveres.c     | 12 +++++-----
 src/screen.h      |  2 --
 src/session.c     | 12 +++++-----
 src/startup.c     |  2 +-
 src/window.c      | 20 ++++++++--------
 src/winmenu.c     |  2 +-
 src/winspector.c  |  8 +++----
 src/wmspec.c      | 18 +++++++--------
 src/workspace.c   | 68 +++++++++++++++++++++++++++----------------------------
 13 files changed, 87 insertions(+), 87 deletions(-)

diff --git a/src/WindowMaker.h b/src/WindowMaker.h
index b38419e..a3cd080 100644
--- a/src/WindowMaker.h
+++ b/src/WindowMaker.h
@@ -483,6 +483,8 @@ extern struct wmaker_global_variables {
 
        /* Workspace related */
        struct {
+               int count;              /* number of workspaces */
+
                WMFont *font_for_name;  /* used during workspace switch */
        } workspace;
 
diff --git a/src/appicon.c b/src/appicon.c
index f2e62c6..df972c4 100644
--- a/src/appicon.c
+++ b/src/appicon.c
@@ -861,7 +861,7 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
 
                        if (omnipresent && !showed_all_clips) {
                                int i;
-                               for (i = 0; i < scr->workspace_count; i++) {
+                               for (i = 0; i < w_global.workspace.count; i++) {
                                        if (i == scr->current_workspace)
                                                continue;
 
@@ -1067,7 +1067,7 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event)
                        }
                        if (showed_all_clips) {
                                int i;
-                               for (i = 0; i < scr->workspace_count; i++) {
+                               for (i = 0; i < w_global.workspace.count; i++) {
                                        if (i == scr->current_workspace)
                                                continue;
 
@@ -1150,7 +1150,7 @@ static void create_appicon_from_dock(WWindow *wwin, 
WApplication *wapp, Window m
        /* check clips */
        if (!wapp->app_icon) {
                int i;
-               for (i = 0; i < scr->workspace_count; i++) {
+               for (i = 0; i < w_global.workspace.count; i++) {
                        WDock *dock = scr->workspaces[i]->clip;
 
                        if (dock)
diff --git a/src/dock.c b/src/dock.c
index 580c0c1..545282b 100644
--- a/src/dock.c
+++ b/src/dock.c
@@ -594,7 +594,7 @@ static void toggleAutoAttractCallback(WMenu *menu, 
WMenuEntry *entry)
        } else if (dock->type == WM_DRAWER) {
                /* check if at least one clip already auto attracts icons */
                int i, ask_for_confirmation = False;
-               for (i = 0; i < scr->workspace_count; i++) {
+               for (i = 0; i < w_global.workspace.count; i++) {
                        if (scr->workspaces[ i ]->clip->attract_icons) {
                                ask_for_confirmation = True;
                                break;
@@ -620,7 +620,7 @@ static void toggleAutoAttractCallback(WMenu *menu, 
WMenuEntry *entry)
                        /* The newly auto-attracting dock is a drawer: disable 
any clip and 
                         * previously attracting drawer */
                        int i;
-                       for (i = 0; i < scr->workspace_count; i++)
+                       for (i = 0; i < w_global.workspace.count; i++)
                                scr->workspaces[ i ]->clip->attract_icons = 
False;
                                /* dock menu will be updated later, when opened 
*/
 
@@ -942,7 +942,7 @@ static void updateWorkspaceMenu(WMenu *menu, WAppIcon *icon)
        if (!menu || !icon)
                return;
 
-       for (i = 0; i < scr->workspace_count; i++) {
+       for (i = 0; i < w_global.workspace.count; i++) {
                if (i < menu->entry_no) {
                        if (strcmp(menu->entries[i]->text, 
scr->workspaces[i]->name) != 0) {
                                wfree(menu->entries[i]->text);
@@ -2578,7 +2578,7 @@ Bool wDockSnapIcon(WDock *dock, WAppIcon *icon, int 
req_x, int req_y, int *ret_x
                int start, stop, k;
 
                start = icon->omnipresent ? 0 : scr->current_workspace;
-               stop = icon->omnipresent ? scr->workspace_count : start + 1;
+               stop = icon->omnipresent ? w_global.workspace.count : start + 1;
 
                aicon = NULL;
                for (k = start; k < stop; k++) {
@@ -3897,7 +3897,7 @@ static void handleClipChangeWorkspace(WScreen *scr, 
XEvent *event)
        new_ws = wPreferences.ws_advance || (event->xbutton.state & 
ControlMask);
 
        if (direction == CLIP_FORWARD) {
-               if (scr->current_workspace < scr->workspace_count - 1)
+               if (scr->current_workspace < w_global.workspace.count - 1)
                        wWorkspaceChange(scr, scr->current_workspace + 1);
                else if (new_ws && scr->current_workspace < MAX_WORKSPACES - 1)
                        wWorkspaceChange(scr, scr->current_workspace + 1);
@@ -3907,7 +3907,7 @@ static void handleClipChangeWorkspace(WScreen *scr, 
XEvent *event)
                if (scr->current_workspace > 0)
                        wWorkspaceChange(scr, scr->current_workspace - 1);
                else if (scr->current_workspace == 0 && wPreferences.ws_cycle)
-                       wWorkspaceChange(scr, scr->workspace_count - 1);
+                       wWorkspaceChange(scr, w_global.workspace.count - 1);
        }
 
        wClipIconPaint(scr->clip_icon);
@@ -4150,7 +4150,7 @@ static Bool iconCanBeOmnipresent(WAppIcon *aicon)
        WAppIcon *btn;
        int i, j;
 
-       for (i = 0; i < scr->workspace_count; i++) {
+       for (i = 0; i < w_global.workspace.count; i++) {
                clip = scr->workspaces[i]->clip;
 
                if (clip == aicon->dock)
diff --git a/src/event.c b/src/event.c
index b11df23..6cf90a9 100644
--- a/src/event.c
+++ b/src/event.c
@@ -1567,7 +1567,7 @@ static void handleKeyPress(XEvent * event)
        case WKBD_WORKSPACE1 ... WKBD_WORKSPACE10:
                widx = command - WKBD_WORKSPACE1;
                i = (scr->current_workspace / 10) * 10 + widx;
-               if (wPreferences.ws_advance || i < scr->workspace_count)
+               if (wPreferences.ws_advance || i < w_global.workspace.count)
                        wWorkspaceChange(scr, i);
                break;
 
@@ -1584,7 +1584,7 @@ static void handleKeyPress(XEvent * event)
        case WKBD_MOVE_WORKSPACE1 ... WKBD_MOVE_WORKSPACE10:
                widx = command - WKBD_MOVE_WORKSPACE1;
                i = (scr->current_workspace / 10) * 10 + widx;
-               if (wwin && (wPreferences.ws_advance || i < 
scr->workspace_count))
+               if (wwin && (wPreferences.ws_advance || i < 
w_global.workspace.count))
                        wWindowChangeWorkspace(wwin, i);
                break;
 
@@ -1611,7 +1611,7 @@ static void handleKeyPress(XEvent * event)
                                column = scr->current_workspace % 10;
 
                                if (command == WKBD_MOVE_NEXTWSLAYER) {
-                                       if ((row + 1) * 10 < 
scr->workspace_count)
+                                       if ((row + 1) * 10 < 
w_global.workspace.count)
                                                wWindowChangeWorkspace(wwin, 
column + (row + 1) * 10);
                                } else {
                                        if (row > 0)
@@ -1731,7 +1731,7 @@ static void handleKeyPress(XEvent * event)
                        column = scr->current_workspace % 10;
 
                        if (command == WKBD_NEXTWSLAYER) {
-                               if ((row + 1) * 10 < scr->workspace_count)
+                               if ((row + 1) * 10 < w_global.workspace.count)
                                        wWorkspaceChange(scr, column + (row + 
1) * 10);
                        } else {
                                if (row > 0)
diff --git a/src/moveres.c b/src/moveres.c
index ead8026..877bbaf 100644
--- a/src/moveres.c
+++ b/src/moveres.c
@@ -842,13 +842,13 @@ static Bool checkWorkspaceChange(WWindow * wwin, MoveData 
* data, Bool opaqueMov
                        changed = True;
                        data->rubCount = 0;
                } else if (scr->current_workspace == 0 && 
wPreferences.ws_cycle) {
-                       crossWorkspace(scr, wwin, opaqueMove, 
scr->workspace_count - 1, True);
+                       crossWorkspace(scr, wwin, opaqueMove, 
w_global.workspace.count - 1, True);
                        changed = True;
                        data->rubCount = 0;
                }
        } else if (data->mouseX >= scr->scr_width - 2) {
-               if (scr->current_workspace == scr->workspace_count - 1) {
-                       if (wPreferences.ws_cycle || scr->workspace_count == 
MAX_WORKSPACES) {
+               if (scr->current_workspace == w_global.workspace.count - 1) {
+                       if (wPreferences.ws_cycle || w_global.workspace.count 
== MAX_WORKSPACES) {
                                crossWorkspace(scr, wwin, opaqueMove, 0, False);
                                changed = True;
                                data->rubCount = 0;
@@ -876,7 +876,7 @@ static Bool checkWorkspaceChange(WWindow * wwin, MoveData * 
data, Bool opaqueMov
                                changed = True;
                                data->rubCount = 0;
                        }
-               } else if (scr->current_workspace < scr->workspace_count) {
+               } else if (scr->current_workspace < w_global.workspace.count) {
                        /* go to next workspace */
                        crossWorkspace(scr, wwin, opaqueMove, 
scr->current_workspace + 1, False);
                        changed = True;
@@ -1388,13 +1388,13 @@ int wKeyboardMoveResizeWindow(WWindow * wwin)
                                if (wPreferences.ws_cycle) {
                                        if (src_x + off_x + ww < 20) {
                                                if (!scr->current_workspace)
-                                                       wWorkspaceChange(scr, 
scr->workspace_count - 1);
+                                                       wWorkspaceChange(scr, 
w_global.workspace.count - 1);
                                                else
                                                        wWorkspaceChange(scr, 
scr->current_workspace - 1);
 
                                                off_x += scr_width;
                                        } else if (src_x + off_x + 20 > 
scr_width) {
-                                               if (scr->current_workspace == 
scr->workspace_count - 1)
+                                               if (scr->current_workspace == 
w_global.workspace.count - 1)
                                                        wWorkspaceChange(scr, 
0);
                                                else
                                                        wWorkspaceChange(scr, 
scr->current_workspace + 1);
diff --git a/src/screen.h b/src/screen.h
index 02694ec..4ac9a96 100644
--- a/src/screen.h
+++ b/src/screen.h
@@ -121,8 +121,6 @@ typedef struct _WScreen {
 
     int window_count;                 /* number of windows in window_list */
 
-    int workspace_count;              /* number of workspaces */
-
     struct WWorkspace **workspaces;    /* workspace array */
 
     int current_workspace;            /* current workspace number */
diff --git a/src/session.c b/src/session.c
index d6bf0a4..8f96bbd 100644
--- a/src/session.c
+++ b/src/session.c
@@ -237,10 +237,10 @@ static WMPropList *makeWindowState(WWindow * wwin, 
WApplication * wapp)
 
                        /* Try the clips */
                        if (name == NULL) {
-                               for (i = 0; i < scr->workspace_count; i++)
+                               for (i = 0; i < w_global.workspace.count; i++)
                                        if (scr->workspaces[i]->clip == 
wapp->app_icon->dock)
                                                break;
-                               if (i < scr->workspace_count)
+                               if (i < w_global.workspace.count)
                                        name = scr->workspaces[i]->name;
                        }
                        /* Try the drawers */
@@ -382,7 +382,7 @@ static WSavedState *getWindowState(WScreen * scr, 
WMPropList * win_state)
                tmp = WMGetFromPLString(value);
                if (sscanf(tmp, "%i", &state->workspace) != 1) {
                        state->workspace = -1;
-                       for (i = 0; i < scr->workspace_count; i++) {
+                       for (i = 0; i < w_global.workspace.count; i++) {
                                if (strcmp(scr->workspaces[i]->name, tmp) == 0) 
{
                                        state->workspace = i;
                                        break;
@@ -471,7 +471,7 @@ void wSessionRestoreState(WScreen *scr)
 
                                /* Try the clips */
                                if (dock == NULL) {
-                                       for (j = 0; j < scr->workspace_count; 
j++) {
+                                       for (j = 0; j < 
w_global.workspace.count; j++) {
                                                if 
(strcmp(scr->workspaces[j]->name, tmp) == 0) {
                                                        dock = 
scr->workspaces[j]->clip;
                                                        break;
@@ -493,7 +493,7 @@ void wSessionRestoreState(WScreen *scr)
                        } else {
                                if (n == 0) {
                                        dock = scr->dock;
-                               } else if (n > 0 && n <= scr->workspace_count) {
+                               } else if (n > 0 && n <= 
w_global.workspace.count) {
                                        dock = scr->workspaces[n - 1]->clip;
                                }
                        }
@@ -556,6 +556,6 @@ void wSessionRestoreLastWorkspace(WScreen * scr)
        /* Get the workspace number for the workspace name */
        w = wGetWorkspaceNumber(scr, value);
 
-       if (w != scr->current_workspace && w < scr->workspace_count)
+       if (w != scr->current_workspace && w < w_global.workspace.count)
                wWorkspaceChange(scr, w);
 }
diff --git a/src/startup.c b/src/startup.c
index 712d3f7..5015342 100644
--- a/src/startup.c
+++ b/src/startup.c
@@ -719,7 +719,7 @@ void StartUp(Bool defaultScreenOnly)
                        /* auto-launch apps in clip */
                        if (!wPreferences.flags.noclip) {
                                int i;
-                               for (i = 0; i < wScreen[j]->workspace_count; 
i++) {
+                               for (i = 0; i < w_global.workspace.count; i++) {
                                        if (wScreen[j]->workspaces[i]->clip) {
                                                wScreen[j]->last_dock = 
wScreen[j]->workspaces[i]->clip;
                                                
wDockDoAutoLaunch(wScreen[j]->workspaces[i]->clip, i);
diff --git a/src/window.c b/src/window.c
index 2063a5c..d3f6ec4 100644
--- a/src/window.c
+++ b/src/window.c
@@ -379,7 +379,7 @@ void wWindowSetupInitialAttributes(WWindow *wwin, int 
*level, int *workspace)
                }
 
                if (tmp_workspace >= 0)
-                       *workspace = tmp_workspace % scr->workspace_count;
+                       *workspace = tmp_workspace % w_global.workspace.count;
        }
 
        /*
@@ -841,9 +841,9 @@ WWindow *wManageWindow(WScreen *scr, Window window)
                if (!IS_OMNIPRESENT(wwin)) {
                        int w = wDefaultGetStartWorkspace(scr, 
wwin->wm_instance,
                                                          wwin->wm_class);
-                       if (w < 0 || w >= scr->workspace_count) {
+                       if (w < 0 || w >= w_global.workspace.count) {
                                workspace = win_state->state->workspace;
-                               if (workspace >= scr->workspace_count)
+                               if (workspace >= w_global.workspace.count)
                                        workspace = scr->current_workspace;
                        } else {
                                workspace = w;
@@ -912,14 +912,14 @@ WWindow *wManageWindow(WScreen *scr, Window window)
 
        /* set workspace on which the window starts */
        if (workspace >= 0) {
-               if (workspace > scr->workspace_count - 1)
-                       workspace = workspace % scr->workspace_count;
+               if (workspace > w_global.workspace.count - 1)
+                       workspace = workspace % w_global.workspace.count;
        } else {
                int w;
 
                w = wDefaultGetStartWorkspace(scr, wwin->wm_instance, 
wwin->wm_class);
 
-               if (w >= 0 && w < scr->workspace_count && 
!(IS_OMNIPRESENT(wwin))) {
+               if (w >= 0 && w < w_global.workspace.count && 
!(IS_OMNIPRESENT(wwin))) {
                        workspace = w;
                } else {
                        if (wPreferences.open_transients_with_parent && 
transientOwner)
@@ -1866,7 +1866,7 @@ void wWindowChangeWorkspace(WWindow *wwin, int workspace)
        WApplication *wapp;
        int unmap = 0;
 
-       if (workspace >= scr->workspace_count || workspace < 0 || workspace == 
wwin->frame->workspace)
+       if (workspace >= w_global.workspace.count || workspace < 0 || workspace 
== wwin->frame->workspace)
                return;
 
        if (workspace != scr->current_workspace) {
@@ -1919,17 +1919,17 @@ void wWindowChangeWorkspaceRelative(WWindow *wwin, int 
amount)
                if (w >= 0) {
                        wWindowChangeWorkspace(wwin, w);
                } else if (wPreferences.ws_cycle) {
-                       wWindowChangeWorkspace(wwin, scr->workspace_count + w);
+                       wWindowChangeWorkspace(wwin, w_global.workspace.count + 
w);
                }
        } else if (amount > 0) {
-               if (w < scr->workspace_count) {
+               if (w < w_global.workspace.count) {
                        wWindowChangeWorkspace(wwin, w);
                } else if (wPreferences.ws_advance) {
                        int workspace = WMIN(w, MAX_WORKSPACES - 1);
                        wWorkspaceMake(scr, workspace);
                        wWindowChangeWorkspace(wwin, workspace);
                } else if (wPreferences.ws_cycle) {
-                       wWindowChangeWorkspace(wwin, w % scr->workspace_count);
+                       wWindowChangeWorkspace(wwin, w % 
w_global.workspace.count);
                }
        }
 }
diff --git a/src/winmenu.c b/src/winmenu.c
index 9625e08..3dc3730 100644
--- a/src/winmenu.c
+++ b/src/winmenu.c
@@ -221,7 +221,7 @@ static void updateWorkspaceMenu(WMenu * menu)
        WMenuEntry *entry;
        int i;
 
-       for (i = 0; i < scr->workspace_count; i++) {
+       for (i = 0; i < w_global.workspace.count; i++) {
                if (i < menu->entry_no) {
 
                        entry = menu->entries[i];
diff --git a/src/winspector.c b/src/winspector.c
index 0ee08d6..8b73675 100644
--- a/src/winspector.c
+++ b/src/winspector.c
@@ -494,7 +494,7 @@ static void saveSettings(WMButton *button, InspectorPanel 
*panel)
        }
 
        i = WMGetPopUpButtonSelectedItem(panel->wsP) - 1;
-       if (i >= 0 && i < panel->frame->screen_ptr->workspace_count) {
+       if (i >= 0 && i < w_global.workspace.count) {
                value = 
WMCreatePLString(panel->frame->screen_ptr->workspaces[i]->name);
                different |= insertAttribute(dict, winDic, AStartWorkspace, 
value, flags);
                WMReleasePropList(value);
@@ -932,7 +932,7 @@ static void revertSettings(WMButton *button, InspectorPanel 
*panel)
 
        n = wDefaultGetStartWorkspace(wwin->screen_ptr, wm_instance, wm_class);
 
-       if (n >= 0 && n < wwin->screen_ptr->workspace_count)
+       if (n >= 0 && n < w_global.workspace.count)
                WMSetPopUpButtonSelectedItem(panel->wsP, n + 1);
        else
                WMSetPopUpButtonSelectedItem(panel->wsP, 0);
@@ -1529,11 +1529,11 @@ static void create_tab_icon_workspace(WWindow *wwin, 
InspectorPanel *panel, int
        WMResizeWidget(panel->wsP, PWIDTH - (2 * 15) - (2 * 20), 20);
        WMAddPopUpButtonItem(panel->wsP, _("Nowhere in particular"));
 
-       for (i = 0; i < wwin->screen_ptr->workspace_count; i++)
+       for (i = 0; i < w_global.workspace.count; i++)
                WMAddPopUpButtonItem(panel->wsP, scr->workspaces[i]->name);
 
        i = wDefaultGetStartWorkspace(wwin->screen_ptr, wwin->wm_instance, 
wwin->wm_class);
-       if (i >= 0 && i <= wwin->screen_ptr->workspace_count)
+       if (i >= 0 && i <= w_global.workspace.count)
                WMSetPopUpButtonSelectedItem(panel->wsP, i + 1);
        else
                WMSetPopUpButtonSelectedItem(panel->wsP, 0);
diff --git a/src/wmspec.c b/src/wmspec.c
index 553ffba..836d8f7 100644
--- a/src/wmspec.c
+++ b/src/wmspec.c
@@ -315,16 +315,16 @@ void wNETWMUpdateDesktop(WScreen *scr)
        long *views, sizes[2];
        int count, i;
 
-       if (scr->workspace_count == 0)
+       if (w_global.workspace.count == 0)
                return;
 
-       count = scr->workspace_count * 2;
+       count = w_global.workspace.count * 2;
        views = wmalloc(sizeof(long) * count);
        /*memset(views, 0, sizeof(long) * count); */
        sizes[0] = scr->scr_width;
        sizes[1] = scr->scr_height;
 
-       for (i = 0; i < scr->workspace_count; i++) {
+       for (i = 0; i < w_global.workspace.count; i++) {
                views[2 * i + 0] = 0;
                views[2 * i + 1] = 0;
        }
@@ -736,7 +736,7 @@ static void updateWorkspaceCount(WScreen *scr)
 {                              /* changeable */
        long count;
 
-       count = scr->workspace_count;
+       count = w_global.workspace.count;
 
        XChangeProperty(dpy, scr->root_win, net_number_of_desktops, XA_CARDINAL,
                        32, PropModeReplace, (unsigned char *)&count, 1);
@@ -759,7 +759,7 @@ static void updateWorkspaceNames(WScreen *scr)
 
        pos = buf;
        len = 0;
-       for (i = 0; i < scr->workspace_count; i++) {
+       for (i = 0; i < w_global.workspace.count; i++) {
                curr_size = strlen(scr->workspaces[i]->name);
                strcpy(pos, scr->workspaces[i]->name);
                pos += (curr_size + 1);
@@ -1352,13 +1352,13 @@ Bool wNETWMProcessClientMessage(XClientMessageEvent 
*event)
                        long value;
 
                        value = event->data.l[0];
-                       if (value > scr->workspace_count) {
-                               wWorkspaceMake(scr, value - 
scr->workspace_count);
-                       } else if (value < scr->workspace_count) {
+                       if (value > w_global.workspace.count) {
+                               wWorkspaceMake(scr, value - 
w_global.workspace.count);
+                       } else if (value < w_global.workspace.count) {
                                int i;
                                Bool rebuild = False;
 
-                               for (i = scr->workspace_count - 1; i >= value; 
i--) {
+                               for (i = w_global.workspace.count - 1; i >= 
value; i--) {
                                        if (!wWorkspaceDelete(scr, i)) {
                                                rebuild = True;
                                                break;
diff --git a/src/workspace.c b/src/workspace.c
index aa5c80a..de8388f 100644
--- a/src/workspace.c
+++ b/src/workspace.c
@@ -88,8 +88,8 @@ int wWorkspaceNew(WScreen *scr)
        WWorkspace *wspace, **list;
        int i;
 
-       if (scr->workspace_count < MAX_WORKSPACES) {
-               scr->workspace_count++;
+       if (w_global.workspace.count < MAX_WORKSPACES) {
+               w_global.workspace.count++;
 
                wspace = wmalloc(sizeof(WWorkspace));
                wspace->name = NULL;
@@ -97,15 +97,15 @@ int wWorkspaceNew(WScreen *scr)
 
                if (!wspace->name) {
                        wspace->name = wmalloc(strlen(_("Workspace %i")) + 8);
-                       sprintf(wspace->name, _("Workspace %i"), 
scr->workspace_count);
+                       sprintf(wspace->name, _("Workspace %i"), 
w_global.workspace.count);
                }
 
                if (!wPreferences.flags.noclip)
                        wspace->clip = wDockCreate(scr, WM_CLIP, NULL);
 
-               list = wmalloc(sizeof(WWorkspace *) * scr->workspace_count);
+               list = wmalloc(sizeof(WWorkspace *) * w_global.workspace.count);
 
-               for (i = 0; i < scr->workspace_count - 1; i++)
+               for (i = 0; i < w_global.workspace.count - 1; i++)
                        list[i] = scr->workspaces[i];
 
                list[i] = wspace;
@@ -117,10 +117,10 @@ int wWorkspaceNew(WScreen *scr)
                wWorkspaceMenuUpdate(scr, scr->workspace_menu);
                wWorkspaceMenuUpdate(scr, scr->clip_ws_menu);
                wNETWMUpdateDesktop(scr);
-               WMPostNotificationName(WMNWorkspaceCreated, scr, (void 
*)(uintptr_t) (scr->workspace_count - 1));
+               WMPostNotificationName(WMNWorkspaceCreated, scr, (void 
*)(uintptr_t) (w_global.workspace.count - 1));
                XFlush(dpy);
 
-               return scr->workspace_count - 1;
+               return w_global.workspace.count - 1;
        }
 
        return -1;
@@ -148,9 +148,9 @@ Bool wWorkspaceDelete(WScreen * scr, int workspace)
                scr->workspaces[workspace]->clip = NULL;
        }
 
-       list = wmalloc(sizeof(WWorkspace *) * (scr->workspace_count - 1));
+       list = wmalloc(sizeof(WWorkspace *) * (w_global.workspace.count - 1));
        j = 0;
-       for (i = 0; i < scr->workspace_count; i++) {
+       for (i = 0; i < w_global.workspace.count; i++) {
                if (i != workspace) {
                        list[j++] = scr->workspaces[i];
                } else {
@@ -162,7 +162,7 @@ Bool wWorkspaceDelete(WScreen * scr, int workspace)
        wfree(scr->workspaces);
        scr->workspaces = list;
 
-       scr->workspace_count--;
+       w_global.workspace.count--;
 
        /* update menu */
        wWorkspaceMenuUpdate(scr, scr->workspace_menu);
@@ -174,7 +174,7 @@ Bool wWorkspaceDelete(WScreen * scr, int workspace)
                WMenu *menu = scr->workspace_submenu;
 
                i = menu->entry_no;
-               while (i > scr->workspace_count)
+               while (i > w_global.workspace.count)
                        wMenuRemoveItem(menu, --i);
                wMenuRealize(menu);
        }
@@ -183,16 +183,16 @@ Bool wWorkspaceDelete(WScreen * scr, int workspace)
                WMenu *menu = scr->clip_submenu;
 
                i = menu->entry_no;
-               while (i > scr->workspace_count)
+               while (i > w_global.workspace.count)
                        wMenuRemoveItem(menu, --i);
                wMenuRealize(menu);
        }
        wNETWMUpdateDesktop(scr);
-       WMPostNotificationName(WMNWorkspaceDestroyed, scr, (void *)(uintptr_t) 
(scr->workspace_count - 1));
+       WMPostNotificationName(WMNWorkspaceDestroyed, scr, (void *)(uintptr_t) 
(w_global.workspace.count - 1));
 
-       if (scr->current_workspace >= scr->workspace_count)
-               wWorkspaceChange(scr, scr->workspace_count - 1);
-       if (scr->last_workspace >= scr->workspace_count)
+       if (scr->current_workspace >= w_global.workspace.count)
+               wWorkspaceChange(scr, w_global.workspace.count - 1);
+       if (scr->last_workspace >= w_global.workspace.count)
                scr->last_workspace = 0;
 
        return True;
@@ -259,7 +259,7 @@ static void showWorkspaceName(WScreen * scr, int workspace)
        int xx, yy;
 #endif
 
-       if (wPreferences.workspace_name_display_position == WD_NONE || 
scr->workspace_count < 2)
+       if (wPreferences.workspace_name_display_position == WD_NONE || 
w_global.workspace.count < 2)
                return;
 
        if (scr->workspace_name_timer) {
@@ -450,15 +450,15 @@ void wWorkspaceRelativeChange(WScreen * scr, int amount)
                if (w >= 0) {
                        wWorkspaceChange(scr, w);
                } else if (wPreferences.ws_cycle) {
-                       wWorkspaceChange(scr, scr->workspace_count + w);
+                       wWorkspaceChange(scr, w_global.workspace.count + w);
                }
        } else if (amount > 0) {
-               if (w < scr->workspace_count) {
+               if (w < w_global.workspace.count) {
                        wWorkspaceChange(scr, w);
                } else if (wPreferences.ws_advance) {
                        wWorkspaceChange(scr, WMIN(w, MAX_WORKSPACES - 1));
                } else if (wPreferences.ws_cycle) {
-                       wWorkspaceChange(scr, w % scr->workspace_count);
+                       wWorkspaceChange(scr, w % w_global.workspace.count);
                }
        }
 }
@@ -474,8 +474,8 @@ void wWorkspaceForceChange(WScreen * scr, int workspace)
 
        SendHelperMessage(scr, 'C', workspace + 1, NULL);
 
-       if (workspace > scr->workspace_count - 1)
-               wWorkspaceMake(scr, workspace - scr->workspace_count + 1);
+       if (workspace > w_global.workspace.count - 1)
+               wWorkspaceMake(scr, workspace - w_global.workspace.count + 1);
 
        wClipUpdateForWorkspaceChange(scr, workspace);
 
@@ -647,7 +647,7 @@ static void lastWSCommand(WMenu *menu, WMenuEntry *entry)
 
 static void deleteWSCommand(WMenu *menu, WMenuEntry *entry)
 {
-       wWorkspaceDelete(menu->frame->screen_ptr, 
menu->frame->screen_ptr->workspace_count - 1);
+       wWorkspaceDelete(menu->frame->screen_ptr, w_global.workspace.count - 1);
 }
 
 static void newWSCommand(WMenu *menu, WMenuEntry *foo)
@@ -666,7 +666,7 @@ void wWorkspaceRename(WScreen *scr, int workspace, const 
char *name)
        char buf[MAX_WORKSPACENAME_WIDTH + 1];
        char *tmp;
 
-       if (workspace >= scr->workspace_count)
+       if (workspace >= w_global.workspace.count)
                return;
 
        /* trim white spaces */
@@ -748,9 +748,9 @@ void wWorkspaceMenuUpdate(WScreen * scr, WMenu * menu)
        if (!menu)
                return;
 
-       if (menu->entry_no < scr->workspace_count + MC_WORKSPACE1) {
+       if (menu->entry_no < w_global.workspace.count + MC_WORKSPACE1) {
                /* new workspace(s) added */
-               i = scr->workspace_count - (menu->entry_no - MC_WORKSPACE1);
+               i = w_global.workspace.count - (menu->entry_no - MC_WORKSPACE1);
                ws = menu->entry_no - MC_WORKSPACE1;
                while (i > 0) {
                        wstrlcpy(title, scr->workspaces[ws]->name, 
MAX_WORKSPACENAME_WIDTH);
@@ -762,13 +762,13 @@ void wWorkspaceMenuUpdate(WScreen * scr, WMenu * menu)
                        i--;
                        ws++;
                }
-       } else if (menu->entry_no > scr->workspace_count + MC_WORKSPACE1) {
+       } else if (menu->entry_no > w_global.workspace.count + MC_WORKSPACE1) {
                /* removed workspace(s) */
-               for (i = menu->entry_no - 1; i >= scr->workspace_count + 
MC_WORKSPACE1; i--)
+               for (i = menu->entry_no - 1; i >= w_global.workspace.count + 
MC_WORKSPACE1; i--)
                        wMenuRemoveItem(menu, i);
        }
 
-       for (i = 0; i < scr->workspace_count; i++) {
+       for (i = 0; i < w_global.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)]);
@@ -781,13 +781,13 @@ void wWorkspaceMenuUpdate(WScreen * scr, WMenu * menu)
        wMenuRealize(menu);
 
        /* don't let user destroy current workspace */
-       if (scr->current_workspace == scr->workspace_count - 1)
+       if (scr->current_workspace == w_global.workspace.count - 1)
                wMenuSetEnabled(menu, MC_DESTROY_LAST, False);
        else
                wMenuSetEnabled(menu, MC_DESTROY_LAST, True);
 
        /* back to last workspace */
-       if (scr->workspace_count && scr->last_workspace != 
scr->current_workspace)
+       if (w_global.workspace.count && scr->last_workspace != 
scr->current_workspace)
                wMenuSetEnabled(menu, MC_LAST_USED, True);
        else
                wMenuSetEnabled(menu, MC_LAST_USED, False);
@@ -809,7 +809,7 @@ void wWorkspaceSaveState(WScreen * scr, WMPropList * 
old_state)
 
        old_wks_state = WMGetFromPLDictionary(old_state, dWorkspaces);
        parr = WMCreatePLArray(NULL);
-       for (i = 0; i < scr->workspace_count; i++) {
+       for (i = 0; i < w_global.workspace.count; i++) {
                pstr = WMCreatePLString(scr->workspaces[i]->name);
                wks_state = WMCreatePLDictionary(dName, pstr, NULL);
                WMReleasePropList(pstr);
@@ -853,7 +853,7 @@ void wWorkspaceRestoreState(WScreen *scr)
                else
                        pstr = wks_state;
 
-               if (i >= scr->workspace_count)
+               if (i >= w_global.workspace.count)
                        wWorkspaceNew(scr);
 
                if (scr->workspace_menu) {
@@ -921,7 +921,7 @@ int wGetWorkspaceNumber(WScreen *scr, const char *value)
 
        if (sscanf(value, "%i", &w) != 1) {
                w = -1;
-               for (i = 0; i < scr->workspace_count; i++) {
+               for (i = 0; i < w_global.workspace.count; i++) {
                        if (strcmp(scr->workspaces[i]->name, value) == 0) {
                                w = i;
                                break;
-- 
1.8.4.rc3


-- 
To unsubscribe, send mail to [email protected].

Reply via email to