/[oroborus]/oroborus/src/workspaces.c
ViewVC logotype

Diff of /oroborus/src/workspaces.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.1.1.1 by dreamind, Thu May 23 19:55:46 2002 UTC revision 1.2 by dreamind, Thu May 30 13:57:51 2002 UTC
# Line 21  Line 21 
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  }  }

Legend:
Removed from v.1.1.1.1  
changed lines
  Added in v.1.2

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26