summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-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;
}