21 |
|
|
22 |
#include "oroborus.h" |
#include "oroborus.h" |
23 |
|
|
24 |
void workspaceSwitch(int new_ws, Client * c2) |
void |
25 |
|
workspaceSwitch (int new_ws, Client * c2) |
26 |
{ |
{ |
27 |
Client *c, *f = NULL; |
Client *c, *f = NULL; |
28 |
int i; |
int i; |
29 |
|
|
30 |
#ifdef DEBUG |
#ifdef DEBUG |
31 |
printf("entering workspaceSwitch\n"); |
printf ("entering workspaceSwitch\n"); |
32 |
#endif |
#endif |
33 |
|
|
34 |
if(new_ws < 0 && wrap_workspaces) |
if (new_ws < 0 && wrap_workspaces) |
35 |
new_ws = workspace_count - 1; |
new_ws = workspace_count - 1; |
36 |
if(new_ws > workspace_count - 1 && wrap_workspaces) |
if (new_ws > workspace_count - 1 && wrap_workspaces) |
37 |
new_ws = 0; |
new_ws = 0; |
38 |
if(new_ws < 0 || new_ws > workspace_count - 1 || new_ws == workspace) |
if (new_ws < 0 || new_ws > workspace_count - 1 || new_ws == workspace) |
39 |
return; |
return; |
40 |
|
|
41 |
f = clientGetFocus(); |
f = clientGetFocus (); |
42 |
if(f) |
if (f) |
43 |
f->focus = True; |
f->focus = True; |
44 |
|
|
45 |
if(c2) |
if (c2) |
46 |
{ |
{ |
47 |
setGnomeHint(dpy, c2->window, win_workspace, new_ws); |
setGnomeHint (dpy, c2->window, win_workspace, new_ws); |
48 |
c2->win_workspace = new_ws; |
c2->win_workspace = new_ws; |
49 |
} |
} |
50 |
|
|
51 |
setGnomeHint(dpy, root, win_workspace, new_ws); |
setGnomeHint (dpy, root, win_workspace, new_ws); |
52 |
workspace = new_ws; |
workspace = new_ws; |
53 |
for(c = clients, i = 0; i < client_count; c = c->next, i++) |
for (c = clients, i = 0; i < client_count; c = c->next, i++) |
54 |
{ |
{ |
55 |
if(c->win_state & WIN_STATE_STICKY) |
if (c->win_state & WIN_STATE_STICKY) |
56 |
clientSetWorkspace(c, new_ws); |
clientSetWorkspace (c, new_ws); |
57 |
else |
else |
58 |
{ |
{ |
59 |
if(c->win_workspace == new_ws && |
if (c->win_workspace == new_ws && |
60 |
getWMState(dpy, c->window) != IconicState) |
getWMState (dpy, c->window) != IconicState) |
61 |
{ |
{ |
62 |
clientShow(c, False); |
clientShow (c, False); |
63 |
if(c->focus) |
if (c->focus) |
64 |
f = c; |
f = c; |
65 |
c->focus = False; |
c->focus = False; |
66 |
} |
} |
67 |
else |
else |
68 |
clientHide(c, False); |
clientHide (c, False); |
69 |
} |
} |
70 |
} |
} |
71 |
setGnomeHint(dpy, root, win_workspace, new_ws); |
setGnomeHint (dpy, root, win_workspace, new_ws); |
72 |
|
|
73 |
if(c2) |
if (c2) |
74 |
f = c2; |
f = c2; |
75 |
clientSetFocus(f, True); |
clientSetFocus (f, True); |
76 |
} |
} |
77 |
|
|
78 |
void workspaceSetCount(int count) |
void |
79 |
|
workspaceSetCount (int count) |
80 |
{ |
{ |
81 |
Client *c; |
Client *c; |
82 |
int i; |
int i; |
83 |
|
|
84 |
#ifdef DEBUG |
#ifdef DEBUG |
85 |
printf("entering workspaceSetCount\n"); |
printf ("entering workspaceSetCount\n"); |
86 |
#endif |
#endif |
87 |
|
|
88 |
if(count < 1) |
if (count < 1) |
89 |
count = 1; |
count = 1; |
90 |
if(count == workspace_count) |
if (count == workspace_count) |
91 |
return; |
return; |
92 |
|
|
93 |
setGnomeHint(dpy, root, win_workspace_count, count); |
setGnomeHint (dpy, root, win_workspace_count, count); |
94 |
workspace_count = count; |
workspace_count = count; |
95 |
|
|
96 |
for(c = clients, i = 0; i < client_count; c = c->next, i++) |
for (c = clients, i = 0; i < client_count; c = c->next, i++) |
97 |
if(c->win_workspace > count - 1) |
if (c->win_workspace > count - 1) |
98 |
clientSetWorkspace(c, count - 1); |
clientSetWorkspace (c, count - 1); |
99 |
|
|
100 |
if(workspace > count - 1) |
if (workspace > count - 1) |
101 |
workspaceSwitch(count - 1, NULL); |
workspaceSwitch (count - 1, NULL); |
102 |
} |
} |