summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
Diffstat (limited to 'openbox')
-rw-r--r--openbox/action.c43
-rw-r--r--openbox/actions.c5
-rw-r--r--openbox/actions.h2
-rw-r--r--openbox/actions/activate.c7
-rw-r--r--openbox/actions/all.c2
-rw-r--r--openbox/actions/all.h2
-rw-r--r--openbox/actions/move.c29
-rw-r--r--openbox/actions/showmenu.c9
-rw-r--r--openbox/keyboard.c2
-rw-r--r--openbox/menuframe.c2
-rw-r--r--openbox/mouse.c2
11 files changed, 45 insertions, 60 deletions
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;
@@ -499,11 +489,6 @@ ActionString actionstrings[] =
setup_client_action
},
{
- "iconify",
- action_iconify,
- setup_client_action
- },
- {
"focustobottom",
action_focus_order_to_bottom,
setup_client_action
@@ -524,11 +509,6 @@ ActionString actionstrings[] =
setup_client_action
},
{
- "close",
- action_close,
- setup_client_action
- },
- {
"kill",
action_kill,
setup_client_action
@@ -724,11 +704,6 @@ ActionString actionstrings[] =
setup_client_action
},
{
- "move",
- action_move,
- setup_action_move
- },
- {
"resize",
action_resize,
setup_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 <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;
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;
}