X-Git-Url: https://git.brokenzipper.com/gitweb?a=blobdiff_plain;f=openbox%2Faction.c;h=5b1fcd6c20e8b4cfa01d2fa6e3c160cacdad3899;hb=06ed8ab6c03337710acba8d6a70781456e979384;hp=9b8653dfd7c817dde11e86b4d964decec6263a43;hpb=38268dc917ac9e59d9e8ef87825c9489ced77e95;p=chaz%2Fopenbox diff --git a/openbox/action.c b/openbox/action.c index 9b8653df..5b1fcd6c 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -39,36 +39,7 @@ #include -static gulong ignore_start = 0; -static void client_action_start(union ActionData *data) -{ - ignore_start = event_start_ignore_all_enters(); -} - -static void client_action_end(union ActionData *data, gboolean allow_enters) -{ - if (config_focus_follow) - if (data->any.context != OB_FRAME_CONTEXT_CLIENT) { - if (!data->any.button && data->any.c && !allow_enters) { - event_end_ignore_all_enters(ignore_start); - } else { - ObClient *c; - - /* usually this is sorta redundant, but with a press action - that moves windows our from under the cursor, the enter - event will come as a GrabNotify which is ignored, so this - makes a fake enter event - */ - if ((c = client_under_pointer()) && c != data->any.c) { - ob_debug_type(OB_DEBUG_FOCUS, - "Generating fake enter because we did a " - "mouse-event action"); - event_enter_client(c); - } - } - } -} typedef struct { @@ -318,28 +289,6 @@ void setup_action_desktop_down(ObAction **a, ObUserAction uact) (*a)->data.desktopdir.wrap = TRUE; } -void setup_action_cycle_windows_next(ObAction **a, ObUserAction uact) -{ - (*a)->data.cycle.inter.any.interactive = TRUE; - (*a)->data.cycle.linear = FALSE; - (*a)->data.cycle.forward = TRUE; - (*a)->data.cycle.dialog = TRUE; - (*a)->data.cycle.dock_windows = FALSE; - (*a)->data.cycle.desktop_windows = FALSE; - (*a)->data.cycle.all_desktops = FALSE; -} - -void setup_action_cycle_windows_previous(ObAction **a, ObUserAction uact) -{ - (*a)->data.cycle.inter.any.interactive = TRUE; - (*a)->data.cycle.linear = FALSE; - (*a)->data.cycle.forward = FALSE; - (*a)->data.cycle.dialog = TRUE; - (*a)->data.cycle.dock_windows = FALSE; - (*a)->data.cycle.desktop_windows = FALSE; - (*a)->data.cycle.all_desktops = FALSE; -} - void setup_action_movefromedge_north(ObAction **a, ObUserAction uact) { (*a)->data.diraction.any.client_action = OB_CLIENT_ACTION_ALWAYS; @@ -438,16 +387,6 @@ void setup_action_bottom_layer(ObAction **a, ObUserAction uact) (*a)->data.layer.layer = -1; } -void setup_action_move(ObAction **a, ObUserAction uact) -{ - (*a)->data.moveresize.any.client_action = OB_CLIENT_ACTION_ALWAYS; - (*a)->data.moveresize.keyboard = - (uact == OB_USER_ACTION_NONE || - uact == OB_USER_ACTION_KEYBOARD_KEY || - uact == OB_USER_ACTION_MENU_SELECTION); - (*a)->data.moveresize.corner = 0; -} - void setup_action_resize(ObAction **a, ObUserAction uact) { (*a)->data.moveresize.any.client_action = OB_CLIENT_ACTION_ALWAYS; @@ -468,11 +407,6 @@ void setup_action_addremove_desktop_last(ObAction **a, ObUserAction uact) (*a)->data.addremovedesktop.current = FALSE; } -void setup_action_focus(ObAction **a, ObUserAction uact) -{ - (*a)->data.any.client_action = OB_CLIENT_ACTION_OPTIONAL; -} - void setup_client_action(ObAction **a, ObUserAction uact) { (*a)->data.any.client_action = OB_CLIENT_ACTION_ALWAYS; @@ -520,51 +454,6 @@ ActionString actionstrings[] = action_directional_focus, setup_action_directional_focus_northwest }, - { - "activate", - action_activate, - setup_action_focus - }, - { - "focus", - action_focus, - setup_action_focus - }, - { - "unfocus", - action_unfocus, - setup_client_action - }, - { - "iconify", - action_iconify, - setup_client_action - }, - { - "focustobottom", - action_focus_order_to_bottom, - setup_client_action - }, - { - "raiselower", - action_raiselower, - setup_client_action - }, - { - "raise", - action_raise, - setup_client_action - }, - { - "lower", - action_lower, - setup_client_action - }, - { - "close", - action_close, - setup_client_action - }, { "kill", action_kill, @@ -635,21 +524,6 @@ ActionString actionstrings[] = action_resize_relative, setup_client_action }, - { - "maximizefull", - action_maximize_full, - setup_client_action - }, - { - "unmaximizefull", - action_unmaximize_full, - setup_client_action - }, - { - "togglemaximizefull", - action_toggle_maximize_full, - setup_client_action - }, { "maximizehorz", action_maximize_horz, @@ -680,11 +554,6 @@ ActionString actionstrings[] = action_toggle_maximize_vert, setup_client_action }, - { - "togglefullscreen", - action_toggle_fullscreen, - setup_client_action - }, { "sendtodesktop", action_send_to_desktop, @@ -760,11 +629,6 @@ ActionString actionstrings[] = action_toggle_decorations, setup_client_action }, - { - "move", - action_move, - setup_action_move - }, { "resize", action_resize, @@ -775,41 +639,11 @@ ActionString actionstrings[] = action_toggle_dockautohide, NULL }, - { - "toggleshowdesktop", - action_toggle_show_desktop, - NULL - }, - { - "showdesktop", - action_show_desktop, - NULL - }, - { - "unshowdesktop", - action_unshow_desktop, - NULL - }, { "desktoplast", action_desktop_last, NULL }, - { - "reconfigure", - action_reconfigure, - NULL - }, - { - "restart", - action_restart, - NULL - }, - { - "exit", - action_exit, - NULL - }, { "sendtotoplayer", action_send_to_layer, @@ -835,16 +669,6 @@ ActionString actionstrings[] = action_toggle_layer, setup_action_bottom_layer }, - { - "nextwindow", - action_cycle_windows, - setup_action_cycle_windows_next - }, - { - "previouswindow", - action_cycle_windows, - setup_action_cycle_windows_previous - }, { "movefromedgenorth", action_movetoedge, @@ -905,11 +729,6 @@ ActionString actionstrings[] = action_growtoedge, setup_action_growtoedge_east }, - { - "breakchroot", - action_break_chroot, - NULL - }, { "adddesktoplast", action_add_desktop, @@ -1027,21 +846,6 @@ ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, if ((n = parse_find_node("dialog", node->xmlChildrenNode))) act->data.sendtodir.inter.any.interactive = parse_bool(doc, n); - } else if (act->func == action_activate) { - if ((n = parse_find_node("here", node->xmlChildrenNode))) - act->data.activate.here = parse_bool(doc, n); - } else if (act->func == action_cycle_windows) { - if ((n = parse_find_node("linear", node->xmlChildrenNode))) - act->data.cycle.linear = parse_bool(doc, n); - if ((n = parse_find_node("dialog", node->xmlChildrenNode))) - act->data.cycle.dialog = parse_bool(doc, n); - if ((n = parse_find_node("panels", node->xmlChildrenNode))) - act->data.cycle.dock_windows = parse_bool(doc, n); - if ((n = parse_find_node("desktop", node->xmlChildrenNode))) - act->data.cycle.desktop_windows = parse_bool(doc, n); - if ((n = parse_find_node("allDesktops", - node->xmlChildrenNode))) - act->data.cycle.all_desktops = parse_bool(doc, n); } else if (act->func == action_directional_focus) { if ((n = parse_find_node("dialog", node->xmlChildrenNode))) act->data.interdiraction.dialog = parse_bool(doc, n); @@ -1079,12 +883,6 @@ ObAction *action_parse(ObParseInst *i, xmlDocPtr doc, xmlNodePtr node, prop_atoms.net_wm_moveresize_size_bottomright; g_free(s); } - } else if (act->func == action_raise || - act->func == action_lower || - act->func == action_raiselower || - act->func == action_shadelower || - act->func == action_unshaderaise) { - } INTERACTIVE_LIMIT(act, uact); } g_free(actname); @@ -1192,82 +990,6 @@ void action_run_string(const gchar *name, struct _ObClient *c, Time time) action_run(l, c, 0, time); } -void action_activate(union ActionData *data) -{ - if (data->client.any.c) { - if (!data->any.button || client_mouse_focusable(data->client.any.c) || - (data->any.context != OB_FRAME_CONTEXT_CLIENT && - data->any.context != OB_FRAME_CONTEXT_FRAME)) - { - /* if using focus_delay, stop the timer now so that focus doesn't - go moving on us */ - event_halt_focus_delay(); - - client_activate(data->activate.any.c, data->activate.here, TRUE); - } - } else { - /* focus action on something other than a client, make keybindings - work for this openbox instance, but don't focus any specific client - */ - focus_nothing(); - } -} - -void action_focus(union ActionData *data) -{ - if (data->client.any.c) { - if (!data->any.button || client_mouse_focusable(data->client.any.c) || - (data->any.context != OB_FRAME_CONTEXT_CLIENT && - data->any.context != OB_FRAME_CONTEXT_FRAME)) - { - /* 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); - } - } else { - /* focus action on something other than a client, make keybindings - work for this openbox instance, but don't focus any specific client - */ - focus_nothing(); - } -} - -void action_unfocus (union ActionData *data) -{ - if (data->client.any.c == focus_client) - focus_fallback(FALSE, FALSE, TRUE); -} - -void action_iconify(union ActionData *data) -{ - client_action_start(data); - client_iconify(data->client.any.c, TRUE, TRUE, FALSE); - client_action_end(data, config_focus_under_mouse); -} - -void action_focus_order_to_bottom(union ActionData *data) -{ - focus_order_to_bottom(data->client.any.c); -} - -void action_raiselower(union ActionData *data) -{ - ObClient *c = data->client.any.c; - - client_action_start(data); - stacking_restack_request(c, NULL, Opposite); - client_action_end(data, config_focus_under_mouse); -} - -void action_raise(union ActionData *data) -{ - client_action_start(data); - stacking_raise(CLIENT_AS_WINDOW(data->client.any.c)); - client_action_end(data, config_focus_under_mouse); -} - void action_unshaderaise(union ActionData *data) { if (data->client.any.c->shaded) @@ -1284,18 +1006,6 @@ void action_shadelower(union ActionData *data) action_shade(data); } -void action_lower(union ActionData *data) -{ - client_action_start(data); - stacking_lower(CLIENT_AS_WINDOW(data->client.any.c)); - client_action_end(data, config_focus_under_mouse); -} - -void action_close(union ActionData *data) -{ - client_close(data->client.any.c); -} - void action_kill(union ActionData *data) { client_kill(data->client.any.c); @@ -1417,66 +1127,6 @@ void action_resize_relative(union ActionData *data) client_action_end(data, FALSE); } -void action_maximize_full(union ActionData *data) -{ - client_action_start(data); - client_maximize(data->client.any.c, TRUE, 0); - client_action_end(data, config_focus_under_mouse); -} - -void action_unmaximize_full(union ActionData *data) -{ - client_action_start(data); - client_maximize(data->client.any.c, FALSE, 0); - client_action_end(data, config_focus_under_mouse); -} - -void action_toggle_maximize_full(union ActionData *data) -{ - client_action_start(data); - client_maximize(data->client.any.c, - !(data->client.any.c->max_horz || - data->client.any.c->max_vert), - 0); - client_action_end(data, config_focus_under_mouse); -} - -void action_maximize_horz(union ActionData *data) -{ - client_action_start(data); - client_maximize(data->client.any.c, TRUE, 1); - client_action_end(data, config_focus_under_mouse); -} - -void action_unmaximize_horz(union ActionData *data) -{ - client_action_start(data); - client_maximize(data->client.any.c, FALSE, 1); - client_action_end(data, config_focus_under_mouse); -} - -void action_toggle_maximize_horz(union ActionData *data) -{ - client_action_start(data); - client_maximize(data->client.any.c, - !data->client.any.c->max_horz, 1); - client_action_end(data, config_focus_under_mouse); -} - -void action_maximize_vert(union ActionData *data) -{ - client_action_start(data); - client_maximize(data->client.any.c, TRUE, 2); - client_action_end(data, config_focus_under_mouse); -} - -void action_unmaximize_vert(union ActionData *data) -{ - client_action_start(data); - client_maximize(data->client.any.c, FALSE, 2); - client_action_end(data, config_focus_under_mouse); -} - void action_toggle_maximize_vert(union ActionData *data) { client_action_start(data); @@ -1485,13 +1135,6 @@ void action_toggle_maximize_vert(union ActionData *data) client_action_end(data, config_focus_under_mouse); } -void action_toggle_fullscreen(union ActionData *data) -{ - client_action_start(data); - client_fullscreen(data->client.any.c, !(data->client.any.c->fullscreen)); - client_action_end(data, config_focus_under_mouse); -} - void action_send_to_desktop(union ActionData *data) { ObClient *c = data->sendto.any.c; @@ -1684,19 +1327,6 @@ static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch, #undef d } -void action_move(union ActionData *data) -{ - ObClient *c = data->moveresize.any.c; - guint32 corner; - - if (data->moveresize.keyboard) - corner = prop_atoms.net_wm_moveresize_move_keyboard; - else - corner = prop_atoms.net_wm_moveresize_move; - - moveresize_start(c, data->any.x, data->any.y, data->any.button, corner); -} - void action_resize(union ActionData *data) { ObClient *c = data->moveresize.any.c; @@ -1721,36 +1351,6 @@ void action_resize(union ActionData *data) moveresize_start(c, data->any.x, data->any.y, data->any.button, corner); } -void action_reconfigure(union ActionData *data) -{ - ob_reconfigure(); -} - -void action_restart(union ActionData *data) -{ - ob_restart_other(data->execute.path); -} - -void action_exit(union ActionData *data) -{ - ob_exit(0); -} - -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.all_desktops, - data->cycle.dock_windows, - data->cycle.desktop_windows, - data->cycle.linear, data->any.interactive, - data->cycle.dialog, - data->cycle.inter.final, data->cycle.inter.cancel); -} - void action_directional_focus(union ActionData *data) { /* if using focus_delay, stop the timer now so that focus doesn't go moving @@ -1895,27 +1495,6 @@ void action_toggle_dockautohide(union ActionData *data) dock_configure(); } -void action_toggle_show_desktop(union ActionData *data) -{ - screen_show_desktop(!screen_showing_desktop, NULL); -} - -void action_show_desktop(union ActionData *data) -{ - screen_show_desktop(TRUE, NULL); -} - -void action_unshow_desktop(union ActionData *data) -{ - screen_show_desktop(FALSE, NULL); -} - -void action_break_chroot(union ActionData *data) -{ - /* break out of one chroot */ - keyboard_reset_chains(1); -} - void action_add_desktop(union ActionData *data) { client_action_start(data);