]> Dogcows Code - chaz/openbox/blobdiff - src/client.hh
use the proper screen area, which excludes area taken up by struts
[chaz/openbox] / src / client.hh
index 5788a3e60322c4a86f5c250ef488bf4470b95ad7..8f04dc649d2e26187fce64059e3337a700c052b8 100644 (file)
@@ -89,7 +89,7 @@ public:
   enum WindowType { Type_Desktop, //!< A desktop (bottom-most window)
                     Type_Dock,    //!< A dock bar/panel window
                     Type_Toolbar, //!< A toolbar window, pulled off an app
-                    Type_Menu,    //!< A sticky menu from an app
+                    Type_Menu,    //!< An unpinned menu from an app
                     Type_Utility, //!< A small utility window such as a palette
                     Type_Splash,  //!< A splash screen window
                     Type_Dialog,  //!< A dialog window
@@ -133,13 +133,15 @@ public:
   typedef unsigned char FunctionFlags;
 
   //! The decorations the client window wants to be displayed on it
-  enum Decoration { Decor_Titlebar = 1 << 0, //!< Display a titlebar
-                    Decor_Handle   = 1 << 1, //!< Display a handle (bottom)
-                    Decor_Border   = 1 << 2, //!< Display a border
-                    Decor_Iconify  = 1 << 3, //!< Display an iconify button
-                    Decor_Maximize = 1 << 4, //!< Display a maximize button
-                    Decor_Sticky   = 1 << 5, //!< Display a sticky button
-                    Decor_Close    = 1 << 6  //!< Display a close button
+  enum Decoration { Decor_Titlebar    = 1 << 0, //!< Display a titlebar
+                    Decor_Handle      = 1 << 1, //!< Display a handle (bottom)
+                    Decor_Border      = 1 << 2, //!< Display a border
+                    Decor_Iconify     = 1 << 3, //!< Display an iconify button
+                    Decor_Maximize    = 1 << 4, //!< Display a maximize button
+                    //! Display a button to toggle the window's placement on
+                    //! all desktops
+                    Decor_AllDesktops = 1 << 5,
+                    Decor_Close       = 1 << 6  //!< Display a close button
   };
   //! Holds a bitmask of Client::Decoration values
   typedef unsigned char DecorationFlags;
@@ -162,6 +164,10 @@ public:
   static const long no_propagate_mask = ButtonPressMask | ButtonReleaseMask |
                                         ButtonMotionMask;
 
+  //! The desktop value which indicated the window is iconified and not on any
+  //! desktop
+  static const long ICONIC_DESKTOP = 0xfffffffe;
+
   //! The number of unmap events to ignore on the window
   int ignore_unmaps;
   
@@ -259,6 +265,9 @@ private:
   //! NormalState
   long _wmstate;
 
+  //! True if the client supports the delete_window protocol
+  bool _delete_window;
+  
   //! Was the window's position requested by the application? if not, we should
   //! place the window ourselves when it first appears
   bool _positioned;
@@ -350,6 +359,10 @@ private:
   void setState(StateAction action, long data1, long data2);
 
   //! Sends the window to the specified desktop
+  /*!
+    A window is iconified by sending it to the ICONIC_DESKTOP, and restored
+    by sending it to any other valid desktop.
+  */
   void setDesktop(long desktop);
   
   //! Calculates the stacking layer for the client window
@@ -361,7 +374,12 @@ private:
   //! Updates the WMNormalHints and adjusts things if they change
   void updateNormalHints();
   //! Updates the WMHints and adjusts things if they change
-  void updateWMHints();
+  /*!
+    @param initstate Whether to read the initial_state property from the
+                     WMHints. This should only be used during the mapping
+                     process.
+  */
+  void updateWMHints(bool initstate = false);
   //! Updates the window's title
   void updateTitle();
   //! Updates the window's icon title
@@ -575,6 +593,7 @@ BB    @param window The window id that the Client class should handle
   virtual void unmapHandler(const XUnmapEvent &e);
   virtual void destroyHandler(const XDestroyWindowEvent &e);
   virtual void reparentHandler(const XReparentEvent &e);
+  virtual void mapRequestHandler(const XMapRequestEvent &e);
 #if defined(SHAPE)
   virtual void shapeHandler(const XShapeEvent &e);
 #endif // SHAPE 
This page took 0.024676 seconds and 4 git commands to generate.