From edd539420796233d3f69e1cceaa0f491ffdb5c6a Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Mon, 3 Feb 2003 08:47:57 +0000 Subject: [PATCH] add function to focus modal children --- src/client.cc | 14 +++++++++++--- src/client.hh | 6 ++++++ 2 files changed, 17 insertions(+), 3 deletions(-) diff --git a/src/client.cc b/src/client.cc index 08feae3e..83ee5b9a 100644 --- a/src/client.cc +++ b/src/client.cc @@ -679,8 +679,6 @@ void Client::updateTransientFor() _transient_for = c; if (_transient_for) _transient_for->_transients.push_back(this); // add to new parent - - // XXX: change decor status? } } @@ -841,7 +839,6 @@ void Client::setState(StateAction action, long data1, long data2) } else if (state == otk::Property::atoms.net_wm_state_maximized_horz) { if (_max_horz) continue; maxh = true; - // XXX: resize the window etc } else if (state == otk::Property::atoms.net_wm_state_shaded) { shadestate = true; } else if (state == otk::Property::atoms.net_wm_state_skip_taskbar) { @@ -1551,6 +1548,13 @@ void Client::disableDecorations(DecorationFlags flags) } +bool Client::focusModalChild() +{ + // XXX: find a modal child recursively and try focus it + return false; +} + + bool Client::focus() { // won't try focus if the client doesn't want it, or if the window isn't @@ -1559,6 +1563,10 @@ bool Client::focus() if (_focused) return true; + if (_modal) + if (focusModalChild()) + return true; + // do a check to see if the window has already been unmapped or destroyed // do this intelligently while watching out for unmaps we've generated // (ignore_unmaps > 0) diff --git a/src/client.hh b/src/client.hh index e66712c4..d3e3a9b0 100644 --- a/src/client.hh +++ b/src/client.hh @@ -472,6 +472,12 @@ 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(); + public: #ifndef SWIG //! Constructs a new Client object around a specified window id -- 2.44.0