From ca28e08c2f47dec4e30f54c3ef64376a6246fbf9 Mon Sep 17 00:00:00 2001 From: Dana Jansens Date: Sat, 23 Jun 2007 14:44:58 +0000 Subject: [PATCH] add dockautohide action --- Makefile.am | 1 + openbox/action.c | 199 --------------------------------- openbox/actions/all.c | 1 + openbox/actions/all.h | 1 + openbox/actions/dockautohide.c | 22 ++++ 5 files changed, 25 insertions(+), 199 deletions(-) create mode 100644 openbox/actions/dockautohide.c diff --git a/Makefile.am b/Makefile.am index c65101e6..9a9f9d3f 100644 --- a/Makefile.am +++ b/Makefile.am @@ -163,6 +163,7 @@ openbox_openbox_SOURCES = \ openbox/actions/debug.c \ openbox/actions/decorations.c \ openbox/actions/desktop.c \ + openbox/actions/dockautohide.c \ openbox/actions/directionalcyclewindows.c \ openbox/actions/directionaldesktop.c \ openbox/actions/directionaltargetwindow.c \ 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) { @@ -319,41 +157,6 @@ ActionString actionstrings[] = action_unshaderaise, 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, @@ -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; +} -- 2.39.2