]> Dogcows Code - chaz/openbox/blobdiff - src/client.hh
rm some old commented code
[chaz/openbox] / src / client.hh
index c17431a556fe476fb81b47f190ef7c0c7fe00e90..ff119faf746b12961bbfb296b1de8fdc1576f3f3 100644 (file)
@@ -8,8 +8,6 @@
 */
 
 #include "screen.hh"
-#include "widgetbase.hh"
-#include "otk/point.hh"
 #include "otk/strut.hh"
 #include "otk/rect.hh"
 #include "otk/eventhandler.hh"
@@ -56,7 +54,7 @@ struct MwmHints {
   class' member variables and call whatever is nessary to complete the
   change (such as causing a redraw of the titlebar after the title is changed).
 */
-class Client : public otk::EventHandler, public WidgetBase {
+class Client : public otk::EventHandler {
 public:
 
   //! The frame window which decorates around the client window
@@ -166,10 +164,6 @@ 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;
   
@@ -190,7 +184,7 @@ private:
   Client::List _transients;
 
   //! The desktop on which the window resides (0xffffffff for all desktops)
-  long _desktop;
+  unsigned int _desktop;
 
   //! Normal window title
   otk::ustring  _title;
@@ -229,7 +223,7 @@ private:
     For example, with xterms, this value it the number of characters being
     displayed in the terminal, instead of the number of pixels.
   */
-  otk::Point   _logical_size;
+  otk::Size   _logical_size;
 
   //! Width of the border on the window.
   /*!
@@ -253,20 +247,20 @@ private:
   /*!
     If the min is > the max, then the window is not resizable
   */
-  otk::Point _min_size;
+  otk::Size _min_size;
   //! The maximum size of the client window
   /*!
     If the min is > the max, then the window is not resizable
   */
-  otk::Point _max_size;
+  otk::Size _max_size;
   //! The size of increments to resize the client window by
-  otk::Point _size_inc;
+  otk::Size _size_inc;
   //! The base size of the client window
   /*!
     This value should be subtracted from the window's actual size when
     displaying its size to the user, or working with its min/max size
   */
-  otk::Point _base_size;
+  otk::Size _base_size;
 
   //! Window decoration and functionality hints
   MwmHints _mwmhints;
@@ -297,9 +291,6 @@ 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,16 +372,7 @@ 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);
-  //! Set whether the window is modal or not
-  /*!
-    This adjusts references in parents etc to match.
-  */
-  void setModal(bool modal);
+  void setDesktop(unsigned int desktop);
   
   //! Calculates the stacking layer for the client window
   void calcLayer();
@@ -433,6 +415,10 @@ private:
   */
   void shade(bool shade);
 
+  //! Recursively searches the client 'tree' for a modal client, always skips
+  //! the topmost node (the window you're starting with).
+  Client *Client::searchModalTree(Client *node, Client *skip);
+
   //! Fires the urgent callbacks which lets the user do what they want with
   //! urgent windows
   void fireUrgent();
@@ -448,6 +434,16 @@ private:
   */
   void fullscreen(bool fs, bool savearea = true);
 
+  //! Iconifies or uniconifies the client window
+  /*!
+    @param iconic true if the window should be iconified; false if it should be
+                  restored.
+    @param curdesk If iconic is false, then this determines if the window will
+                   be uniconified to the current viewable desktop (true) or to
+                   its previous desktop (false)
+  */
+  void iconify(bool iconic, bool curdesk = true);
+
   //! Maximize or unmaximize the client window
   /*!
     @param max true if the window should be maximized; false if it should be
@@ -481,11 +477,8 @@ private:
     The x and y coordinates must both be sepcified together, or they will have
     no effect. When they are specified, the anchor is ignored.
   */
-  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;
+  void internal_resize(Corner anchor, int w, int h,
+                       bool user = true, int x = INT_MIN, int y = INT_MIN);
 
   //! Removes or reapplies the client's border to its window
   /*!
@@ -537,7 +530,7 @@ BB    @param window The window id that the Client class should handle
     This value is a 0-based index.<br>
     A value of 0xffffffff indicates that the window exists on all desktops.
   */
-  inline long desktop() const { return _desktop; }
+  inline unsigned int desktop() const { return _desktop; }
   //! Returns the window's title
   inline const otk::ustring &title() const { return _title; }
   //! Returns the window's title when it is iconified
@@ -589,9 +582,6 @@ 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
@@ -629,7 +619,7 @@ BB    @param window The window id that the Client class should handle
     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; }
+  const otk::Size &logicalSize() const { return _logical_size; }
 
   //! Returns the position and size of the client relative to the root window
   inline const otk::Rect &area() const { return _area; }
@@ -661,6 +651,12 @@ BB    @param window The window id that the Client class should handle
     surroundings (struts, etc).
   */
   void remaximize();
+
+  //! Shows the window if it should be shown, or hides it
+  /*!
+    Used when changing desktops, the window's state, etc.
+  */
+  void showhide();
   
   //! Choose a mask of decorations to not display on the client
   /*!
@@ -672,6 +668,12 @@ BB    @param window The window id that the Client class should handle
   */
   void disableDecorations(DecorationFlags flags);
   
+  //! Return a modal child of the client window
+  /*!
+    @return A modal child of the client window, or 0 if none was found.
+  */
+  Client *findModalChild();
+
   //! Attempt to focus the client window
   bool focus();
 
This page took 0.028628 seconds and 4 git commands to generate.