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 \
(*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;
action_unfocus,
setup_client_action
},
- {
- "iconify",
- action_iconify,
- setup_client_action
- },
{
"focustobottom",
action_focus_order_to_bottom,
action_lower,
setup_client_action
},
- {
- "close",
- action_close,
- setup_client_action
- },
{
"kill",
action_kill,
action_toggle_decorations,
setup_client_action
},
- {
- "move",
- action_move,
- setup_action_move
- },
{
"resize",
action_resize,
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);
#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;
guint state,
gint x,
gint y,
+ gint button,
ObFrameContext con,
struct _ObClient *client)
{
data->state = state;
data->x = x;
data->y = y;
+ data->button = button;
data->context = con;
data->client = client;
}
guint state,
gint x,
gint y,
+ gint button,
ObFrameContext con,
struct _ObClient *client)
{
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))
guint state;
gint x;
gint y;
+ gint button;
struct _ObClient *client;
ObFrameContext context;
guint state,
gint x,
gint y,
+ gint button,
ObFrameContext con,
struct _ObClient *client);
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)
{
action_cyclewindows_startup();
action_activate_startup();
action_breakchroot_startup();
+ action_close_startup();
+ action_move_startup();
}
void action_cyclewindows_startup();
void action_activate_startup();
void action_breakchroot_startup();
+void action_close_startup();
+void action_move_startup();
#endif
--- /dev/null
+#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;
+}
#include "openbox/actions.h"
+#include "openbox/menu.h"
#include <glib.h>
typedef struct {
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;
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;
}
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);
}
}
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;
}