summaryrefslogtreecommitdiff
path: root/src/client.cc
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-02-03 08:51:44 +0000
committerDana Jansens <danakj@orodu.net>2003-02-03 08:51:44 +0000
commit6cc8d62e2674bd8bcb0d83935337523ca486098f (patch)
tree1e2458b032a501e231ebb2eb11961fd65d7be0e9 /src/client.cc
parentd64505cfe29a433d09fba8ee74372181c04cfad7 (diff)
find modal children and focus them
Diffstat (limited to 'src/client.cc')
-rw-r--r--src/client.cc10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/client.cc b/src/client.cc
index 296e2e52..2f8cfe8d 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -1550,7 +1550,15 @@ void Client::disableDecorations(DecorationFlags flags)
bool Client::focusModalChild()
{
- // XXX: find a modal child recursively and try focus it
+ // find a modal child recursively and try focus it
+ List::iterator it, end = _transients.end();
+ for (it = _transients.begin(); it != end; ++it)
+ if ((*it)->focusModalChild())
+ return true; // got one
+ // none of our grand-children are modal, try our direct children
+ for (it = _transients.begin(); it != end; ++it)
+ if ((*it)->modal() && (*it)->focus())
+ return true; // got one
return false;
}