From b8c9d50d7dc51097d6c100f6b8cffd371b7be33e Mon Sep 17 00:00:00 2001 From: fluxgen Date: Sun, 17 Feb 2002 18:47:45 +0000 Subject: include guard, gnome functions and some net wm function prototypes --- src/Window.hh | 99 ++++++++++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 78 insertions(+), 21 deletions(-) diff --git a/src/Window.hh b/src/Window.hh index bbb736e..584d187 100644 --- a/src/Window.hh +++ b/src/Window.hh @@ -22,10 +22,10 @@ // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -// $Id: Window.hh,v 1.9 2002/02/16 11:26:22 fluxgen Exp $ +// $Id: Window.hh,v 1.10 2002/02/17 18:47:45 fluxgen Exp $ -#ifndef _WINDOW_HH_ -#define _WINDOW_HH_ +#ifndef WINDOW_HH +#define WINDOW_HH #include #include @@ -34,23 +34,14 @@ # include #endif // SHAPE -// forward declaration -class FluxboxWindow; -class Tab; - -#include "fluxbox.hh" - -#include -#include -#ifndef _BASEDISPLAY_HH_ #include "BaseDisplay.hh" -#endif -#ifndef _TIMER_HH_ #include "Timer.hh" -#endif -#ifndef _WINDOWMENU_HH_ #include "Windowmenu.hh" -#endif + +#include +#include + + #define MwmHintsFunctions (1l << 0) #define MwmHintsDecorations (1l << 1) @@ -81,11 +72,52 @@ class Tab; #define PropMwmHintsElements 3 +class Tab; class FluxboxWindow : public TimeoutHandler { public: enum Error{NOERROR=0, XGETWINDOWATTRIB, CANTFINDSCREEN}; - FluxboxWindow(Window, BScreen * = (BScreen *) 0); + #ifdef GNOME + enum GnomeLayer { + WIN_LAYER_DESKTOP = 0, + WIN_LAYER_BELOW = 2, + WIN_LAYER_NORMAL = 4, + WIN_LAYER_ONTOP = 6, + WIN_LAYER_DOCK = 8, + WIN_LAYER_ABOVE_DOCK = 10, + WIN_LAYER_MENU = 12 + }; + + enum GnomeState { + WIN_STATE_STICKY = (1<<0), // everyone knows sticky + WIN_STATE_MINIMIZED = (1<<1), // Reserved - definition is unclear + WIN_STATE_MAXIMIZED_VERT = (1<<2), // window in maximized V state + WIN_STATE_MAXIMIZED_HORIZ = (1<<3), // window in maximized H state + WIN_STATE_HIDDEN = (1<<4), // not on taskbar but window visible + WIN_STATE_SHADED = (1<<5), // shaded (MacOS / Afterstep style) + WIN_STATE_HID_WORKSPACE = (1<<6), // not on current desktop + WIN_STATE_HID_TRANSIENT = (1<<7), // owner of transient is hidden + WIN_STATE_FIXED_POSITION = (1<<8), // window is fixed in position even + WIN_STATE_ARRANGE_IGNORE = (1<<9) // ignore for auto arranging + }; + + enum GnomeHints { + WIN_HINTS_SKIP_FOCUS = (1<<0), // "alt-tab" skips this win + WIN_HINTS_SKIP_WINLIST = (1<<1), // do not show in window list + WIN_HINTS_SKIP_TASKBAR = (1<<2), // do not show on taskbar + WIN_HINTS_GROUP_TRANSIENT = (1<<3), //Reserved - definition is unclear + WIN_HINTS_FOCUS_ON_CLICK = (1<<4) // app only accepts focus if clicked + }; + #endif + + enum WinLayer { + LAYER_BOTTOM = 0x01, + LAYER_BELOW = 0x02, + LAYER_NORMAL = 0x04, + LAYER_TOP = 0x08 + }; + + FluxboxWindow(Window, BScreen * = 0); virtual ~FluxboxWindow(void); inline const bool isTransient(void) const @@ -178,7 +210,10 @@ public: typedef struct MwmHints { unsigned long flags, functions, decorations; } MwmHints; - + #ifdef GNOME + void setGnomeState(int state); + inline int getGnomeHints() const { return gnome_hints; } + #endif private: BImageControl *image_ctrl; @@ -210,6 +245,7 @@ private: MwmHints *mwm_hint; BaseDisplay::BlackboxHints *blackbox_hint; + } client; struct _decorations { @@ -264,10 +300,31 @@ private: void grabButtons(); void createButton(int type, ButtonEventProc, ButtonEventProc, ButtonDrawProc); + #ifdef GNOME + void updateGnomeAtoms(); - long getGnomeWindowState(); - #endif + void updateGnomeStateAtom(); + void updateGnomeHintsAtom(); + void updateGnomeLayerAtom(); + void updateGnomeWorkspaceAtom(); + + int getGnomeWindowState(); + bool handleGnomePropertyNotify(Atom atom); + int getGnomeLayer(); + void loadGnomeAtoms(); + void loadGnomeStateAtom(); + void loadGnomeHintsAtom(); + int gnome_hints; + #endif //GNOME + + #ifdef NEWWMSPEC + + void updateNETWMAtoms(); + void handleNETWMProperyNotify(Atom atom); + int getNETWMWindowState(); + + #endif //NEWWMSPEC Window findTitleButton(int type); protected: -- cgit v0.11.2