X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=src%2Frootwindow.cc;h=78017dd37ad4d92087844e8ff48615753348f132;hb=cc39863363f6c424a1d5f3790ef182b52b69a53e;hp=771cc79903abfeddba5fcf3d503031f9abec2d51;hpb=8d5bd298540b98eb10072c5ee281c64f221ce9a6;p=chaz%2Fopenbox diff --git a/src/rootwindow.cc b/src/rootwindow.cc index 771cc799..78017dd3 100644 --- a/src/rootwindow.cc +++ b/src/rootwindow.cc @@ -7,6 +7,7 @@ #include "rootwindow.hh" #include "openbox.hh" #include "screen.hh" +#include "client.hh" #include "otk/display.hh" namespace ob { @@ -102,17 +103,26 @@ void OBRootWindow::setDesktopName(int i, const std::string &name) void OBRootWindow::mapRequestHandler(const XMapRequestEvent &e) { + otk::OtkEventHandler::mapRequestHandler(e); + #ifdef DEBUG printf("MapRequest for 0x%lx\n", e.window); #endif // DEBUG - OBClient *client = Openbox::instance->findClient(e.window); - - if (client) { - // XXX: uniconify and/or unshade the window - } else { + /* + MapRequest events come here even after the window exists instead of going + right to the client window, because of how they are sent and their struct + layout. + */ + OBClient *c = Openbox::instance->findClient(e.window); + + if (c) { + if (c->shaded()) + c->shade(false); + // XXX: uniconify the window + c->focus(); + } else Openbox::instance->screen(_info->screen())->manageWindow(e.window); - } } }