summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-01-09 04:26:32 +0000
committerDana Jansens <danakj@orodu.net>2003-01-09 04:26:32 +0000
commitb1739374a61d0c33270bafe84da9d787e79c0686 (patch)
treeb1d494f20b978c8613f19c550140f6fae3726bb4 /src
parente2274e0f0aaa34b1b12e5a7ef0c0c8b8d70264da (diff)
change what re-maprequest events do, just convert them to net_active_window messages. make net_active_window unshade/iconify
Diffstat (limited to 'src')
-rw-r--r--src/client.cc3
-rw-r--r--src/screen.cc20
2 files changed, 19 insertions, 4 deletions
diff --git a/src/client.cc b/src/client.cc
index 423316b0..07bf6f0b 100644
--- a/src/client.cc
+++ b/src/client.cc
@@ -914,6 +914,9 @@ void OBClient::clientMessageHandler(const XClientMessageEvent &e)
#ifdef DEBUG
printf("net_active_window for 0x%lx\n", _window);
#endif
+ if (_shaded)
+ shade(false);
+ // XXX: deiconify
focus();
Openbox::instance->screen(_screen)->restack(true, this); // raise
}
diff --git a/src/screen.cc b/src/screen.cc
index b16a75de..c650872e 100644
--- a/src/screen.cc
+++ b/src/screen.cc
@@ -789,10 +789,22 @@ void OBScreen::mapRequestHandler(const XMapRequestEvent &e)
OBClient *c = Openbox::instance->findClient(e.window);
if (c) {
- if (c->shaded())
- c->shade(false);
- // XXX: uniconify the window
- c->focus();
+ // send a net_active_window message
+ XEvent ce;
+ ce.xclient.type = ClientMessage;
+ ce.xclient.message_type =
+ Openbox::instance->property()->atom(otk::OBProperty::net_active_window);
+ ce.xclient.display = otk::OBDisplay::display;
+ ce.xclient.window = c->window();
+ ce.xclient.format = 32;
+ ce.xclient.data.l[0] = 0l;
+ ce.xclient.data.l[1] = 0l;
+ ce.xclient.data.l[2] = 0l;
+ ce.xclient.data.l[3] = 0l;
+ ce.xclient.data.l[4] = 0l;
+ XSendEvent(otk::OBDisplay::display, _info->rootWindow(), false,
+ SubstructureRedirectMask | SubstructureNotifyMask,
+ &ce);
} else
manageWindow(e.window);
}