X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fclient.hh;h=ff119faf746b12961bbfb296b1de8fdc1576f3f3;hb=c735d49979a995d59f1095d6048766f35e337497;hp=634d0e3de39720e55b5d64fd1f9eae96fe554eb9;hpb=74cfb1b4c115cdb4e05aa823b09d2b5ea9d0d690;p=chaz%2Fopenbox diff --git a/src/client.hh b/src/client.hh index 634d0e3d..ff119faf 100644 --- a/src/client.hh +++ b/src/client.hh @@ -164,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; @@ -188,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; @@ -295,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; @@ -379,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(); @@ -431,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(); @@ -446,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 @@ -482,9 +480,6 @@ 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. @@ -535,7 +530,7 @@ BB @param window The window id that the Client class should handle This value is a 0-based index.
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 @@ -587,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 @@ -659,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 /*! @@ -670,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();