]> Dogcows Code - chaz/openbox/blob - src/workspace.hh
6c59a3b87222468f613c8eea99c8aeb93f474aea
[chaz/openbox] / src / workspace.hh
1 // -*- mode: C++; indent-tabs-mode: nil; c-basic-offset: 2; -*-
2 #ifndef __Workspace_hh
3 #define __Workspace_hh
4
5 extern "C" {
6 #include <X11/Xlib.h>
7 }
8
9 #include <list>
10 #include <string>
11 #include <vector>
12
13 #include "xatom.hh"
14
15 class BScreen;
16 class Workspace;
17 class BlackboxWindow;
18
19 typedef std::list<BlackboxWindow*> BlackboxWindowList;
20 typedef std::vector<Window> StackVector;
21
22 class Workspace {
23 private:
24 BScreen *screen;
25 BlackboxWindow *lastfocus;
26 XAtom *xatom;
27
28 BlackboxWindowList stackingList, windowList;
29
30 std::string name;
31 unsigned int id;
32 unsigned int cascade_x, cascade_y;
33 #ifdef XINERAMA
34 unsigned int cascade_region;
35 #endif // XINERAMA
36
37 Workspace(const Workspace&);
38 Workspace& operator=(const Workspace&);
39
40 void raiseTransients(const BlackboxWindow * const win,
41 StackVector::iterator &stack);
42 void lowerTransients(const BlackboxWindow * const win,
43 StackVector::iterator &stack);
44
45 typedef std::vector<Rect> rectList;
46 rectList calcSpace(const Rect &win, const rectList &spaces) const;
47
48 void placeWindow(BlackboxWindow *win);
49 bool cascadePlacement(Rect& win, const int offset);
50 bool smartPlacement(Rect& win);
51 bool underMousePlacement(Rect& win);
52
53 public:
54 Workspace(BScreen *scrn, unsigned int i = 0);
55
56 inline BScreen *getScreen(void) { return screen; }
57
58 inline BlackboxWindow *getLastFocusedWindow(void) { return lastfocus; }
59
60 inline const std::string& getName(void) const { return name; }
61
62 inline unsigned int getID(void) const { return id; }
63
64 inline void setLastFocusedWindow(BlackboxWindow *w) { lastfocus = w; }
65
66 inline const BlackboxWindowList& getStackingList() const
67 { return stackingList; }
68
69 BlackboxWindow* getWindow(unsigned int index);
70 BlackboxWindow* getNextWindowInList(BlackboxWindow *w);
71 BlackboxWindow* getPrevWindowInList(BlackboxWindow *w);
72 BlackboxWindow* getTopWindowOnStack(void) const;
73 void focusFallback(const BlackboxWindow *old_window);
74
75 bool isCurrent(void) const;
76 bool isLastWindow(const BlackboxWindow* w) const;
77
78 void addWindow(BlackboxWindow *w, bool place = False, bool sticky = False);
79 void removeWindow(BlackboxWindow *w, bool sticky = False);
80 unsigned int getCount(void) const;
81 void appendStackOrder(BlackboxWindowList &stack_order) const;
82
83 void showAll(void);
84 void hideAll(void);
85 void removeAll(void);
86 void raiseWindow(BlackboxWindow *w);
87 void lowerWindow(BlackboxWindow *w);
88 void reconfigure(void);
89 void setCurrent(void);
90 void readName();
91 void setName(const std::string& new_name);
92 };
93
94
95 #endif // __Workspace_hh
96
This page took 0.035635 seconds and 4 git commands to generate.