- OBClient *client = Openbox::instance->findClient(e.window);
-
- printf("Client: %lx\n", client);
-
- if (client) {
- printf("found client\n");
- // XXX: uniconify and/or unshade the window
- } else {
- Openbox::instance->screen(_info->getScreenNumber())->
- manageWindow(e.window);
- }
-}
-
-
-#include <stdio.h>
-void OBRootWindow::configureRequestHandler(const XConfigureRequestEvent &e)
-{
- OtkEventHandler::configureRequestHandler(e);
-
- // when configure requests come to the root window, just pass them on
- XWindowChanges xwc;
-
- xwc.x = e.x;
- xwc.y = e.y;
- xwc.width = e.width;
- xwc.height = e.height;
- xwc.border_width = e.border_width;
- xwc.sibling = e.above;
- xwc.stack_mode = e.detail;
-
- XConfigureWindow(otk::OBDisplay::display, e.window,
- e.value_mask, &xwc);
+ /*
+ 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);