X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Fclient.hh;h=ddfa687ab962f132846ca711423c7aab70fa9ce2;hb=92bc846ce16fe5fb63c2b4b38a780489e2979b11;hp=6b44706ee4f299920cf05e172ebb9ac72726c2e1;hpb=9223bfdd67ff39e4aaf72be1a0b4341033fc12c8;p=chaz%2Fopenbox diff --git a/src/client.hh b/src/client.hh index 6b44706e..ddfa687a 100644 --- a/src/client.hh +++ b/src/client.hh @@ -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(); @@ -472,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 @@ -557,6 +568,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 @@ -617,14 +631,14 @@ 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. - @param bool framepos True if the frame should be moved to the position - instead of the client. This makes it ignore the gravity. */ - void move(int x, int y, bool framepos = false); + void move(int x, int y); //! Resizes the client window, anchoring it in a given corner /*!