+ //! Returns if the screen was successfully managed
+ /*!
+ If this is false, then the screen should be deleted and should NOT be
+ used.
+ */
+ inline bool managed() const { return _managed; }
+
+ //! An offscreen window which gets focus when nothing else has it
+ inline Window focuswindow() const { return _focuswindow; }
+ //! Returns the desktop being displayed
+ inline unsigned int desktop() const { return _desktop; }
+ //! Returns the number of desktops
+ inline unsigned int numDesktops() const { return _num_desktops; }
+ //! When true, the desktop is being shown and all clients are hidden
+ inline bool showingDesktop() const { return _showing_desktop; }
+
+ //! Returns the area of the screen not reserved by applications' Struts
+ /*!
+ @param desktop The desktop number of the area to retrieve for. A value of
+ 0xffffffff will return an area that combines all struts
+ on all desktops.
+ */
+ const otk::Rect& area(unsigned int desktop) const;
+
+ //! Gives the layout of how the desktops are being displayed, the number of
+ //! rows and columns etc.
+ const DesktopLayout& desktopLayout() const { return _layout; }
+
+ //! Shows and focuses the desktop and hides all the client windows, or
+ //! returns to the normal state, showing client windows.
+ void showDesktop(bool show);
+
+ //! Update's the screen's combined strut of all the clients.
+ /*!
+ Clients should call this whenever they change their strut.
+ */
+ void updateStruts();
+
+ //! Manage any pre-existing windows on the screen
+ void manageExisting();
+ //! Manage a client window
+ /*!
+ This gives the window a frame, reparents it, selects events on it, etc.
+ */
+ void manageWindow(Window window);
+ //! Unmanage a client
+ /*!
+ This removes the window's frame, reparents it to root, unselects events on
+ it, etc.
+ @param client The client to unmanage
+ */
+ void unmanageWindow(Client *client);
+
+ //! Raises a client window above all others in its stacking layer
+ /*!
+ raiseWindow has a couple of constraints that lowerWindow does not.<br>
+ 1) raiseWindow can be called after changing a Client's stack layer, and
+ the list will be reorganized properly.<br>
+ 2) raiseWindow guarantees that XRestackWindows() will <i>always</i> be
+ called for the specified client.
+ */
+ void raiseWindow(Client *client);
+
+ //! Lowers a client window below all others in its stacking layer
+ void lowerWindow(Client *client);
+
+ const otk::Property::StringVect& desktopNames() const
+ { return _desktop_names; }
+
+ void installColormap(bool install) const;
+
+ virtual void propertyHandler(const XPropertyEvent &e);
+ virtual void clientMessageHandler(const XClientMessageEvent &e);
+ virtual void mapRequestHandler(const XMapRequestEvent &e);