summaryrefslogtreecommitdiff
path: root/src/client.hh
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-02-03 10:35:26 +0000
committerDana Jansens <danakj@orodu.net>2003-02-03 10:35:26 +0000
commitc9389a89704d5d27cfd5599ab19c40a22c58f65a (patch)
treeec9ca6aa42561a5dc92f242c99ce852eae271a02 /src/client.hh
parente44c0cba4b56fe1b649ca03d40f1d33c6cf4fd43 (diff)
support for modal children, both in the focus code and in the raise/lower code
Diffstat (limited to 'src/client.hh')
-rw-r--r--src/client.hh18
1 files changed, 13 insertions, 5 deletions
diff --git a/src/client.hh b/src/client.hh
index d3e3a9b0..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,11 +480,8 @@ private:
void internal_resize(Corner anchor, int w, int h, bool user = true,
int x = INT_MIN, int y = INT_MIN);
- //! Attempts to focus a modal child of this window, recursively.
- /*!
- @return true if a modal child has been found and focused; otherwise, false.
- */
- bool focusModalChild();
+ //! Attempts to find and return a modal child of this window, recursively.
+ Client *findModalChild(Client *skip = 0) const;
public:
#ifndef SWIG
@@ -563,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