X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=src%2Fclient.cc;h=33e11ce07e1e596621acb3c61fe5070e8feabc38;hb=b18959e1bda52f807f62c95772c69ce3005215a7;hp=787be429ee793d2419ac30812d575c73b19d397f;hpb=4ef15148365c223b8e810611a10dc27dc5fba355;p=chaz%2Fopenbox diff --git a/src/client.cc b/src/client.cc index 787be429..33e11ce0 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(); } @@ -1012,15 +1017,23 @@ void Client::clientMessageHandler(const XClientMessageEvent &e) #ifdef DEBUG printf("net_active_window for 0x%lx\n", _window); #endif + if (openbox->screen(_screen)->showingDesktop()) + openbox->screen(_screen)->showDesktop(false); if (_iconic) iconify(false); + else if (!frame->visible()) // if its not visible for other reasons, then + return; // don't mess with it if (_shaded) shade(false); focus(); openbox->screen(_screen)->raiseWindow(this); } else if (e.message_type == otk::Property::atoms.openbox_active_window) { + if (openbox->screen(_screen)->showingDesktop()) + openbox->screen(_screen)->showDesktop(false); if (_iconic) iconify(false); + else if (!frame->visible()) // if its not visible for other reasons, then + return; // don't mess with it if (e.data.l[0] && _shaded) shade(false); focus(); @@ -1288,7 +1301,6 @@ void Client::changeAllowedActions(void) void Client::remaximize() { - printf("REMAXIMIZE!!!!!!!!!!!!!!!!!!!\n"); int dir; if (_max_horz && _max_vert) dir = 0; @@ -1549,6 +1561,10 @@ void Client::iconify(bool iconic, bool curdesk) { if (_iconic == iconic) return; // nothing to do +#ifdef DEBUG + printf("%sconifying window: 0x%lx\n", (iconic ? "I" : "Uni"), _window); +#endif + _iconic = iconic; if (_iconic) {