add the move action

This commit is contained in:
Dana Jansens 2007-06-22 05:17:10 +00:00
parent bb0fd965c5
commit d642be361f
12 changed files with 47 additions and 60 deletions

View file

@ -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 \

View file

@ -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;

View file

@ -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))

View file

@ -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);

View file

@ -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)
{

View file

@ -12,4 +12,6 @@ void action_all_startup()
action_cyclewindows_startup();
action_activate_startup();
action_breakchroot_startup();
action_close_startup();
action_move_startup();
}

View file

@ -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

29
openbox/actions/move.c Normal file
View file

@ -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;
}

View file

@ -1,4 +1,5 @@
#include "openbox/actions.h"
#include "openbox/menu.h"
#include <glib.h>
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;

View file

@ -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;
}

View file

@ -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);
}
}

View file

@ -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;
}