X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=7b8793fa8bc0e28aaa0a59e3d3c7bf943a7dc643;hb=382d37553d9dc7679464cf71aecf8590cc06a2cb;hp=1fa5e11f601538f45784631fffda7571078a5179;hpb=2a203eb5dcc628f6aacf86309e9fc5be185ae335;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index 1fa5e11f..7b8793fa 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -28,6 +28,7 @@ #include "config.h" #include "screen.h" #include "frame.h" +#include "grab.h" #include "menu.h" #include "menuframe.h" #include "keyboard.h" @@ -1081,7 +1082,10 @@ static void event_handle_client(ObClient *client, XEvent *e) if (config) { client_find_onscreen(client, &x, &y, w, h, FALSE); - client_configure_full(client, x, y, w, h, FALSE, TRUE); + client_configure(client, x, y, w, h, FALSE, TRUE); + + /* ignore enter events caused by these like ob actions do */ + event_ignore_queued_enters(); } break; } @@ -1175,6 +1179,9 @@ static void event_handle_client(ObClient *client, XEvent *e) client->window); client_set_state(client, e->xclient.data.l[0], e->xclient.data.l[1], e->xclient.data.l[2]); + + /* ignore enter events caused by these like ob actions do */ + event_ignore_queued_enters(); } else if (msgtype == prop_atoms.net_close_window) { ob_debug("net_close_window for 0x%lx\n", client->window); client_close(client); @@ -1258,7 +1265,11 @@ static void event_handle_client(ObClient *client, XEvent *e) e->xclient.data.l[0] & 1 << 9, y); client_convert_gravity(client, grav, &x, &y, w, h); client_find_onscreen(client, &x, &y, w, h, FALSE); + client_configure(client, x, y, w, h, FALSE, TRUE); + + /* ignore enter events caused by these like ob actions do */ + event_ignore_queued_enters(); } else if (msgtype == prop_atoms.net_restack_window) { if (e->xclient.data.l[0] != 2) { ob_debug_type(OB_DEBUG_APP_BUGS, @@ -1292,11 +1303,7 @@ static void event_handle_client(ObClient *client, XEvent *e) e->xclient.data.l[2], FALSE); /* send a synthetic ConfigureNotify, cuz this is supposed to be like a ConfigureRequest. */ - client_configure_full(client, client->area.x, - client->area.y, - client->area.width, - client->area.height, - FALSE, TRUE); + client_reconfigure(client); } else ob_debug_type(OB_DEBUG_APP_BUGS, "_NET_RESTACK_WINDOW sent for window %s " @@ -1693,7 +1700,7 @@ static gboolean focus_delay_func(gpointer data) event_curtime = d->time; if (focus_client != d->client) { - if (client_focus(d->client, FALSE) && config_focus_raise) + if (client_focus(d->client) && config_focus_raise) stacking_raise(CLIENT_AS_WINDOW(d->client)); } event_curtime = old;