X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Faction.c;h=5f8b306fb1591b8448de8190795bb04e8949eb18;hb=b99f9e6abd88d02cba0c631cd688c00e1c9905cd;hp=ddc7fea213bd9a33058570cdf23b11a436925ff5;hpb=8852ee21b0e1e9060f77a93e02139d71893db90b;p=chaz%2Fopenbox diff --git a/openbox/action.c b/openbox/action.c index ddc7fea2..5f8b306f 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -891,8 +891,8 @@ ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, if ((n = parse_find_node("dialog", node->xmlChildrenNode))) act->data.cycle.dialog = parse_bool(doc, n); } + INTERACTIVE_LIMIT(act, uact); } - INTERACTIVE_LIMIT(act, uact); g_free(actname); } return act; @@ -946,7 +946,8 @@ void action_run_list(GSList *acts, ObClient *c, ObFrameContext context, a->data.inter.cancel = cancel; a->data.inter.final = done; if (!(cancel || done)) - keyboard_interactive_grab(state, a->data.any.c, a); + if (!keyboard_interactive_grab(state, a->data.any.c, a)) + continue; /* interactive actions are not queued */ a->func(&a->data); @@ -994,6 +995,10 @@ void action_activate(union ActionData *data) void action_focus(union ActionData *data) { + /* if using focus_delay, stop the timer now so that focus doesn't go moving + on us */ + event_halt_focus_delay(); + client_focus(data->client.any.c); } @@ -1304,8 +1309,8 @@ void action_toggle_decorations(union ActionData *data) static guint32 pick_corner(int x, int y, int cx, int cy, int cw, int ch) { - if (x - cx > cw / 3 * 2) { - if (y - cy > ch / 3 * 2) + if ((cw / 3 < 1) || (x - cx > cw / 3 * 2)) { + if ((ch / 3 < 1) || (y - cy > ch / 3 * 2)) return prop_atoms.net_wm_moveresize_size_bottomright; else if (y - cy < ch / 3) return prop_atoms.net_wm_moveresize_size_topright; @@ -1380,6 +1385,10 @@ void action_showmenu(union ActionData *data) void action_cycle_windows(union ActionData *data) { + /* if using focus_delay, stop the timer now so that focus doesn't go moving + on us */ + event_halt_focus_delay(); + focus_cycle(data->cycle.forward, data->cycle.linear, data->cycle.dialog, data->cycle.inter.final, data->cycle.inter.cancel); @@ -1387,6 +1396,10 @@ void action_cycle_windows(union ActionData *data) void action_directional_focus(union ActionData *data) { + /* if using focus_delay, stop the timer now so that focus doesn't go moving + on us */ + event_halt_focus_delay(); + focus_directional_cycle(data->interdiraction.direction, data->interdiraction.dialog, data->interdiraction.inter.final,