From: Mikael Magnusson Date: Thu, 28 Feb 2008 01:23:25 +0000 (+0100) Subject: Lock some stuff in event.c too. X-Git-Url: http://git.openbox.org/?a=commitdiff_plain;h=131ba24f77cde58800464a90892dda1e6a1f6742;p=mikachu%2Fopenbox.git Lock some stuff in event.c too. --- diff --git a/openbox/event.c b/openbox/event.c index 243f2078..72f47fc6 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -1163,6 +1163,9 @@ static void event_handle_client(ObClient *client, XEvent *e) } case ConfigureRequest: { + if (client->locked) + break; + /* dont compress these unless you're going to watch for property notifies in between (these can change what the configure would do to the window). @@ -1401,7 +1404,8 @@ static void event_handle_client(ObClient *client, XEvent *e) msgtype = e->xclient.message_type; if (msgtype == OBT_PROP_ATOM(WM_CHANGE_STATE)) { if (!more_client_message_event(client->window, msgtype)) - client_set_wm_state(client, e->xclient.data.l[0]); + if (!client->locked) + client_set_wm_state(client, e->xclient.data.l[0]); } else if (msgtype == OBT_PROP_ATOM(NET_WM_DESKTOP)) { if (!more_client_message_event(client->window, msgtype) && ((unsigned)e->xclient.data.l[0] < screen_num_desktops || @@ -1421,16 +1425,19 @@ static void event_handle_client(ObClient *client, XEvent *e) e->xclient.data.l[1], e->xclient.data.l[2], client->window); - /* ignore enter events caused by these like ob actions do */ - if (!config_focus_under_mouse) - ignore_start = event_start_ignore_all_enters(); - client_set_state(client, e->xclient.data.l[0], - e->xclient.data.l[1], e->xclient.data.l[2]); - if (!config_focus_under_mouse) - event_end_ignore_all_enters(ignore_start); + if (!client->locked) { + /* ignore enter events caused by these like ob actions do */ + if (!config_focus_under_mouse) + ignore_start = event_start_ignore_all_enters(); + client_set_state(client, e->xclient.data.l[0], + e->xclient.data.l[1], e->xclient.data.l[2]); + if (!config_focus_under_mouse) + event_end_ignore_all_enters(ignore_start); + } } else if (msgtype == OBT_PROP_ATOM(NET_CLOSE_WINDOW)) { ob_debug("net_close_window for 0x%lx", client->window); - client_close(client); + if (!client->locked) + client_close(client); } else if (msgtype == OBT_PROP_ATOM(NET_ACTIVE_WINDOW)) { ob_debug("net_active_window for 0x%lx source=%s", client->window, @@ -1504,6 +1511,9 @@ static void event_handle_client(ObClient *client, XEvent *e) if (moveresize_client) moveresize_end(TRUE); } else if (msgtype == OBT_PROP_ATOM(NET_MOVERESIZE_WINDOW)) { + if (client->locked) + break; + gint ograv, x, y, w, h; ograv = client->gravity;