]> Dogcows Code - chaz/openbox/blobdiff - src/client.hh
fix up the otk description
[chaz/openbox] / src / client.hh
index 02c12d4342ff02b66ed007708ffb77da3c0a6cf9..a9fe942766666e91087849372cf95462a19d0ad3 100644 (file)
@@ -7,6 +7,7 @@
   property changes on the window and some client messages
 */
 
+#include "screen.hh"
 #include "widgetbase.hh"
 #include "otk/point.hh"
 #include "otk/strut.hh"
@@ -28,6 +29,7 @@ extern "C" {
 namespace ob {
 
 class Frame;
+class Screen;
 
 //! The MWM Hints as retrieved from the window property
 /*!
@@ -295,6 +297,9 @@ private:
   //! The window uses shape extension to be non-rectangular?
   bool _shaped;
 
+  //! If the window has a modal child window, then this will point to it
+  Client *_modal_child;
+
   //! The window is modal, so it must be processed before any windows it is
   //! related to can be focused
   bool _modal;
@@ -381,6 +386,11 @@ private:
     by sending it to any other valid desktop.
   */
   void setDesktop(long desktop);
+  //! Set whether the window is modal or not
+  /*!
+    This adjusts references in parents etc to match.
+  */
+  void setModal(bool modal);
   
   //! Calculates the stacking layer for the client window
   void calcLayer();
@@ -472,6 +482,24 @@ private:
   void internal_resize(Corner anchor, int w, int h, bool user = true,
                        int x = INT_MIN, int y = INT_MIN);
 
+  //! Attempts to find and return a modal child of this window, recursively.
+  Client *findModalChild(Client *skip = 0) const;
+
+  //! Removes or reapplies the client's border to its window
+  /*!
+    Used when managing and unmanaging a window.
+    @param addborder true if adding the border to the client; false if removing
+                     from the client
+  */
+  void toggleClientBorder(bool addborder);
+
+  //! Applies the states requested when the window mapped
+  /*!
+    This should be called only once, during the window mapping process. It
+    applies things like maximized, and fullscreen.
+  */
+  void applyStartupState();
+  
 public:
 #ifndef SWIG
   //! Constructs a new Client object around a specified window id
@@ -527,6 +555,8 @@ BB    @param window The window id that the Client class should handle
   inline bool urgent() const { return _urgent; }
   //! Returns if the window wants to be notified when it receives focus
   inline bool focusNotify() const { return _focus_notify; }
+  //! Returns if the window is the focused window
+  inline bool focused() const { return _focused; }
   //! Returns if the window uses the Shape extension
   inline bool shaped() const { return _shaped; }
   //! Returns the window's gravity
@@ -557,6 +587,9 @@ BB    @param window The window id that the Client class should handle
   //! Return the client this window is transient for
   inline Client *transientFor() const { return _transient_for; }
 
+  //! Returns the window which is a modal child of this window
+  inline Client *modalChild() const { return _modal_child; }
+  
   //! Returns if the window is modal
   /*!
     If the window is modal, then no other windows that it is related to can get
@@ -596,29 +629,16 @@ BB    @param window The window id that the Client class should handle
   */
   const otk::Point &logicalSize() const { return _logical_size; }
 
-  //! Applies the states requested when the window mapped
-  /*!
-    This should be called only once, during the window mapping process. It
-    applies things like maximized, and fullscreen.
-  */
-  void applyStartupState();
-  
-  //! Removes or reapplies the client's border to its window
-  /*!
-    Used when managing and unmanaging a window.
-    @param addborder true if adding the border to the client; false if removing
-                     from the client
-  */
-  void toggleClientBorder(bool addborder);
-
   //! Returns the position and size of the client relative to the root window
   inline const otk::Rect &area() const { return _area; }
 
   //! Returns the client's strut definition
   inline const otk::Strut &strut() const { return _strut; }
 
-  //! Move the client window
+  //! Move the window (actually, its frame) to a position.
   /*!
+    This moves the window so that the top-left corner of its frame will be at
+    the position specified.
     @param x The X coordinate to move to.
     @param y The Y coordinate to move to.
   */
@@ -664,6 +684,8 @@ BB    @param window The window id that the Client class should handle
   */
   bool validate() const;
 
+  void installColormap(bool install) const;
+  
   virtual void focusHandler(const XFocusChangeEvent &e);
   virtual void unfocusHandler(const XFocusChangeEvent &e);
   virtual void propertyHandler(const XPropertyEvent &e);
@@ -675,7 +697,10 @@ BB    @param window The window id that the Client class should handle
   virtual void mapRequestHandler(const XMapRequestEvent &e);
 #if defined(SHAPE)
   virtual void shapeHandler(const XShapeEvent &e);
-#endif // SHAPE 
+#endif // SHAPE
+
+  friend void Screen::manageWindow(Window);
+  friend void Screen::unmanageWindow(Client *);
 };
 
 }
This page took 0.026888 seconds and 4 git commands to generate.