add dockautohide action

This commit is contained in:
Dana Jansens 2007-06-23 14:44:58 +00:00
parent b963ed3a92
commit ca28e08c2f
5 changed files with 25 additions and 199 deletions

View file

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

View file

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

View file

@ -36,4 +36,5 @@ void action_all_startup()
action_directionaldesktop_startup();
action_resizerelative_startup();
action_addremovedesktop_startup();
action_dockautohide_startup();
}

View file

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

View file

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