]> Dogcows Code - chaz/openbox/blobdiff - src/client.hh
add some tests
[chaz/openbox] / src / client.hh
index 2a55d992f7fb9b0d9e9a36a8fff2cb11bf157c98..ddfa687ab962f132846ca711423c7aab70fa9ce2 100644 (file)
@@ -295,6 +295,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 +384,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();
@@ -431,8 +439,22 @@ private:
   /*!
     @param fs true if the window should be made fullscreen; false if it should
               be returned to normal state.
+    @param savearea true to have the client's current size and position saved;
+                    otherwise, they are not. You should not save when mapping a
+                    new window that is set to fullscreen.
+  */
+  void fullscreen(bool fs, bool savearea);
+
+  //! Maximize or unmaximize the client window
+  /*!
+    @param max true if the window should be maximized; false if it should be
+               returned to normal size.
+    @param dir 0 to set both horz and vert, 1 to set horz, 2 to set vert.
+    @param savearea true to have the client's current size and position saved;
+                    otherwise, they are not. You should not save when mapping a
+                    new window that is set to fullscreen.
   */
-  void fullscreen(bool fs);
+  void maximize(bool max, int dir, bool savearea);
 
   //! Internal version of the Client::move function
   /*!
@@ -458,6 +480,9 @@ 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;
+
 public:
 #ifndef SWIG
   //! Constructs a new Client object around a specified window id
@@ -543,13 +568,20 @@ 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
     focus while it exists/remains modal.
   */
   inline bool modal() const { return _modal; }
-  //! Returns if the window is shaded
+  //! The window should not be displayed by pagers
+  inline bool skipPager() const { return _skip_pager; }
+  //! The window should not be displayed by taskbars
+  inline bool skipTaskbar() const { return _skip_taskbar; } 
+ //! Returns if the window is shaded
   /*!
     When the window is shaded, only its titlebar is visible.
   */
@@ -569,6 +601,15 @@ BB    @param window The window id that the Client class should handle
   //! Returns the window's stacking layer
   inline StackLayer layer() const { return _layer; }
 
+  //! Returns the logical size of the window
+  /*!
+    The "logical" size of the window is refers to the user's perception of the
+    size of the window, and is the value that should be displayed to the user.
+    For example, with xterms, this value it the number of characters being
+    displayed in the terminal, instead of the number of pixels.
+  */
+  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
@@ -590,8 +631,10 @@ BB    @param window The window id that the Client class should handle
   //! 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.
   */
@@ -606,6 +649,13 @@ BB    @param window The window id that the Client class should handle
   */
   void resize(Corner anchor, int w, int h);
 
+  //! Reapplies the maximized state to the window
+  /*!
+    Use this to make the window readjust its maximized size to new
+    surroundings (struts, etc).
+  */
+  void remaximize();
+  
   //! Choose a mask of decorations to not display on the client
   /*!
     Pass a value of 0 to the function to turn all decorations back on. Note
This page took 0.023563 seconds and 4 git commands to generate.