From: Dana Jansens Date: Mon, 10 Feb 2003 17:00:34 +0000 (+0000) Subject: focus the desktop when entering show-desktop-mode, and refocus what was focused befor... X-Git-Url: https://git.dogcows.com/gitweb?a=commitdiff_plain;h=5d47526b30ec8d9c98c047929431faf89e9fe3f2;p=chaz%2Fopenbox focus the desktop when entering show-desktop-mode, and refocus what was focused before when leaving --- diff --git a/src/screen.cc b/src/screen.cc index 3a064560..75d8e87e 100644 --- a/src/screen.cc +++ b/src/screen.cc @@ -884,10 +884,25 @@ void Screen::showDesktop(bool show) { if (show == _showing_desktop) return; // no change + // save the window focus, and restore it when leaving the show-desktop mode + static Window saved_focus = 0; + if (show) { + Client *c = openbox->focusedClient(); + if (c) saved_focus = c->window(); + } else { + Client *c = openbox->findClient(saved_focus); + if (c) c->focus(); + } + _showing_desktop = show; ClientList::iterator it, end = clients.end(); - for (it = clients.begin(); it != end; ++it) - (*it)->showhide(); + for (it = clients.begin(); it != end; ++it) { + if ((*it)->type() == Client::Type_Desktop) { + if (show) + (*it)->focus(); + } else + (*it)->showhide(); + } } void Screen::propertyHandler(const XPropertyEvent &e)