X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Faction.c;h=5f8b306fb1591b8448de8190795bb04e8949eb18;hb=b99f9e6abd88d02cba0c631cd688c00e1c9905cd;hp=5f60019ecca45d2989fb07e16907170ef545212f;hpb=6f5292c87ece138a2b80d102ba0919b105b1839a;p=chaz%2Fopenbox diff --git a/openbox/action.c b/openbox/action.c index 5f60019e..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,10 +946,13 @@ 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; - ob_main_loop_queue_action(ob_main_loop, a); + /* interactive actions are not queued */ + a->func(&a->data); + } else + ob_main_loop_queue_action(ob_main_loop, a); } } } @@ -992,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); } @@ -1302,16 +1309,25 @@ 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 / 2) { - if (y - cy > ch / 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 + else if (y - cy < ch / 3) return prop_atoms.net_wm_moveresize_size_topright; + else + return prop_atoms.net_wm_moveresize_size_right; + } else if (x - cx < cw / 3) { + if (y - cy > ch / 3 * 2) + return prop_atoms.net_wm_moveresize_size_bottomleft; + else if (y - cy < ch / 3) + return prop_atoms.net_wm_moveresize_size_topleft; + else + return prop_atoms.net_wm_moveresize_size_left; } else { if (y - cy > ch / 2) - return prop_atoms.net_wm_moveresize_size_bottomleft; + return prop_atoms.net_wm_moveresize_size_bottom; else - return prop_atoms.net_wm_moveresize_size_topleft; + return prop_atoms.net_wm_moveresize_size_top; } } @@ -1369,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); @@ -1376,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,