extern "C" {
#include <X11/Xlib.h>
+
+#ifdef SHAPE
+#include <X11/extensions/shape.h>
+#endif // SHAPE
}
#include <string>
namespace ob {
+class OBFrame;
+
//! Maintains the state of a client window.
/*!
OBClient maintains the state of a client window. The state consists of the
*/
class OBClient {
public:
+
+ //! The frame window which decorates around the client window
+ OBFrame *frame;
+
//! Possible window types
enum WindowType { Type_Desktop, //!< A desktop (bottom-most window)
Type_Dock, //!< A dock bar/panel window
Decor_Border = 1 << 2, //!< Display a border
Decor_Iconify = 1 << 3, //!< Display an iconify button
Decor_Maximize = 1 << 4, //!< Display a maximize button
- Decor_Close = 1 << 5 //!< Display a close button
+ Decor_Sticky = 1 << 5, //!< Display a sticky button
+ Decor_Close = 1 << 6 //!< Display a close button
};
//! Holds a bitmask of OBClient::Decoration values
typedef unsigned char DecorationFlags;
State_Toggle //!< _NET_WM_STATE_TOGGLE
};
+ //! The event mask to grab on client windows
+ static const long event_mask = PropertyChangeMask | FocusChangeMask |
+ StructureNotifyMask;
+
private:
+ //! The screen number on which the client resides
+ int _screen;
+
//! The actual window that this class is wrapping up
Window _window;
//! Constructs a new OBClient object around a specified window id
/*!
@param window The window id that the OBClient class should handle
+ @param screen The screen on which the window resides
*/
- OBClient(Window window);
+ OBClient(int screen, Window window);
//! Destroys the OBClient object
virtual ~OBClient();
+ //! Returns the screen on which the clien resides
+ inline int screen() const { return _screen; }
+
//! Returns the window id that the OBClient object is handling
inline Window window() const { return _window; }
//! Processes a client message XEvent for the window and causes an action
//! or whatever was specified to occur
void update(const XClientMessageEvent &e);
+#if defined(SHAPE) || defined(DOXYGEN_IGNORE)
+ //! Updates the client's shape status
+ void update(const XShapeEvent &e);
+#endif
//! Changes the stored positions and size of the OBClient window
/*!