From: Dana Jansens Date: Fri, 22 Jun 2007 05:17:10 +0000 (+0000) Subject: add the move action X-Git-Url: https://git.brokenzipper.com/gitweb?a=commitdiff_plain;h=d642be361fde438e2b29b7374b4d6465f47ad9e9;p=chaz%2Fopenbox add the move action --- diff --git a/Makefile.am b/Makefile.am index bddea964..61bc0b3d 100644 --- a/Makefile.am +++ b/Makefile.am @@ -158,10 +158,12 @@ openbox_openbox_SOURCES = \ 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 \ diff --git a/openbox/action.c b/openbox/action.c index 2288dcb9..cdf48df3 100644 --- a/openbox/action.c +++ b/openbox/action.c @@ -416,16 +416,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; @@ -498,11 +488,6 @@ ActionString actionstrings[] = action_unfocus, setup_client_action }, - { - "iconify", - action_iconify, - setup_client_action - }, { "focustobottom", action_focus_order_to_bottom, @@ -523,11 +508,6 @@ ActionString actionstrings[] = action_lower, setup_client_action }, - { - "close", - action_close, - setup_client_action - }, { "kill", action_kill, @@ -723,11 +703,6 @@ ActionString actionstrings[] = action_toggle_decorations, setup_client_action }, - { - "move", - action_move, - setup_action_move - }, { "resize", action_resize, @@ -1152,11 +1127,6 @@ void action_lower(union ActionData *data) 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); @@ -1545,19 +1515,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; diff --git a/openbox/actions.c b/openbox/actions.c index b56d834a..a4308e62 100644 --- a/openbox/actions.c +++ b/openbox/actions.c @@ -193,6 +193,7 @@ static void actions_setup_data(ObActionsData *data, guint state, gint x, gint y, + gint button, ObFrameContext con, struct _ObClient *client) { @@ -200,6 +201,7 @@ static void actions_setup_data(ObActionsData *data, data->state = state; data->x = x; data->y = y; + data->button = button; data->context = con; data->client = client; } @@ -209,6 +211,7 @@ void actions_run_acts(GSList *acts, guint state, gint x, gint y, + gint button, ObFrameContext con, struct _ObClient *client) { @@ -227,7 +230,7 @@ void actions_run_acts(GSList *acts, 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)) diff --git a/openbox/actions.h b/openbox/actions.h index 8e3154b8..7c69b10f 100644 --- a/openbox/actions.h +++ b/openbox/actions.h @@ -46,6 +46,7 @@ struct _ObActionsData { guint state; gint x; gint y; + gint button; struct _ObClient *client; ObFrameContext context; @@ -81,6 +82,7 @@ void actions_run_acts(GSList *acts, guint state, gint x, gint y, + gint button, ObFrameContext con, struct _ObClient *client); diff --git a/openbox/actions/activate.c b/openbox/actions/activate.c index a431bafd..c3f3f98e 100644 --- a/openbox/actions/activate.c +++ b/openbox/actions/activate.c @@ -53,12 +53,7 @@ static gboolean run_func(ObActionsData *data, gpointer options) 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) { diff --git a/openbox/actions/all.c b/openbox/actions/all.c index e3ad2b15..a65d76b5 100644 --- a/openbox/actions/all.c +++ b/openbox/actions/all.c @@ -12,4 +12,6 @@ void action_all_startup() action_cyclewindows_startup(); action_activate_startup(); action_breakchroot_startup(); + action_close_startup(); + action_move_startup(); } diff --git a/openbox/actions/all.h b/openbox/actions/all.h index 5db2e55d..fa252492 100644 --- a/openbox/actions/all.h +++ b/openbox/actions/all.h @@ -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 diff --git a/openbox/actions/move.c b/openbox/actions/move.c new file mode 100644 index 00000000..bf140c31 --- /dev/null +++ b/openbox/actions/move.c @@ -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; +} diff --git a/openbox/actions/showmenu.c b/openbox/actions/showmenu.c index ec22de5b..4b12548f 100644 --- a/openbox/actions/showmenu.c +++ b/openbox/actions/showmenu.c @@ -1,4 +1,5 @@ #include "openbox/actions.h" +#include "openbox/menu.h" #include typedef struct { @@ -49,13 +50,7 @@ static gboolean run_func(ObActionsData *data, gpointer options) if (data->uact == OB_USER_ACTION_MENU_SELECTION) return FALSE; if (o->name) { - 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); - - menu_show(o->name, data->x, data->y, mouse, data->client); + menu_show(o->name, data->x, data->y, data->button != 0, data->client); } return FALSE; diff --git a/openbox/keyboard.c b/openbox/keyboard.c index b12ad53d..6e45e5c4 100644 --- a/openbox/keyboard.c +++ b/openbox/keyboard.c @@ -256,7 +256,7 @@ void keyboard_event(ObClient *client, const XEvent *e) 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; } diff --git a/openbox/menuframe.c b/openbox/menuframe.c index 6a25a9ae..2abd8707 100644 --- a/openbox/menuframe.c +++ b/openbox/menuframe.c @@ -1203,7 +1203,7 @@ void menu_entry_frame_execute(ObMenuEntryFrame *self, guint state) func(entry, frame, client, state, data); else actions_run_acts(acts, OB_USER_ACTION_MENU_SELECTION, - state, -1, -1, OB_FRAME_CONTEXT_NONE, client); + state, -1, -1, 0, OB_FRAME_CONTEXT_NONE, client); } } diff --git a/openbox/mouse.c b/openbox/mouse.c index 493e1000..97abf708 100644 --- a/openbox/mouse.c +++ b/openbox/mouse.c @@ -196,7 +196,7 @@ static gboolean fire_binding(ObMouseAction a, ObFrameContext context, 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; }