diff options
Diffstat (limited to 'src/ui/widget.cc')
-rw-r--r-- | src/ui/widget.cc | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/src/ui/widget.cc b/src/ui/widget.cc index 1ecfcc8..24dfe5c 100644 --- a/src/ui/widget.cc +++ b/src/ui/widget.cc @@ -128,6 +128,20 @@ void Widget::show() void Widget::hide() { widget_visible = false; + if (parent() && focus()) { + Widget::Children::reverse_iterator it = parent()->children().rbegin(); + + while (it != parent()->children().rend()) { + Widget *w = (*it); + if (w != this && w->visible()) { + widget_focus = false; + w->widget_focus = true; + it = parent()->children().rend(); + } else { + it++; + } + } + } } |