From: Rodolfo García Peñas (kix) <[email protected]>
The variable workspaces, that contains the list of workspaces
is moved to the global workspace properties.
Now the screen is not needed to know the workspaces.
The function getWindowState() doesn't need the WScreen argument.
---
src/WindowMaker.h | 2 ++
src/appicon.c | 14 +++++------
src/balloon.c | 4 +--
src/defaults.c | 2 +-
src/dock.c | 39 ++++++++++++++---------------
src/event.c | 2 +-
src/menu.c | 2 +-
src/screen.h | 2 --
src/session.c | 16 ++++++------
src/startup.c | 8 +++---
src/switchmenu.c | 6 ++---
src/winmenu.c | 7 +++---
src/winspector.c | 5 ++--
src/wmspec.c | 4 +--
src/workspace.c | 74 +++++++++++++++++++++++++++----------------------------
15 files changed, 92 insertions(+), 95 deletions(-)
diff --git a/src/WindowMaker.h b/src/WindowMaker.h
index 4e73274..64d603b 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 7f05636..17ac8e3 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 a03bb66..cd95cd2 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 29b0fa8..6292ebb 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 1302548..2ac8685 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 f7303a6..3e79db0 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 de1630b..7e915c6 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 f08a6cb..0496a91 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 c01e3d9..4eb0d6c 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 151e15b..8a229aa 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 191063d..9b9fc98 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 ef3ac75..451beea 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 8b73675..3be4434 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 a35aca3..cea4325 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 7619cf9..f3520f1 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;
}
--
1.8.4.rc3
--
To unsubscribe, send mail to [email protected].