action_iconify,
setup_client_action
},
+ {
+ "focustobottom",
+ action_focus_order_to_bottom,
+ setup_client_action
+ },
{
"raiselower",
action_raiselower,
action_move_relative_vert,
setup_client_action
},
+ {
+ "movetocenter",
+ action_move_to_center,
+ setup_client_action
+ },
{
"resizerelativehorz",
action_resize_relative_horz,
action_toggle_maximize_vert,
setup_client_action
},
+ {
+ "togglefullscreen",
+ action_toggle_fullscreen,
+ setup_client_action
+ },
{
"sendtodesktop",
action_send_to_desktop,
} else if (act->func == action_directional_focus) {
if ((n = parse_find_node("dialog", node->xmlChildrenNode)))
act->data.cycle.dialog = parse_bool(doc, n);
+ } else if (act->func == action_raise ||
+ act->func == action_lower ||
+ act->func == action_raiselower ||
+ act->func == action_shadelower ||
+ act->func == action_unshaderaise) {
+ if ((n = parse_find_node("group", node->xmlChildrenNode)))
+ act->data.stacking.group = parse_bool(doc, n);
}
INTERACTIVE_LIMIT(act, uact);
}
void action_iconify(union ActionData *data)
{
+ client_action_start(data);
client_iconify(data->client.any.c, TRUE, TRUE);
+ client_action_end(data);
+}
+
+void action_focus_order_to_bottom(union ActionData *data)
+{
+ focus_order_to_bottom(data->client.any.c);
}
void action_raiselower(union ActionData *data)
void action_raise(union ActionData *data)
{
client_action_start(data);
- stacking_raise(CLIENT_AS_WINDOW(data->client.any.c));
+ stacking_raise(CLIENT_AS_WINDOW(data->client.any.c), data->stacking.group);
client_action_end(data);
}
void action_lower(union ActionData *data)
{
client_action_start(data);
- stacking_lower(CLIENT_AS_WINDOW(data->client.any.c));
+ stacking_lower(CLIENT_AS_WINDOW(data->client.any.c), data->stacking.group);
client_action_end(data);
}
client_action_end(data);
}
+void action_move_to_center(union ActionData *data)
+{
+ ObClient *c = data->client.any.c;
+ Rect *area;
+ area = screen_area_monitor(c->desktop, 0);
+ client_action_start(data);
+ client_move(c, area->width / 2 - c->area.width / 2,
+ area->height / 2 - c->area.height / 2);
+ client_action_end(data);
+}
+
void action_resize_relative_horz(union ActionData *data)
{
ObClient *c = data->relative.any.c;
client_action_end(data);
}
+void action_toggle_fullscreen(union ActionData *data)
+{
+ client_action_start(data);
+ client_fullscreen(data->client.any.c,
+ !(data->client.any.c->fullscreen), TRUE);
+ client_action_end(data);
+}
+
void action_send_to_desktop(union ActionData *data)
{
ObClient *c = data->sendto.any.c;
static guint32 pick_corner(gint x, gint y, gint cx, gint cy, gint cw, gint ch)
{
- 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;
- 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;
+ if (config_resize_four_corners) {
+ if (x - cx > cw / 2) {
+ if (y - cy > ch / 2)
+ return prop_atoms.net_wm_moveresize_size_bottomright;
+ else
+ return prop_atoms.net_wm_moveresize_size_topright;
+ } else {
+ if (y - cy > ch / 2)
+ return prop_atoms.net_wm_moveresize_size_bottomleft;
+ else
+ return prop_atoms.net_wm_moveresize_size_topleft;
+ }
} else {
- if (y - cy > ch / 2)
- return prop_atoms.net_wm_moveresize_size_bottom;
- else
- return prop_atoms.net_wm_moveresize_size_top;
+ if (x - cx > cw * 2 / 3) {
+ if (y - cy > ch * 2 / 3)
+ return prop_atoms.net_wm_moveresize_size_bottomright;
+ 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 * 2 / 3)
+ 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 / 3)
+ return prop_atoms.net_wm_moveresize_size_bottom;
+ else if (y - cy < ch / 3)
+ return prop_atoms.net_wm_moveresize_size_top;
+ else
+ return prop_atoms.net_wm_moveresize_move;
}
}