add the move action
@@ -158,10 +158,12 @@ openbox/actions/all.c \
openbox/actions/all.h \ openbox/actions/activate.c \ openbox/actions/breakchroot.c \ + openbox/actions/close.c \ openbox/actions/cyclewindows.c \ openbox/actions/debug.c \ openbox/actions/execute.c \ openbox/actions/exit.c \ + openbox/actions/move.c \ openbox/actions/reconfigure.c \ openbox/actions/restart.c \ openbox/actions/showdesktop.c \
@@ -416,16 +416,6 @@ (*a)->data.layer.any.client_action = OB_CLIENT_ACTION_ALWAYS;
(*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;@@ -499,11 +489,6 @@ action_unfocus,
setup_client_action }, { - "iconify", - action_iconify, - setup_client_action - }, - { "focustobottom", action_focus_order_to_bottom, setup_client_action@@ -521,11 +506,6 @@ },
{ "lower", action_lower, - setup_client_action - }, - { - "close", - action_close, setup_client_action }, {@@ -724,11 +704,6 @@ action_toggle_decorations,
setup_client_action }, { - "move", - action_move, - setup_action_move - }, - { "resize", action_resize, setup_action_resize@@ -1152,11 +1127,6 @@ 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);@@ -1543,19 +1513,6 @@ #undef a
#undef b #undef c #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)
@@ -193,6 +193,7 @@ ObUserAction uact,
guint state, gint x, gint y, + gint button, ObFrameContext con, struct _ObClient *client) {@@ -200,6 +201,7 @@ data->uact = uact;
data->state = state; data->x = x; data->y = y; + data->button = button; data->context = con; data->client = client; }@@ -209,6 +211,7 @@ ObUserAction uact,
guint state, gint x, gint y, + gint button, ObFrameContext con, struct _ObClient *client) {@@ -227,7 +230,7 @@ ObActionsData data;
ObActionsAct *act = it->data; gboolean ok = TRUE; - actions_setup_data(&data, uact, state, x, y, con, client); + actions_setup_data(&data, uact, state, x, y, button, con, client); if (actions_act_is_interactive(act) && (!interactive_act || interactive_act->def != act->def))
@@ -46,6 +46,7 @@ ObUserAction uact;
guint state; gint x; gint y; + gint button; struct _ObClient *client; ObFrameContext context;@@ -81,6 +82,7 @@ ObUserAction uact,
guint state, gint x, gint y, + gint button, ObFrameContext con, struct _ObClient *client);
@@ -53,12 +53,7 @@ {
Options *o = options; if (data->client) { - gboolean mouse = (data->uact == OB_USER_ACTION_MOUSE_PRESS || - data->uact == OB_USER_ACTION_MOUSE_RELEASE || - data->uact == OB_USER_ACTION_MOUSE_CLICK || - data->uact == OB_USER_ACTION_MOUSE_DOUBLE_CLICK || - data->uact == OB_USER_ACTION_MOUSE_MOTION); - if (!mouse || client_mouse_focusable(data->client) || + if (data->button == 0 || client_mouse_focusable(data->client) || data->context != OB_FRAME_CONTEXT_CLIENT || data->context != OB_FRAME_CONTEXT_FRAME) {
@@ -12,4 +12,6 @@ action_restart_startup();
action_cyclewindows_startup(); action_activate_startup(); action_breakchroot_startup(); + action_close_startup(); + action_move_startup(); }
@@ -13,5 +13,7 @@ void action_restart_startup();
void action_cyclewindows_startup(); void action_activate_startup(); void action_breakchroot_startup(); +void action_close_startup(); +void action_move_startup(); #endif
@@ -0,0 +1,29 @@
+#include "openbox/actions.h" +#include "openbox/prop.h" +#include "openbox/moveresize.h" + +static gboolean run_func(ObActionsData *data, gpointer options); + +void action_move_startup() +{ + actions_register("Move", + NULL, NULL, + run_func, + NULL, NULL); +} + +/* Always return FALSE because its not interactive */ +static gboolean run_func(ObActionsData *data, gpointer options) +{ + if (data->client) { + guint32 corner; + + corner = data->button != 0 ? + prop_atoms.net_wm_moveresize_move : + prop_atoms.net_wm_moveresize_move_keyboard; + + moveresize_start(data->client, data->x, data->y, data->button, corner); + } + + return FALSE; +}
@@ -256,7 +256,7 @@ keyboard_reset_chains(0);
actions_run_acts(p->actions, OB_USER_ACTION_KEYBOARD_KEY, e->xkey.state, e->xkey.x_root, e->xkey.y_root, - OB_FRAME_CONTEXT_NONE, client); + 0, OB_FRAME_CONTEXT_NONE, client); } break; }
@@ -196,7 +196,7 @@ /* if not bound, then nothing to do! */
if (it == NULL) return FALSE; actions_run_acts(b->actions[a], mouse_action_to_user_action(a), - state, x, y, context, c); + state, x, y, button, context, c); return TRUE; }