all repos — openbox @ 5d47526b30ec8d9c98c047929431faf89e9fe3f2

openbox fork - make it a bit more like ryudo

focus the desktop when entering show-desktop-mode, and refocus what was focused before when leaving
Dana Jansens danakj@orodu.net
commit

5d47526b30ec8d9c98c047929431faf89e9fe3f2

parent

265cf6c9478860336816570a141198d9257a27a1

1 files changed, 17 insertions(+), 2 deletions(-)

jump to
M src/screen.ccsrc/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)