X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fclient.hh;h=2bc7e3f0018eaf28b5f1846d3be127a10fd0266d;hb=15d3efa69c40c93ae609a791e4b57c3d793e646f;hp=61f7b0717ce0310ecf027ea5619c01a1287975f4;hpb=2ae2b257d39ea62640c2590f794e4275c6db1cd4;p=chaz%2Fopenbox diff --git a/src/client.hh b/src/client.hh index 61f7b071..2bc7e3f0 100644 --- a/src/client.hh +++ b/src/client.hh @@ -17,11 +17,12 @@ extern "C" { #include +#include "screen.hh" +#include "widget.hh" #include "otk/point.hh" #include "otk/strut.hh" #include "otk/rect.hh" #include "otk/eventhandler.hh" -#include "widget.hh" namespace ob { @@ -251,10 +252,18 @@ private: bool _max_vert; //! The window is maximized to fill the screen horizontally bool _max_horz; + //! The window should not be displayed by pagers + bool _skip_pager; + //! The window should not be displayed by taskbars + bool _skip_taskbar; //! The window is a 'fullscreen' window, and should be on top of all others bool _fullscreen; //! The window should be on top of other windows of the same type - bool _floating; + bool _above; + //! The window should be underneath other windows of the same type + bool _below; + + OBScreen::StackLayer _layer; //! A bitmask of values in the OBClient::Decoration enum /*! @@ -293,6 +302,9 @@ private: //! Adjusts the window's net_state void setState(StateAction action, long data1, long data2); + //! Calculates the stacking layer for the client window + void calcLayer(); + //! Update the protocols that the window supports and adjusts things if they //! change void updateProtocols(); @@ -308,6 +320,9 @@ private: void updateClass(); // XXX: updateTransientFor(); + //! Change the client's state hints to match the class' data + void changeState(); + public: #ifndef SWIG //! Constructs a new OBClient object around a specified window id @@ -396,17 +411,8 @@ public: inline bool maxVert() const { return _max_vert; } //! Returns if the window is maximized horizontally inline bool maxHorz() const { return _max_horz; } - //! Returns if the window is fullscreen - /*! - When the window is fullscreen, it is kept above all others - */ - inline bool fullscreen() const { return _fullscreen; } - //! Returns if the window is floating - /*! - When the window is floating, it is kept above all others in the same - stacking layer as it - */ - inline bool floating() const { return _floating; } + //! Returns the window's stacking layer + inline OBScreen::StackLayer layer() const { return _layer; } //! Removes or reapplies the client's border to its window /*! @@ -434,9 +440,19 @@ public: //! Request the client to close its window. void close(); + //! Shades or unshades the client window + /*! + @param shade true if the window should be shaded; false if it should be + unshaded. + */ + void shade(bool shade); + //! Attempt to focus the client window bool focus(); - + + //! Remove focus from the client window + void unfocus(); + virtual void focusHandler(const XFocusChangeEvent &e); virtual void unfocusHandler(const XFocusChangeEvent &e); virtual void propertyHandler(const XPropertyEvent &e); @@ -445,6 +461,7 @@ public: virtual void configureRequestHandler(const XConfigureRequestEvent &e); virtual void unmapHandler(const XUnmapEvent &e); virtual void destroyHandler(const XDestroyWindowEvent &e); + virtual void reparentHandler(const XReparentEvent &e); }; }