diff options
Diffstat (limited to 'src/client.cc')
| -rw-r--r-- | src/client.cc | 17 |
1 files changed, 11 insertions, 6 deletions
diff --git a/src/client.cc b/src/client.cc index 8a3a46b8..453bf745 100644 --- a/src/client.cc +++ b/src/client.cc @@ -764,12 +764,17 @@ void Client::setDesktop(unsigned int target) void Client::showhide() { - if (!_iconic && - (_desktop == openbox->screen(_screen)->desktop() || - _desktop == 0xffffffff)) - frame->show(); - else - frame->hide(); + bool show; + Screen *s = openbox->screen(_screen); + + if (_iconic) show = false; + else if (!(_desktop == s->desktop() || + _desktop == 0xffffffff)) show = false; + else if (normal() && s->showingDesktop()) show = false; + else show = true; + + if (show) frame->show(); + else frame->hide(); } |
