summaryrefslogtreecommitdiff
path: root/openbox
diff options
context:
space:
mode:
Diffstat (limited to 'openbox')
-rw-r--r--openbox/action.c199
-rw-r--r--openbox/actions/all.c1
-rw-r--r--openbox/actions/all.h1
-rw-r--r--openbox/actions/dockautohide.c22
4 files changed, 24 insertions, 199 deletions
diff --git a/openbox/action.c b/openbox/action.c
index 8b2cfe85..3bf54330 100644
--- a/openbox/action.c
+++ b/openbox/action.c
@@ -41,168 +41,6 @@
-typedef struct
-{
- const gchar *name;
- void (*func)(union ActionData *);
- void (*setup)(ObAction **, ObUserAction uact);
-} ActionString;
-
-static ObAction *action_new(void (*func)(union ActionData *data))
-{
- ObAction *a = g_new0(ObAction, 1);
- a->ref = 1;
- a->func = func;
-
- return a;
-}
-
-void action_ref(ObAction *a)
-{
- ++a->ref;
-}
-
-void action_unref(ObAction *a)
-{
- if (a == NULL) return;
-
- if (--a->ref > 0) return;
-
- /* deal with pointers */
- if (a->func == action_execute || a->func == action_restart)
- g_free(a->data.execute.path);
- else if (a->func == action_debug)
- g_free(a->data.debug.string);
- else if (a->func == action_showmenu)
- g_free(a->data.showmenu.name);
-
- g_free(a);
-}
-
-ObAction* action_copy(const ObAction *src)
-{
- ObAction *a = action_new(src->func);
-
- a->data = src->data;
-
- /* deal with pointers */
- if (a->func == action_execute || a->func == action_restart)
- a->data.execute.path = g_strdup(a->data.execute.path);
- else if (a->func == action_debug)
- a->data.debug.string = g_strdup(a->data.debug.string);
- else if (a->func == action_showmenu)
- a->data.showmenu.name = g_strdup(a->data.showmenu.name);
-
- return a;
-}
-
-void setup_action_send_to_desktop_prev(ObAction **a, ObUserAction uact)
-{
- (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
- (*a)->data.sendtodir.inter.any.interactive = TRUE;
- (*a)->data.sendtodir.dir = OB_DIRECTION_WEST;
- (*a)->data.sendtodir.linear = TRUE;
- (*a)->data.sendtodir.wrap = TRUE;
- (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_send_to_desktop_next(ObAction **a, ObUserAction uact)
-{
- (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
- (*a)->data.sendtodir.inter.any.interactive = TRUE;
- (*a)->data.sendtodir.dir = OB_DIRECTION_EAST;
- (*a)->data.sendtodir.linear = TRUE;
- (*a)->data.sendtodir.wrap = TRUE;
- (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_send_to_desktop_left(ObAction **a, ObUserAction uact)
-{
- (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
- (*a)->data.sendtodir.inter.any.interactive = TRUE;
- (*a)->data.sendtodir.dir = OB_DIRECTION_WEST;
- (*a)->data.sendtodir.linear = FALSE;
- (*a)->data.sendtodir.wrap = TRUE;
- (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_send_to_desktop_right(ObAction **a, ObUserAction uact)
-{
- (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
- (*a)->data.sendtodir.inter.any.interactive = TRUE;
- (*a)->data.sendtodir.dir = OB_DIRECTION_EAST;
- (*a)->data.sendtodir.linear = FALSE;
- (*a)->data.sendtodir.wrap = TRUE;
- (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_send_to_desktop_up(ObAction **a, ObUserAction uact)
-{
- (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
- (*a)->data.sendtodir.inter.any.interactive = TRUE;
- (*a)->data.sendtodir.dir = OB_DIRECTION_NORTH;
- (*a)->data.sendtodir.linear = FALSE;
- (*a)->data.sendtodir.wrap = TRUE;
- (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_send_to_desktop_down(ObAction **a, ObUserAction uact)
-{
- (*a)->data.sendtodir.inter.any.client_action = OB_CLIENT_ACTION_ALWAYS;
- (*a)->data.sendtodir.inter.any.interactive = TRUE;
- (*a)->data.sendtodir.dir = OB_DIRECTION_SOUTH;
- (*a)->data.sendtodir.linear = FALSE;
- (*a)->data.sendtodir.wrap = TRUE;
- (*a)->data.sendtodir.follow = TRUE;
-}
-
-void setup_action_desktop_prev(ObAction **a, ObUserAction uact)
-{
- (*a)->data.desktopdir.inter.any.interactive = TRUE;
- (*a)->data.desktopdir.dir = OB_DIRECTION_WEST;
- (*a)->data.desktopdir.linear = TRUE;
- (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_desktop_next(ObAction **a, ObUserAction uact)
-{
- (*a)->data.desktopdir.inter.any.interactive = TRUE;
- (*a)->data.desktopdir.dir = OB_DIRECTION_EAST;
- (*a)->data.desktopdir.linear = TRUE;
- (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_desktop_left(ObAction **a, ObUserAction uact)
-{
- (*a)->data.desktopdir.inter.any.interactive = TRUE;
- (*a)->data.desktopdir.dir = OB_DIRECTION_WEST;
- (*a)->data.desktopdir.linear = FALSE;
- (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_desktop_right(ObAction **a, ObUserAction uact)
-{
- (*a)->data.desktopdir.inter.any.interactive = TRUE;
- (*a)->data.desktopdir.dir = OB_DIRECTION_EAST;
- (*a)->data.desktopdir.linear = FALSE;
- (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_desktop_up(ObAction **a, ObUserAction uact)
-{
- (*a)->data.desktopdir.inter.any.interactive = TRUE;
- (*a)->data.desktopdir.dir = OB_DIRECTION_NORTH;
- (*a)->data.desktopdir.linear = FALSE;
- (*a)->data.desktopdir.wrap = TRUE;
-}
-
-void setup_action_desktop_down(ObAction **a, ObUserAction uact)
-{
- (*a)->data.desktopdir.inter.any.interactive = TRUE;
- (*a)->data.desktopdir.dir = OB_DIRECTION_SOUTH;
- (*a)->data.desktopdir.linear = FALSE;
- (*a)->data.desktopdir.wrap = TRUE;
-}
void setup_action_movefromedge_north(ObAction **a, ObUserAction uact)
{
@@ -320,41 +158,6 @@ ActionString actionstrings[] =
setup_client_action
},
{
- "sendtodesktopnext",
- action_send_to_desktop_dir,
- setup_action_send_to_desktop_next
- },
- {
- "sendtodesktopprevious",
- action_send_to_desktop_dir,
- setup_action_send_to_desktop_prev
- },
- {
- "sendtodesktopright",
- action_send_to_desktop_dir,
- setup_action_send_to_desktop_right
- },
- {
- "sendtodesktopleft",
- action_send_to_desktop_dir,
- setup_action_send_to_desktop_left
- },
- {
- "sendtodesktopup",
- action_send_to_desktop_dir,
- setup_action_send_to_desktop_up
- },
- {
- "sendtodesktopdown",
- action_send_to_desktop_dir,
- setup_action_send_to_desktop_down
- },
- {
- "toggledockautohide",
- action_toggle_dockautohide,
- NULL
- },
- {
"sendtotoplayer",
action_send_to_layer,
setup_action_top_layer
@@ -587,8 +390,6 @@ void action_toggle_layer(union ActionData *data)
void action_toggle_dockautohide(union ActionData *data)
{
- config_dock_hide = !config_dock_hide;
- dock_configure();
}
void action_remove_desktop(union ActionData *data)
diff --git a/openbox/actions/all.c b/openbox/actions/all.c
index 4e351817..ea81882b 100644
--- a/openbox/actions/all.c
+++ b/openbox/actions/all.c
@@ -36,4 +36,5 @@ void action_all_startup()
action_directionaldesktop_startup();
action_resizerelative_startup();
action_addremovedesktop_startup();
+ action_dockautohide_startup();
}
diff --git a/openbox/actions/all.h b/openbox/actions/all.h
index 2919463b..6c7b60d9 100644
--- a/openbox/actions/all.h
+++ b/openbox/actions/all.h
@@ -37,5 +37,6 @@ void action_desktop_startup();
void action_directionaldesktop_startup();
void action_resizerelative_startup();
void action_addremovedesktop_startup();
+void action_dockautohide_startup();
#endif
diff --git a/openbox/actions/dockautohide.c b/openbox/actions/dockautohide.c
new file mode 100644
index 00000000..e7f65055
--- /dev/null
+++ b/openbox/actions/dockautohide.c
@@ -0,0 +1,22 @@
+#include "openbox/actions.h"
+#include "openbox/dock.h"
+#include "openbox/config.h"
+
+static gboolean run_func(ObActionsData *data, gpointer options);
+
+void action_dockautohide_startup()
+{
+ actions_register("DockAutoHide",
+ NULL, NULL,
+ run_func,
+ NULL, NULL);
+}
+
+/* Always return FALSE because its not interactive */
+static gboolean run_func(ObActionsData *data, gpointer options)
+{
+ config_dock_hide = !config_dock_hide;
+ dock_configure();
+
+ return FALSE;
+}