diff --git a/src/WindowMaker.h b/src/WindowMaker.h index 4e732744..64d603b1 100644 --- a/src/WindowMaker.h +++ b/src/WindowMaker.h @@ -483,6 +483,8 @@ extern struct wmaker_global_variables { /* Workspace related */ struct { + struct WWorkspace **array; /* data for the workspaces */ + int count; /* number of workspaces */ int current; /* current workspace number */ int last_used; /* last used workspace number */ diff --git a/src/appicon.c b/src/appicon.c index 7f056369..17ac8e35 100644 --- a/src/appicon.c +++ b/src/appicon.c @@ -183,7 +183,7 @@ void unpaint_app_icon(WApplication *wapp) return; scr = wapp->main_window_desc->screen_ptr; - clip = scr->workspaces[w_global.workspace.current]->clip; + clip = w_global.workspace.array[w_global.workspace.current]->clip; if (!clip || !aicon->attracted || !clip->collapsed) XUnmapWindow(dpy, aicon->icon->core->window); @@ -217,7 +217,7 @@ void paint_app_icon(WApplication *wapp) attracting_dock = scr->attracting_drawer != NULL ? scr->attracting_drawer : - scr->workspaces[w_global.workspace.current]->clip; + w_global.workspace.array[w_global.workspace.current]->clip; if (attracting_dock && attracting_dock->attract_icons && wDockFindFreeSlot(attracting_dock, &x, &y)) { wapp->app_icon->attracted = 1; @@ -809,8 +809,8 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event) allDocks[ i++ ] = scr->dock; if (!wPreferences.flags.noclip && - originalDock != scr->workspaces[w_global.workspace.current]->clip) - allDocks[ i++ ] = scr->workspaces[w_global.workspace.current]->clip; + originalDock != w_global.workspace.array[w_global.workspace.current]->clip) + allDocks[i++] = w_global.workspace.array[w_global.workspace.current]->clip; for ( ; i < scr->drawer_count + 2; i++) /* In case the clip, the dock, or both, are disabled */ allDocks[ i ] = NULL; @@ -865,7 +865,7 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event) if (i == w_global.workspace.current) continue; - wDockShowIcons(scr->workspaces[i]->clip); + wDockShowIcons(w_global.workspace.array[i]->clip); /* Note: if dock is collapsed (for instance, because it auto-collapses), its icons still won't show up */ } @@ -1071,7 +1071,7 @@ Bool wHandleAppIconMove(WAppIcon *aicon, XEvent *event) if (i == w_global.workspace.current) continue; - wDockHideIcons(scr->workspaces[i]->clip); + wDockHideIcons(w_global.workspace.array[i]->clip); } } if (wPreferences.auto_arrange_icons && !(originalDock != NULL && docked)) @@ -1151,7 +1151,7 @@ static void create_appicon_from_dock(WWindow *wwin, WApplication *wapp, Window m if (!wapp->app_icon) { int i; for (i = 0; i < w_global.workspace.count; i++) { - WDock *dock = scr->workspaces[i]->clip; + WDock *dock = w_global.workspace.array[i]->clip; if (dock) wapp->app_icon = findDockIconFor(dock, main_window); diff --git a/src/balloon.c b/src/balloon.c index a03bb667..cd95cd26 100644 --- a/src/balloon.c +++ b/src/balloon.c @@ -440,8 +440,8 @@ static void appiconBalloon(WObjDescriptor *object) /* Show balloon if it is the Clip and the workspace name is > 5 chars */ if (object->parent == scr->clip_icon) { - if (strlen(scr->workspaces[w_global.workspace.current]->name) > 5) { - scr->balloon->text = wstrdup(scr->workspaces[w_global.workspace.current]->name); + if (strlen(w_global.workspace.array[w_global.workspace.current]->name) > 5) { + scr->balloon->text = wstrdup(w_global.workspace.array[w_global.workspace.current]->name); } else { wBalloonHide(scr); return; diff --git a/src/defaults.c b/src/defaults.c index 29b0fa8b..6292ebb5 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -2451,7 +2451,7 @@ static int setWrapAppiconsInDock(WScreen *scr, WDefaultEntry *entry, void *tdata static int setStickyIcons(WScreen * scr, WDefaultEntry * entry, void *bar, void *foo) { - if (scr->workspaces) { + if (w_global.workspace.array) { wWorkspaceForceChange(scr, w_global.workspace.current); wArrangeIcons(scr, False); } diff --git a/src/dock.c b/src/dock.c index 1302548e..2ac86850 100644 --- a/src/dock.c +++ b/src/dock.c @@ -173,7 +173,7 @@ static void renameCallback(WMenu *menu, WMenuEntry *entry) wspace = w_global.workspace.current; - name = wstrdup(dock->screen_ptr->workspaces[wspace]->name); + name = wstrdup(w_global.workspace.array[wspace]->name); snprintf(buffer, sizeof(buffer), _("Type the name for workspace %i:"), wspace + 1); if (wInputDialog(dock->screen_ptr, _("Rename Workspace"), buffer, &name)) @@ -595,7 +595,7 @@ static void toggleAutoAttractCallback(WMenu *menu, WMenuEntry *entry) /* check if at least one clip already auto attracts icons */ int i, ask_for_confirmation = False; for (i = 0; i < w_global.workspace.count; i++) { - if (scr->workspaces[ i ]->clip->attract_icons) { + if (w_global.workspace.array[i]->clip->attract_icons) { ask_for_confirmation = True; break; } @@ -621,7 +621,7 @@ static void toggleAutoAttractCallback(WMenu *menu, WMenuEntry *entry) * previously attracting drawer */ int i; for (i = 0; i < w_global.workspace.count; i++) - scr->workspaces[ i ]->clip->attract_icons = False; + w_global.workspace.array[i]->clip->attract_icons = False; /* dock menu will be updated later, when opened */ if (scr->attracting_drawer != NULL) @@ -868,7 +868,7 @@ static void switchWSCommand(WMenu *menu, WMenuEntry *entry) if (entry->order == w_global.workspace.current) return; src = icon->dock; - dest = scr->workspaces[entry->order]->clip; + dest = w_global.workspace.array[entry->order]->clip; selectedIcons = getSelected(src); @@ -935,7 +935,6 @@ static void launchDockedApplication(WAppIcon *btn, Bool withSelection) static void updateWorkspaceMenu(WMenu *menu, WAppIcon *icon) { - WScreen *scr = menu->frame->screen_ptr; char title[MAX_WORKSPACENAME_WIDTH + 1]; int i; @@ -944,15 +943,15 @@ static void updateWorkspaceMenu(WMenu *menu, WAppIcon *icon) 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) { + if (strcmp(menu->entries[i]->text, w_global.workspace.array[i]->name) != 0) { wfree(menu->entries[i]->text); - strcpy(title, scr->workspaces[i]->name); + strcpy(title, w_global.workspace.array[i]->name); menu->entries[i]->text = wstrdup(title); menu->flags.realized = 0; } menu->entries[i]->clientdata = (void *)icon; } else { - strcpy(title, scr->workspaces[i]->name); + strcpy(title, w_global.workspace.array[i]->name); wMenuAddCallback(menu, title, switchWSCommand, (void *)icon); @@ -1368,7 +1367,7 @@ void wDockDestroy(WDock *dock) void wClipIconPaint(WAppIcon *aicon) { WScreen *scr = aicon->icon->core->screen_ptr; - WWorkspace *workspace = scr->workspaces[w_global.workspace.current]; + WWorkspace *workspace = w_global.workspace.array[w_global.workspace.current]; WMColor *color; Window win = aicon->icon->core->window; int length, nlength; @@ -1594,7 +1593,7 @@ void wClipSaveState(WScreen *scr) WMPropList *wClipSaveWorkspaceState(WScreen *scr, int workspace) { - return dockSaveState(scr->workspaces[workspace]->clip); + return dockSaveState(w_global.workspace.array[workspace]->clip); } static Bool getBooleanDockValue(WMPropList *value, WMPropList *key) @@ -2030,7 +2029,7 @@ static WDock *findDock(WScreen *scr, XEvent *event, int *icon_pos) } } } - if (*icon_pos < 0 && (dock = scr->workspaces[w_global.workspace.current]->clip) != NULL) { + if (*icon_pos < 0 && (dock = w_global.workspace.array[w_global.workspace.current]->clip) != NULL) { for (i = 0; i < dock->max_icons; i++) { if (dock->icon_array[i] && dock->icon_array[i]->icon->core->window == event->xclient.window) { @@ -2582,7 +2581,7 @@ Bool wDockSnapIcon(WDock *dock, WAppIcon *icon, int req_x, int req_y, int *ret_x aicon = NULL; for (k = start; k < stop; k++) { - WDock *tmp = scr->workspaces[k]->clip; + WDock *tmp = w_global.workspace.array[k]->clip; if (!tmp) continue; for (i = 0; i < tmp->max_icons; i++) { @@ -2596,7 +2595,7 @@ Bool wDockSnapIcon(WDock *dock, WAppIcon *icon, int req_x, int req_y, int *ret_x break; } for (k = start; k < stop; k++) { - WDock *tmp = scr->workspaces[k]->clip; + WDock *tmp = w_global.workspace.array[k]->clip; if (!tmp) continue; for (i = 0; i < tmp->max_icons; i++) { @@ -2707,7 +2706,7 @@ Bool wDockFindFreeSlot(WDock *dock, int *x_pos, int *y_pos) return True; } - if (dock->type == WM_CLIP && dock != scr->workspaces[w_global.workspace.current]->clip) + if (dock->type == WM_CLIP && dock != w_global.workspace.array[w_global.workspace.current]->clip) extra_count = scr->global_icon_count; /* if the dock is full */ @@ -3273,16 +3272,16 @@ void wDockTrackWindowLaunch(WDock *dock, Window window) void wClipUpdateForWorkspaceChange(WScreen *scr, int workspace) { if (!wPreferences.flags.noclip) { - scr->clip_icon->dock = scr->workspaces[workspace]->clip; + scr->clip_icon->dock = w_global.workspace.array[workspace]->clip; if (w_global.workspace.current != workspace) { - WDock *old_clip = scr->workspaces[w_global.workspace.current]->clip; + WDock *old_clip = w_global.workspace.array[w_global.workspace.current]->clip; WAppIconChain *chain = scr->global_icons; while (chain) { wDockMoveIconBetweenDocks(chain->aicon->dock, - scr->workspaces[workspace]->clip, + w_global.workspace.array[workspace]->clip, chain->aicon, chain->aicon->xindex, chain->aicon->yindex); - if (scr->workspaces[workspace]->clip->collapsed) + if (w_global.workspace.array[workspace]->clip->collapsed) XUnmapWindow(dpy, chain->aicon->icon->core->window); chain = chain->next; } @@ -3302,7 +3301,7 @@ void wClipUpdateForWorkspaceChange(WScreen *scr, int workspace) } old_clip->collapsed = 1; } - wDockShowIcons(scr->workspaces[workspace]->clip); + wDockShowIcons(w_global.workspace.array[workspace]->clip); } } } @@ -4151,7 +4150,7 @@ static Bool iconCanBeOmnipresent(WAppIcon *aicon) int i, j; for (i = 0; i < w_global.workspace.count; i++) { - clip = scr->workspaces[i]->clip; + clip = w_global.workspace.array[i]->clip; if (clip == aicon->dock) continue; diff --git a/src/event.c b/src/event.c index f7303a6d..3e79db08 100644 --- a/src/event.c +++ b/src/event.c @@ -1741,7 +1741,7 @@ static void handleKeyPress(XEvent * event) break; case WKBD_CLIPRAISELOWER: if (!wPreferences.flags.noclip) - wDockRaiseLower(scr->workspaces[w_global.workspace.current]->clip); + wDockRaiseLower(w_global.workspace.array[w_global.workspace.current]->clip); break; case WKBD_DOCKRAISELOWER: if (!wPreferences.flags.nodock) diff --git a/src/menu.c b/src/menu.c index de1630b0..7e915c6c 100644 --- a/src/menu.c +++ b/src/menu.c @@ -1761,7 +1761,7 @@ static void menuMouseDown(WObjDescriptor * desc, XEvent * event) char *name; int number = entry_no - 3; /* Entries "New", "Destroy Last" and "Last Used" appear before workspaces */ - name = wstrdup(scr->workspaces[number]->name); + name = wstrdup(w_global.workspace.array[number]->name); snprintf(buffer, sizeof(buffer), _("Type the name for workspace %i:"), number + 1); wMenuUnmap(scr->root_menu); diff --git a/src/screen.h b/src/screen.h index f08a6cb6..0496a912 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 */ - struct WWorkspace **workspaces; /* workspace array */ - WReservedArea *reservedAreas; /* used to build totalUsableArea */ WArea *usableArea; /* area of the workspace where diff --git a/src/session.c b/src/session.c index c01e3d95..4eb0d6c8 100644 --- a/src/session.c +++ b/src/session.c @@ -198,8 +198,8 @@ static WMPropList *makeWindowState(WWindow * wwin, WApplication * wapp) name = WMCreatePLString(buffer); cmd = WMCreatePLString(command); - workspace = WMCreatePLString(scr->workspaces[wwin->frame->workspace]->name); + workspace = WMCreatePLString(w_global.workspace.array[wwin->frame->workspace]->name); shaded = wwin->flags.shaded ? sYes : sNo; miniaturized = wwin->flags.miniaturized ? sYes : sNo; hidden = wwin->flags.hidden ? sYes : sNo; @@ -238,10 +238,10 @@ static WMPropList *makeWindowState(WWindow * wwin, WApplication * wapp) /* Try the clips */ if (name == NULL) { for (i = 0; i < w_global.workspace.count; i++) - if (scr->workspaces[i]->clip == wapp->app_icon->dock) + if (w_global.workspace.array[i]->clip == wapp->app_icon->dock) break; if (i < w_global.workspace.count) - name = scr->workspaces[i]->name; + name = w_global.workspace.array[i]->name; } /* Try the drawers */ if (name == NULL) { @@ -316,7 +316,7 @@ void wSessionSaveState(WScreen * scr) WMPutInPLDictionary(scr->session_state, sApplications, list); WMReleasePropList(list); - wks = WMCreatePLString(scr->workspaces[w_global.workspace.current]->name); + wks = WMCreatePLString(w_global.workspace.array[w_global.workspace.current]->name); WMPutInPLDictionary(scr->session_state, sWorkspace, wks); WMReleasePropList(wks); @@ -383,7 +383,7 @@ static WSavedState *getWindowState(WScreen * scr, WMPropList * win_state) if (sscanf(tmp, "%i", &state->workspace) != 1) { state->workspace = -1; for (i = 0; i < w_global.workspace.count; i++) { - if (strcmp(scr->workspaces[i]->name, tmp) == 0) { + if (strcmp(w_global.workspace.array[i]->name, tmp) == 0) { state->workspace = i; break; } @@ -472,8 +472,8 @@ void wSessionRestoreState(WScreen *scr) /* Try the clips */ if (dock == NULL) { for (j = 0; j < w_global.workspace.count; j++) { - if (strcmp(scr->workspaces[j]->name, tmp) == 0) { - dock = scr->workspaces[j]->clip; + if (strcmp(w_global.workspace.array[j]->name, tmp) == 0) { + dock = w_global.workspace.array[j]->clip; break; } } @@ -494,7 +494,7 @@ void wSessionRestoreState(WScreen *scr) if (n == 0) { dock = scr->dock; } else if (n > 0 && n <= w_global.workspace.count) { - dock = scr->workspaces[n - 1]->clip; + dock = w_global.workspace.array[n - 1]->clip; } } } diff --git a/src/startup.c b/src/startup.c index 151e15b8..8a229aa1 100644 --- a/src/startup.c +++ b/src/startup.c @@ -720,9 +720,9 @@ void StartUp(Bool defaultScreenOnly) if (!wPreferences.flags.noclip) { int 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); + if (w_global.workspace.array[i]->clip) { + wScreen[j]->last_dock = w_global.workspace.array[i]->clip; + wDockDoAutoLaunch(w_global.workspace.array[i]->clip, i); } } } @@ -876,6 +876,6 @@ static void manageAllWindows(WScreen * scr, int crashRecovery) w_global.workspace.last_used = 0; wWorkspaceForceChange(scr, 0); if (!wPreferences.flags.noclip) - wDockShowIcons(scr->workspaces[w_global.workspace.current]->clip); + wDockShowIcons(w_global.workspace.array[w_global.workspace.current]->clip); scr->flags.startup2 = 0; } diff --git a/src/switchmenu.c b/src/switchmenu.c index 191063d3..9b9fc98b 100644 --- a/src/switchmenu.c +++ b/src/switchmenu.c @@ -238,7 +238,7 @@ void UpdateSwitchMenu(WScreen * scr, WWindow * wwin, int action) snprintf(entry->rtext, MAX_WORKSPACENAME_WIDTH, "[*]"); else snprintf(entry->rtext, MAX_WORKSPACENAME_WIDTH, "[%s]", - scr->workspaces[wwin->frame->workspace]->name); + w_global.workspace.array[wwin->frame->workspace]->name); if (wwin->flags.hidden) { entry->flags.indicator_type = MI_HIDDEN; @@ -296,7 +296,7 @@ void UpdateSwitchMenu(WScreen * scr, WWindow * wwin, int action) } else { snprintf(entry->rtext, MAX_WORKSPACENAME_WIDTH, "[%s]", - scr->workspaces[wwin->frame->workspace]->name); + w_global.workspace.array[wwin->frame->workspace]->name); } rt = entry->rtext; @@ -374,7 +374,7 @@ static void UpdateSwitchMenuWorkspace(WScreen *scr, int workspace) snprintf(menu->entries[i]->rtext, MAX_WORKSPACENAME_WIDTH, "[*]"); else snprintf(menu->entries[i]->rtext, MAX_WORKSPACENAME_WIDTH, "[%s]", - scr->workspaces[wwin->frame->workspace]->name); + w_global.workspace.array[wwin->frame->workspace]->name); menu->flags.realized = 0; } } diff --git a/src/winmenu.c b/src/winmenu.c index ef3ac756..451beeac 100644 --- a/src/winmenu.c +++ b/src/winmenu.c @@ -216,7 +216,6 @@ static void makeShortcutCommand(WMenu * menu, WMenuEntry * entry) static void updateWorkspaceMenu(WMenu * menu) { - WScreen *scr = menu->frame->screen_ptr; char title[MAX_WORKSPACENAME_WIDTH + 1]; WMenuEntry *entry; int i; @@ -225,16 +224,16 @@ static void updateWorkspaceMenu(WMenu * menu) if (i < menu->entry_no) { entry = menu->entries[i]; - if (strcmp(entry->text, scr->workspaces[i]->name) != 0) { + if (strcmp(entry->text, w_global.workspace.array[i]->name) != 0) { wfree(entry->text); - strncpy(title, scr->workspaces[i]->name, MAX_WORKSPACENAME_WIDTH); + strncpy(title, w_global.workspace.array[i]->name, MAX_WORKSPACENAME_WIDTH); title[MAX_WORKSPACENAME_WIDTH] = 0; menu->entries[i]->text = wstrdup(title); menu->entries[i]->rtext = GetShortcutKey(wKeyBindings[WKBD_MOVE_WORKSPACE1 + i]); menu->flags.realized = 0; } } else { - strncpy(title, scr->workspaces[i]->name, MAX_WORKSPACENAME_WIDTH); + strncpy(title, w_global.workspace.array[i]->name, MAX_WORKSPACENAME_WIDTH); title[MAX_WORKSPACENAME_WIDTH] = 0; entry = wMenuAddCallback(menu, title, switchWSCommand, NULL); diff --git a/src/winspector.c b/src/winspector.c index 8b736759..3be44348 100644 --- a/src/winspector.c +++ b/src/winspector.c @@ -495,7 +495,7 @@ static void saveSettings(WMButton *button, InspectorPanel *panel) i = WMGetPopUpButtonSelectedItem(panel->wsP) - 1; if (i >= 0 && i < w_global.workspace.count) { - value = WMCreatePLString(panel->frame->screen_ptr->workspaces[i]->name); + value = WMCreatePLString(w_global.workspace.array[i]->name); different |= insertAttribute(dict, winDic, AStartWorkspace, value, flags); WMReleasePropList(value); } @@ -1478,7 +1478,6 @@ static void create_tab_window_advanced(WWindow *wwin, InspectorPanel *panel, int static void create_tab_icon_workspace(WWindow *wwin, InspectorPanel *panel, int frame_width) { - WScreen *scr = wwin->screen_ptr; int i = 0; /* miniwindow/workspace */ @@ -1530,7 +1529,7 @@ static void create_tab_icon_workspace(WWindow *wwin, InspectorPanel *panel, int WMAddPopUpButtonItem(panel->wsP, _("Nowhere in particular")); for (i = 0; i < w_global.workspace.count; i++) - WMAddPopUpButtonItem(panel->wsP, scr->workspaces[i]->name); + WMAddPopUpButtonItem(panel->wsP, w_global.workspace.array[i]->name); i = wDefaultGetStartWorkspace(wwin->screen_ptr, wwin->wm_instance, wwin->wm_class); if (i >= 0 && i <= w_global.workspace.count) diff --git a/src/wmspec.c b/src/wmspec.c index a35aca36..cea43252 100644 --- a/src/wmspec.c +++ b/src/wmspec.c @@ -760,8 +760,8 @@ static void updateWorkspaceNames(WScreen *scr) pos = buf; len = 0; for (i = 0; i < w_global.workspace.count; i++) { - curr_size = strlen(scr->workspaces[i]->name); - strcpy(pos, scr->workspaces[i]->name); + curr_size = strlen(w_global.workspace.array[i]->name); + strcpy(pos, w_global.workspace.array[i]->name); pos += (curr_size + 1); len += (curr_size + 1); } diff --git a/src/workspace.c b/src/workspace.c index 7619cf9a..f3520f10 100644 --- a/src/workspace.c +++ b/src/workspace.c @@ -106,13 +106,13 @@ int wWorkspaceNew(WScreen *scr) list = wmalloc(sizeof(WWorkspace *) * w_global.workspace.count); for (i = 0; i < w_global.workspace.count - 1; i++) - list[i] = scr->workspaces[i]; + list[i] = w_global.workspace.array[i]; list[i] = wspace; - if (scr->workspaces) - wfree(scr->workspaces); + if (w_global.workspace.array) + wfree(w_global.workspace.array); - scr->workspaces = list; + w_global.workspace.array = list; wWorkspaceMenuUpdate(scr, scr->workspace_menu); wWorkspaceMenuUpdate(scr, scr->clip_ws_menu); @@ -144,23 +144,23 @@ Bool wWorkspaceDelete(WScreen * scr, int workspace) } if (!wPreferences.flags.noclip) { - wDockDestroy(scr->workspaces[workspace]->clip); - scr->workspaces[workspace]->clip = NULL; + wDockDestroy(w_global.workspace.array[workspace]->clip); + w_global.workspace.array[workspace]->clip = NULL; } list = wmalloc(sizeof(WWorkspace *) * (w_global.workspace.count - 1)); j = 0; for (i = 0; i < w_global.workspace.count; i++) { if (i != workspace) { - list[j++] = scr->workspaces[i]; + list[j++] = w_global.workspace.array[i]; } else { - if (scr->workspaces[i]->name) - wfree(scr->workspaces[i]->name); - wfree(scr->workspaces[i]); + if (w_global.workspace.array[i]->name) + wfree(w_global.workspace.array[i]->name); + wfree(w_global.workspace.array[i]); } } - wfree(scr->workspaces); - scr->workspaces = list; + wfree(w_global.workspace.array); + w_global.workspace.array = list; w_global.workspace.count--; @@ -250,7 +250,7 @@ static void showWorkspaceName(WScreen * scr, int workspace) Pixmap text, mask; int w, h; int px, py; - char *name = scr->workspaces[workspace]->name; + char *name = w_global.workspace.array[workspace]->name; int len = strlen(name); int x, y; #ifdef XINERAMA @@ -617,8 +617,8 @@ void wWorkspaceForceChange(WScreen * scr, int workspace) if (scr->dock) wAppIconPaint(scr->dock->icon_array[0]); - if (!wPreferences.flags.noclip && (scr->workspaces[workspace]->clip->auto_collapse || - scr->workspaces[workspace]->clip->auto_raise_lower)) { + if (!wPreferences.flags.noclip && (w_global.workspace.array[workspace]->clip->auto_collapse || + w_global.workspace.array[workspace]->clip->auto_raise_lower)) { /* to handle enter notify. This will also */ XUnmapWindow(dpy, scr->clip_icon->icon->core->window); XMapWindow(dpy, scr->clip_icon->icon->core->window); @@ -681,8 +681,8 @@ void wWorkspaceRename(WScreen *scr, int workspace, const char *name) wfree(tmp); /* update workspace */ - wfree(scr->workspaces[workspace]->name); - scr->workspaces[workspace]->name = wstrdup(buf); + wfree(w_global.workspace.array[workspace]->name); + w_global.workspace.array[workspace]->name = wstrdup(buf); if (scr->clip_ws_menu) { if (strcmp(scr->clip_ws_menu->entries[workspace + MC_WORKSPACE1]->text, buf) != 0) { @@ -753,7 +753,7 @@ void wWorkspaceMenuUpdate(WScreen * scr, WMenu * menu) 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); + wstrlcpy(title, w_global.workspace.array[ws]->name, MAX_WORKSPACENAME_WIDTH); entry = wMenuAddCallback(menu, title, switchWSCommand, (void *)ws); entry->flags.indicator = 1; @@ -810,7 +810,7 @@ void wWorkspaceSaveState(WScreen * scr, WMPropList * old_state) old_wks_state = WMGetFromPLDictionary(old_state, dWorkspaces); parr = WMCreatePLArray(NULL); for (i = 0; i < w_global.workspace.count; i++) { - pstr = WMCreatePLString(scr->workspaces[i]->name); + pstr = WMCreatePLString(w_global.workspace.array[i]->name); wks_state = WMCreatePLDictionary(dName, pstr, NULL); WMReleasePropList(pstr); if (!wPreferences.flags.noclip) { @@ -862,26 +862,26 @@ void wWorkspaceRestoreState(WScreen *scr) scr->workspace_menu->flags.realized = 0; } - wfree(scr->workspaces[i]->name); - scr->workspaces[i]->name = wstrdup(WMGetFromPLString(pstr)); + wfree(w_global.workspace.array[i]->name); + w_global.workspace.array[i]->name = wstrdup(WMGetFromPLString(pstr)); if (!wPreferences.flags.noclip) { int added_omnipresent_icons = 0; clip_state = WMGetFromPLDictionary(wks_state, dClip); - if (scr->workspaces[i]->clip) - wDockDestroy(scr->workspaces[i]->clip); + if (w_global.workspace.array[i]->clip) + wDockDestroy(w_global.workspace.array[i]->clip); - scr->workspaces[i]->clip = wDockRestoreState(scr, clip_state, WM_CLIP); + w_global.workspace.array[i]->clip = wDockRestoreState(scr, clip_state, WM_CLIP); if (i > 0) - wDockHideIcons(scr->workspaces[i]->clip); + wDockHideIcons(w_global.workspace.array[i]->clip); /* We set the global icons here, because scr->workspaces[i]->clip * was not valid in wDockRestoreState(). * There we only set icon->omnipresent to know which icons we * need to set here. */ - for (j = 0; j < scr->workspaces[i]->clip->max_icons; j++) { - WAppIcon *aicon = scr->workspaces[i]->clip->icon_array[j]; + for (j = 0; j < w_global.workspace.array[i]->clip->max_icons; j++) { + WAppIcon *aicon = w_global.workspace.array[i]->clip->icon_array[j]; int k; if (!aicon || !aicon->omnipresent) @@ -893,21 +893,21 @@ void wWorkspaceRestoreState(WScreen *scr) continue; /* Move this appicon from workspace i to workspace 0 */ - scr->workspaces[i]->clip->icon_array[j] = NULL; - scr->workspaces[i]->clip->icon_count--; + w_global.workspace.array[i]->clip->icon_array[j] = NULL; + w_global.workspace.array[i]->clip->icon_count--; added_omnipresent_icons++; /* If there are too many omnipresent appicons, we are in trouble */ - assert(scr->workspaces[0]->clip->icon_count + added_omnipresent_icons - <= scr->workspaces[0]->clip->max_icons); + assert(w_global.workspace.array[0]->clip->icon_count + added_omnipresent_icons + <= w_global.workspace.array[0]->clip->max_icons); /* Find first free spot on workspace 0 */ - for (k = 0; k < scr->workspaces[0]->clip->max_icons; k++) - if (scr->workspaces[0]->clip->icon_array[k] == NULL) + for (k = 0; k < w_global.workspace.array[0]->clip->max_icons; k++) + if (w_global.workspace.array[0]->clip->icon_array[k] == NULL) break; - scr->workspaces[0]->clip->icon_array[k] = aicon; - aicon->dock = scr->workspaces[0]->clip; + w_global.workspace.array[0]->clip->icon_array[k] = aicon; + aicon->dock = w_global.workspace.array[0]->clip; } - scr->workspaces[0]->clip->icon_count += added_omnipresent_icons; + w_global.workspace.array[0]->clip->icon_count += added_omnipresent_icons; } WMPostNotificationName(WMNWorkspaceNameChanged, scr, (void *)(uintptr_t) i); @@ -922,7 +922,7 @@ int wGetWorkspaceNumber(WScreen *scr, const char *value) if (sscanf(value, "%i", &w) != 1) { w = -1; for (i = 0; i < w_global.workspace.count; i++) { - if (strcmp(scr->workspaces[i]->name, value) == 0) { + if (strcmp(w_global.workspace.array[i]->name, value) == 0) { w = i; break; }