]> Dogcows Code - chaz/openbox/blobdiff - src/screen.hh
provide access to the desktop names
[chaz/openbox] / src / screen.hh
index 9b3618c92df787735c769cee5a584fa9e29480a4..4eb81d4aebd0b222beebf963f1fd48701ea543eb 100644 (file)
@@ -24,6 +24,16 @@ namespace ob {
 
 class Client;
 
+struct DesktopLayout {
+  enum Corner { TopLeft, TopRight, BottomRight, BottomLeft };
+  enum Direction { Horizontal, Vertical };
+
+  Direction orientation;
+  Corner start_corner;
+  unsigned int rows;
+  unsigned int columns;
+};
+
 //! Manages a single screen
 /*!
 */
@@ -58,9 +68,6 @@ private:
   //! Information about this screen
   const otk::ScreenInfo *_info;
   
-  //! Is the root colormap currently installed?
-  bool _root_cmap_installed;
-
   //! Area usable for placement etc (total - struts), one per desktop,
   //! plus one extra for windows on all desktops
   RectList _area;
@@ -88,6 +95,12 @@ private:
   //! The names of all desktops
   otk::Property::StringVect _desktop_names;
 
+  //! The layout of the desktops as specified by an EWMH compliant pager
+  DesktopLayout _layout;
+
+  //! True when the window manager is in 'showing desktop' mode
+  bool _showing_desktop;
+
   //! Calculate the Screen::_area member
   void calcArea();
   //! Set the list of supported NETWM atoms on the root window
@@ -112,6 +125,9 @@ private:
   //! Get desktop names from the root window property
   void updateDesktopNames();
 
+  //! Gets the layout of the desktops from the root window property
+  void updateDesktopLayout();
+
   //! Changes to the specified desktop, displaying windows on it and hiding
   //! windows on the others.
   /*!
@@ -149,6 +165,8 @@ public:
   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
   /*!
@@ -158,6 +176,12 @@ public:
   */
   const otk::Rect& area(unsigned int desktop) const;
 
+  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.
@@ -200,6 +224,8 @@ public:
   */
   void setDesktopName(unsigned int i, const otk::ustring &name);
 
+  otk::ustring desktopName(unsigned int i) const;
+
   void installColormap(bool install) const;
 
   virtual void propertyHandler(const XPropertyEvent &e);
This page took 0.021505 seconds and 4 git commands to generate.