diff options
Diffstat (limited to 'src/Window.hh')
-rw-r--r-- | src/Window.hh | 54 |
1 files changed, 35 insertions, 19 deletions
diff --git a/src/Window.hh b/src/Window.hh index 4396737..5536254 100644 --- a/src/Window.hh +++ b/src/Window.hh | |||
@@ -22,7 +22,7 @@ | |||
22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER | 22 | // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER |
23 | // DEALINGS IN THE SOFTWARE. | 23 | // DEALINGS IN THE SOFTWARE. |
24 | 24 | ||
25 | // $Id: Window.hh,v 1.24 2002/07/10 14:46:42 fluxgen Exp $ | 25 | // $Id: Window.hh,v 1.25 2002/08/04 15:55:13 fluxgen Exp $ |
26 | 26 | ||
27 | #ifndef WINDOW_HH | 27 | #ifndef WINDOW_HH |
28 | #define WINDOW_HH | 28 | #define WINDOW_HH |
@@ -45,10 +45,16 @@ | |||
45 | 45 | ||
46 | class Tab; | 46 | class Tab; |
47 | 47 | ||
48 | /** | ||
49 | Creates the window frame and handles any window event for it | ||
50 | TODO: this is to huge! | ||
51 | */ | ||
48 | class FluxboxWindow : public TimeoutHandler { | 52 | class FluxboxWindow : public TimeoutHandler { |
49 | public: | 53 | public: |
54 | /// obsolete | ||
50 | enum Error{NOERROR=0, XGETWINDOWATTRIB, CANTFINDSCREEN}; | 55 | enum Error{NOERROR=0, XGETWINDOWATTRIB, CANTFINDSCREEN}; |
51 | #ifdef GNOME | 56 | |
57 | #ifdef GNOME | ||
52 | enum GnomeLayer { | 58 | enum GnomeLayer { |
53 | WIN_LAYER_DESKTOP = 0, | 59 | WIN_LAYER_DESKTOP = 0, |
54 | WIN_LAYER_BELOW = 2, | 60 | WIN_LAYER_BELOW = 2, |
@@ -79,7 +85,7 @@ public: | |||
79 | WIN_HINTS_GROUP_TRANSIENT = (1<<3), // Reserved - definition is unclear | 85 | WIN_HINTS_GROUP_TRANSIENT = (1<<3), // Reserved - definition is unclear |
80 | WIN_HINTS_FOCUS_ON_CLICK = (1<<4) // app only accepts focus if clicked | 86 | WIN_HINTS_FOCUS_ON_CLICK = (1<<4) // app only accepts focus if clicked |
81 | }; | 87 | }; |
82 | #endif | 88 | #endif // GNOME |
83 | 89 | ||
84 | enum WinLayer { | 90 | enum WinLayer { |
85 | LAYER_BOTTOM = 0x01, | 91 | LAYER_BOTTOM = 0x01, |
@@ -116,9 +122,12 @@ public: | |||
116 | MwmDecorMaximize = (1l << 6) | 122 | MwmDecorMaximize = (1l << 6) |
117 | }; | 123 | }; |
118 | 124 | ||
119 | explicit FluxboxWindow(Window, BScreen *scr = 0); | 125 | explicit FluxboxWindow(Window win, BScreen *scr = 0); |
120 | virtual ~FluxboxWindow(); | 126 | virtual ~FluxboxWindow(); |
121 | 127 | /** | |
128 | @name accessors | ||
129 | */ | ||
130 | //@{ | ||
122 | inline bool isTransient() const { return ((transient) ? true : false); } | 131 | inline bool isTransient() const { return ((transient) ? true : false); } |
123 | inline bool hasTransient() const { return ((client.transient) ? true : false); } | 132 | inline bool hasTransient() const { return ((client.transient) ? true : false); } |
124 | inline bool isManaged() const { return managed; } | 133 | inline bool isManaged() const { return managed; } |
@@ -136,11 +145,15 @@ public: | |||
136 | inline bool hasTab() const { return (tab!=0 ? true : false); } | 145 | inline bool hasTab() const { return (tab!=0 ? true : false); } |
137 | inline bool isMoving() const { return moving; } | 146 | inline bool isMoving() const { return moving; } |
138 | inline bool isResizing() const { return resizing; } | 147 | inline bool isResizing() const { return resizing; } |
139 | inline BScreen *getScreen() const { return screen; } | 148 | inline const BScreen *getScreen() const { return screen; } |
140 | inline Tab *getTab() const { return tab; } | 149 | inline BScreen *getScreen() { return screen; } |
141 | inline FluxboxWindow *getTransient() const { return client.transient; } | 150 | inline const Tab *getTab() const { return tab; } |
142 | inline FluxboxWindow *getTransientFor() const { return client.transient_for; } | 151 | inline Tab *getTab() { return tab; } |
143 | 152 | inline const FluxboxWindow *getTransient() const { return client.transient; } | |
153 | inline FluxboxWindow *getTransient() { return client.transient; } | ||
154 | inline const FluxboxWindow *getTransientFor() const { return client.transient_for; } | ||
155 | inline FluxboxWindow *getTransientFor() { return client.transient_for; } | ||
156 | |||
144 | inline const Window &getFrameWindow() const { return frame.window; } | 157 | inline const Window &getFrameWindow() const { return frame.window; } |
145 | inline const Window &getClientWindow() const { return client.window; } | 158 | inline const Window &getClientWindow() const { return client.window; } |
146 | 159 | ||
@@ -160,6 +173,8 @@ public: | |||
160 | inline unsigned int getClientHeight() const { return client.height; } | 173 | inline unsigned int getClientHeight() const { return client.height; } |
161 | inline unsigned int getClientWidth() const { return client.width; } | 174 | inline unsigned int getClientWidth() const { return client.width; } |
162 | inline unsigned int getTitleHeight() const { return frame.title_h; } | 175 | inline unsigned int getTitleHeight() const { return frame.title_h; } |
176 | bool isLowerTab() const; | ||
177 | //@} | ||
163 | 178 | ||
164 | inline void setWindowNumber(int n) { window_number = n; } | 179 | inline void setWindowNumber(int n) { window_number = n; } |
165 | 180 | ||
@@ -184,7 +199,7 @@ public: | |||
184 | void setWorkspace(int n); | 199 | void setWorkspace(int n); |
185 | void changeBlackboxHints(BaseDisplay::BlackboxHints *bh); | 200 | void changeBlackboxHints(BaseDisplay::BlackboxHints *bh); |
186 | void restoreAttributes(); | 201 | void restoreAttributes(); |
187 | bool isLowerTab() const; | 202 | |
188 | 203 | ||
189 | void buttonPressEvent(XButtonEvent *be); | 204 | void buttonPressEvent(XButtonEvent *be); |
190 | void buttonReleaseEvent(XButtonEvent *be); | 205 | void buttonReleaseEvent(XButtonEvent *be); |
@@ -202,9 +217,9 @@ public: | |||
202 | 217 | ||
203 | static void showError(FluxboxWindow::Error error); | 218 | static void showError(FluxboxWindow::Error error); |
204 | 219 | ||
205 | #ifdef SHAPE | 220 | #ifdef SHAPE |
206 | void shapeEvent(XShapeEvent *); | 221 | void shapeEvent(XShapeEvent *); |
207 | #endif // SHAPE | 222 | #endif // SHAPE |
208 | 223 | ||
209 | virtual void timeout(); | 224 | virtual void timeout(); |
210 | 225 | ||
@@ -215,10 +230,11 @@ public: | |||
215 | unsigned long functions; // Motif wm functions | 230 | unsigned long functions; // Motif wm functions |
216 | unsigned long decorations; // Motif wm decorations | 231 | unsigned long decorations; // Motif wm decorations |
217 | } MwmHints; | 232 | } MwmHints; |
218 | #ifdef GNOME | 233 | |
234 | #ifdef GNOME | ||
219 | void setGnomeState(int state); | 235 | void setGnomeState(int state); |
220 | inline int getGnomeHints() const { return gnome_hints; } | 236 | inline int getGnomeHints() const { return gnome_hints; } |
221 | #endif //GNOME | 237 | #endif //GNOME |
222 | 238 | ||
223 | private: | 239 | private: |
224 | 240 | ||
@@ -326,7 +342,7 @@ private: | |||
326 | void destroyHandle(); | 342 | void destroyHandle(); |
327 | void checkTransient(); | 343 | void checkTransient(); |
328 | 344 | ||
329 | #ifdef GNOME | 345 | #ifdef GNOME |
330 | 346 | ||
331 | void updateGnomeAtoms() const; | 347 | void updateGnomeAtoms() const; |
332 | void updateGnomeStateAtom() const; | 348 | void updateGnomeStateAtom() const; |
@@ -345,15 +361,15 @@ private: | |||
345 | void loadGnomeLayerAtom(); | 361 | void loadGnomeLayerAtom(); |
346 | 362 | ||
347 | int gnome_hints; | 363 | int gnome_hints; |
348 | #endif //GNOME | 364 | #endif //GNOME |
349 | 365 | ||
350 | #ifdef NEWWMSPEC | 366 | #ifdef NEWWMSPEC |
351 | 367 | ||
352 | void updateNETWMAtoms(); | 368 | void updateNETWMAtoms(); |
353 | void handleNETWMProperyNotify(Atom atom); | 369 | void handleNETWMProperyNotify(Atom atom); |
354 | int getNETWMWindowState(); | 370 | int getNETWMWindowState(); |
355 | 371 | ||
356 | #endif //NEWWMSPEC | 372 | #endif //NEWWMSPEC |
357 | 373 | ||
358 | Window findTitleButton(int type); | 374 | Window findTitleButton(int type); |
359 | private: | 375 | private: |