#include "rootwindow.hh"
#include "openbox.hh"
#include "screen.hh"
+#include "client.hh"
#include "otk/display.hh"
namespace ob {
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);
- }
}
}