X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Faction.c;h=0a2d2b627b890346b50ac5991317f58f552a1c80;hb=9451205cf172d088948d40999e85ad07c3d430dd;hp=3f43a238ea6ad7abb51fe79bd1836a7131e00f43;hpb=b7827484ef77dc0a62a99da3bc067f6e1950b546;p=chaz%2Fopenbox diff --git a/openbox/action.c b/openbox/action.c index 3f43a238..0a2d2b62 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -38,19 +38,16 @@ #include -inline void client_action_start(union ActionData *data) +static void client_action_start(union ActionData *data) { - if (config_focus_follow) - if (data->any.context != OB_FRAME_CONTEXT_CLIENT && !data->any.button) - grab_pointer(FALSE, FALSE, OB_CURSOR_NONE); } -inline void client_action_end(union ActionData *data) +static void client_action_end(union ActionData *data) { if (config_focus_follow) if (data->any.context != OB_FRAME_CONTEXT_CLIENT) { if (!data->any.button) { - ungrab_pointer(); + event_ignore_queued_enters(); } else { ObClient *c; @@ -1141,9 +1138,15 @@ void action_run_list(GSList *acts, ObClient *c, ObFrameContext context, /* XXX UGLY HACK race with motion event starting a move and the button release gettnig processed first. answer: don't queue - moveresize starts. UGLY HACK XXX */ + moveresize starts. UGLY HACK XXX + + XXX ALSO don't queue showmenu events, because on button press + events we need to know if a mouse grab is going to take place, + and set the button to 0, so that later motion events don't think + that a drag is going on. since showmenu grabs the pointer.. + */ if (a->data.any.interactive || a->func == action_move || - a->func == action_resize) + a->func == action_resize || a->func == action_showmenu) { /* interactive actions are not queued */ a->func(&a->data); @@ -1309,7 +1312,7 @@ void action_focus(union ActionData *data) void action_unfocus (union ActionData *data) { if (data->client.any.c == focus_client) - focus_fallback(TRUE); + focus_fallback(FALSE); } void action_iconify(union ActionData *data)