(*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;
(*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;
setup_action_directional_focus_northwest
},
{
- "activate",
- action_activate,
- setup_action_focus
- },
- {
- "focus",
- action_focus,
- setup_action_focus
- },
- {
"unfocus",
action_unfocus,
setup_client_action
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,
setup_action_movefromedge_north
setup_action_growtoedge_east
},
{
- "breakchroot",
- action_break_chroot,
- NULL
- },
- {
"adddesktoplast",
action_add_desktop,
setup_action_addremove_desktop_last
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);
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)
moveresize_start(c, data->any.x, data->any.y, data->any.button, corner);
}
-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
dock_configure();
}
-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);