mirror of
https://github.com/gryf/wmaker.git
synced 2025-12-19 20:38:08 +01:00
Variable last_workspace moved to workspace object in global namespace
The variable last_workspace, that contains the last used workspace is moved to the global workspace properties. Now the screen is not needed to know the workspace_count. The variable name is changed to workspace.last_used because a similar variable name is also in the WApplication struct.
This commit is contained in:
committed by
Carlos R. Mafra
parent
9e103a46e9
commit
e5ae684d02
@@ -484,6 +484,7 @@ extern struct wmaker_global_variables {
|
||||
/* Workspace related */
|
||||
struct {
|
||||
int count; /* number of workspaces */
|
||||
int last_used; /* last used workspace number */
|
||||
|
||||
WMFont *font_for_name; /* used during workspace switch */
|
||||
} workspace;
|
||||
|
||||
@@ -1578,7 +1578,7 @@ static void handleKeyPress(XEvent * event)
|
||||
wWorkspaceRelativeChange(scr, -1);
|
||||
break;
|
||||
case WKBD_LASTWORKSPACE:
|
||||
wWorkspaceChange(scr, scr->last_workspace);
|
||||
wWorkspaceChange(scr, w_global.workspace.last_used);
|
||||
break;
|
||||
|
||||
case WKBD_MOVE_WORKSPACE1 ... WKBD_MOVE_WORKSPACE10:
|
||||
@@ -1598,7 +1598,7 @@ static void handleKeyPress(XEvent * event)
|
||||
break;
|
||||
case WKBD_MOVE_LASTWORKSPACE:
|
||||
if (wwin)
|
||||
wWindowChangeWorkspace(wwin, scr->last_workspace);
|
||||
wWindowChangeWorkspace(wwin, w_global.workspace.last_used);
|
||||
break;
|
||||
|
||||
case WKBD_MOVE_NEXTWSLAYER:
|
||||
|
||||
@@ -124,8 +124,6 @@ typedef struct _WScreen {
|
||||
struct WWorkspace **workspaces; /* workspace array */
|
||||
|
||||
int current_workspace; /* current workspace number */
|
||||
int last_workspace; /* last used workspace number */
|
||||
|
||||
|
||||
WReservedArea *reservedAreas; /* used to build totalUsableArea */
|
||||
|
||||
|
||||
@@ -873,7 +873,7 @@ static void manageAllWindows(WScreen * scr, int crashRecovery)
|
||||
WMNextEvent(dpy, &ev);
|
||||
WMHandleEvent(&ev);
|
||||
}
|
||||
scr->last_workspace = 0;
|
||||
w_global.workspace.last_used = 0;
|
||||
wWorkspaceForceChange(scr, 0);
|
||||
if (!wPreferences.flags.noclip)
|
||||
wDockShowIcons(scr->workspaces[scr->current_workspace]->clip);
|
||||
|
||||
@@ -192,8 +192,8 @@ Bool wWorkspaceDelete(WScreen * scr, int workspace)
|
||||
|
||||
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;
|
||||
if (w_global.workspace.last_used >= w_global.workspace.count)
|
||||
w_global.workspace.last_used = 0;
|
||||
|
||||
return True;
|
||||
}
|
||||
@@ -479,7 +479,7 @@ void wWorkspaceForceChange(WScreen * scr, int workspace)
|
||||
|
||||
wClipUpdateForWorkspaceChange(scr, workspace);
|
||||
|
||||
scr->last_workspace = scr->current_workspace;
|
||||
w_global.workspace.last_used = scr->current_workspace;
|
||||
scr->current_workspace = workspace;
|
||||
|
||||
wWorkspaceMenuUpdate(scr, scr->workspace_menu);
|
||||
@@ -642,7 +642,7 @@ static void switchWSCommand(WMenu * menu, WMenuEntry * entry)
|
||||
|
||||
static void lastWSCommand(WMenu *menu, WMenuEntry *entry)
|
||||
{
|
||||
wWorkspaceChange(menu->frame->screen_ptr, menu->frame->screen_ptr->last_workspace);
|
||||
wWorkspaceChange(menu->frame->screen_ptr, w_global.workspace.last_used);
|
||||
}
|
||||
|
||||
static void deleteWSCommand(WMenu *menu, WMenuEntry *entry)
|
||||
@@ -787,7 +787,7 @@ void wWorkspaceMenuUpdate(WScreen * scr, WMenu * menu)
|
||||
wMenuSetEnabled(menu, MC_DESTROY_LAST, True);
|
||||
|
||||
/* back to last workspace */
|
||||
if (w_global.workspace.count && scr->last_workspace != scr->current_workspace)
|
||||
if (w_global.workspace.count && w_global.workspace.last_used != scr->current_workspace)
|
||||
wMenuSetEnabled(menu, MC_LAST_USED, True);
|
||||
else
|
||||
wMenuSetEnabled(menu, MC_LAST_USED, False);
|
||||
|
||||
Reference in New Issue
Block a user