X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fevent.c;h=44ae7b0a74a3ebaf400cc045830f25a9ec626958;hb=97821223393cdebd3eb3fdfcc6d0dcf7502a62d7;hp=ff21918be9c162d049d1a437b93e39f7eb38c791;hpb=f289adf653955bc647ac32ad7945509b2a1acea9;p=chaz%2Fopenbox diff --git a/openbox/event.c b/openbox/event.c index ff21918b..44ae7b0a 100644 --- a/openbox/event.c +++ b/openbox/event.c @@ -43,7 +43,6 @@ #include "translate.h" #include -#include #include #include @@ -504,6 +503,7 @@ static void event_process(const XEvent *ec, gpointer data) frame_adjust_focus(client->frame, TRUE); focus_set_client(client); client_calc_layer(client); + client_bring_helper_windows(client); } } else if (e->type == FocusOut) { gboolean nomove = FALSE; @@ -709,8 +709,15 @@ static void event_handle_client(ObClient *client, XEvent *e) case ButtonPress: case ButtonRelease: /* Wheel buttons don't draw because they are an instant click, so it - is a waste of resources to go drawing it. */ - if (!(e->xbutton.button == 4 || e->xbutton.button == 5)) { + is a waste of resources to go drawing it. + if the user is doing an intereactive thing, or has a menu open then + the mouse is grabbed (possibly) and if we get these events we don't + want to deal with them + */ + if (!(e->xbutton.button == 4 || e->xbutton.button == 5) && + !keyboard_interactively_grabbed() && + !menu_frame_visible) + { con = frame_context(client, e->xbutton.window); con = mouse_button_frame_context(con, e->xbutton.button); switch (con) { @@ -1039,9 +1046,10 @@ static void event_handle_client(ObClient *client, XEvent *e) (e->xclient.data.l[0] == 2 ? "user" : "INVALID")))); /* XXX make use of data.l[2] !? */ event_curtime = e->xclient.data.l[1]; - ob_debug_type(OB_DEBUG_APP_BUGS, - "_NET_ACTIVE_WINDOW message for window %s is " - "missing a timestamp\n", client->title); + if (event_curtime == 0) + ob_debug_type(OB_DEBUG_APP_BUGS, + "_NET_ACTIVE_WINDOW message for window %s is " + "missing a timestamp\n", client->title); client_activate(client, FALSE, (e->xclient.data.l[0] == 0 || e->xclient.data.l[0] == 2)); @@ -1167,10 +1175,6 @@ static void event_handle_client(ObClient *client, XEvent *e) msgtype == prop_atoms.net_wm_icon_name || msgtype == prop_atoms.wm_icon_name) { client_update_title(client); - } else if (msgtype == prop_atoms.wm_command) { - client_update_command(client); - } else if (msgtype == prop_atoms.wm_class) { - client_update_class(client); } else if (msgtype == prop_atoms.wm_protocols) { client_update_protocols(client); client_setup_decor_and_functions(client); @@ -1192,9 +1196,6 @@ static void event_handle_client(ObClient *client, XEvent *e) client_update_sync_request_counter(client); } #endif - else if (msgtype == prop_atoms.sm_client_id) { - client_update_sm_client_id(client); - } case ColormapNotify: client_update_colormap(client, e->xcolormap.colormap); break;