handle multiple maprequests graciously
This commit is contained in:
parent
08a70966ee
commit
e7e2a69fd0
1 changed files with 8 additions and 9 deletions
|
@ -122,6 +122,9 @@ void event_process(XEvent *e)
|
||||||
|
|
||||||
/* pick a window */
|
/* pick a window */
|
||||||
switch (e->type) {
|
switch (e->type) {
|
||||||
|
case MapRequest:
|
||||||
|
window = e->xmap.window;
|
||||||
|
break;
|
||||||
case UnmapNotify:
|
case UnmapNotify:
|
||||||
window = e->xunmap.window;
|
window = e->xunmap.window;
|
||||||
break;
|
break;
|
||||||
|
@ -248,12 +251,15 @@ void event_process(XEvent *e)
|
||||||
}
|
}
|
||||||
|
|
||||||
client = g_hash_table_lookup(client_map, (gpointer)window);
|
client = g_hash_table_lookup(client_map, (gpointer)window);
|
||||||
|
g_message("EVENT: 0x%lx -> 0x%lx", window, client);
|
||||||
|
|
||||||
/* deal with it in the kernel */
|
/* deal with it in the kernel */
|
||||||
if (client) {
|
if (client)
|
||||||
event_handle_client(client, e);
|
event_handle_client(client, e);
|
||||||
} else if (window == ob_root)
|
else if (window == ob_root)
|
||||||
event_handle_root(e);
|
event_handle_root(e);
|
||||||
|
else if (e->type == MapRequest)
|
||||||
|
client_manage(window);
|
||||||
else if (e->type == ConfigureRequest) {
|
else if (e->type == ConfigureRequest) {
|
||||||
/* unhandled configure requests must be used to configure the
|
/* unhandled configure requests must be used to configure the
|
||||||
window directly */
|
window directly */
|
||||||
|
@ -286,10 +292,6 @@ static void event_handle_root(XEvent *e)
|
||||||
Atom msgtype;
|
Atom msgtype;
|
||||||
|
|
||||||
switch(e->type) {
|
switch(e->type) {
|
||||||
case MapRequest:
|
|
||||||
g_message("MapRequest on root");
|
|
||||||
client_manage(e->xmap.window);
|
|
||||||
break;
|
|
||||||
case ClientMessage:
|
case ClientMessage:
|
||||||
if (e->xclient.format != 32) break;
|
if (e->xclient.format != 32) break;
|
||||||
|
|
||||||
|
@ -436,9 +438,6 @@ static void event_handle_client(Client *client, XEvent *e)
|
||||||
client_unmanage(client);
|
client_unmanage(client);
|
||||||
break;
|
break;
|
||||||
case MapRequest:
|
case MapRequest:
|
||||||
/* we shouldn't be able to get this unless we're iconic */
|
|
||||||
g_assert(client->iconic);
|
|
||||||
|
|
||||||
if (screen_showing_desktop)
|
if (screen_showing_desktop)
|
||||||
screen_show_desktop(FALSE);
|
screen_show_desktop(FALSE);
|
||||||
client_iconify(client, FALSE, TRUE);
|
client_iconify(client, FALSE, TRUE);
|
||||||
|
|
Loading…
Reference in a new issue