summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
authorDana Jansens <danakj@orodu.net>2003-03-23 19:39:20 +0000
committerDana Jansens <danakj@orodu.net>2003-03-23 19:39:20 +0000
commite7e2a69fd0ed5073a57ce2974892ad5cf97f7faa (patch)
tree579c3224480eb531a6512c63141cfa28aeee5604 /openbox
parent08a70966ee8fdec4204ab1ca9aed1371b1c828d0 (diff)
handle multiple maprequests graciously
Diffstat (limited to 'openbox')
-rw-r--r--openbox/event.c17
1 files changed, 8 insertions, 9 deletions
diff --git a/openbox/event.c b/openbox/event.c
index 97e1412f..6548d83e 100644
--- a/openbox/event.c
+++ b/openbox/event.c
@@ -122,6 +122,9 @@ void event_process(XEvent *e)
/* pick a window */
switch (e->type) {
+ case MapRequest:
+ window = e->xmap.window;
+ break;
case UnmapNotify:
window = e->xunmap.window;
break;
@@ -248,12 +251,15 @@ void event_process(XEvent *e)
}
client = g_hash_table_lookup(client_map, (gpointer)window);
+ g_message("EVENT: 0x%lx -> 0x%lx", window, client);
/* deal with it in the kernel */
- if (client) {
+ if (client)
event_handle_client(client, e);
- } else if (window == ob_root)
+ else if (window == ob_root)
event_handle_root(e);
+ else if (e->type == MapRequest)
+ client_manage(window);
else if (e->type == ConfigureRequest) {
/* unhandled configure requests must be used to configure the
window directly */
@@ -286,10 +292,6 @@ static void event_handle_root(XEvent *e)
Atom msgtype;
switch(e->type) {
- case MapRequest:
- g_message("MapRequest on root");
- client_manage(e->xmap.window);
- break;
case ClientMessage:
if (e->xclient.format != 32) break;
@@ -436,9 +438,6 @@ static void event_handle_client(Client *client, XEvent *e)
client_unmanage(client);
break;
case MapRequest:
- /* we shouldn't be able to get this unless we're iconic */
- g_assert(client->iconic);
-
if (screen_showing_desktop)
screen_show_desktop(FALSE);
client_iconify(client, FALSE, TRUE);