]>
Dogcows Code - chaz/openbox/blob - openbox/actions/directionaldesktop.c
1 #include "openbox/actions.h"
2 #include "openbox/screen.h"
11 static gpointer
setup_func(ObParseInst
*i
, xmlDocPtr doc
, xmlNodePtr node
);
12 static void free_func(gpointer options
);
13 static gboolean
run_func(ObActionsData
*data
, gpointer options
);
15 void action_directionaldesktop_startup()
17 actions_register("DirectionalDesktop",
24 static gpointer
setup_func(ObParseInst
*i
, xmlDocPtr doc
, xmlNodePtr node
)
29 o
= g_new0(Options
, 1);
31 o
->dir
= OB_DIRECTION_EAST
;
33 if ((n
= parse_find_node("wrap", node
)))
34 o
->wrap
= parse_bool(doc
, n
);
35 if ((n
= parse_find_node("direction", node
))) {
36 gchar
*s
= parse_string(doc
, n
);
37 if (!g_ascii_strcasecmp(s
, "next")) {
39 o
->dir
= OB_DIRECTION_EAST
;
41 else if (!g_ascii_strcasecmp(s
, "previous")) {
43 o
->dir
= OB_DIRECTION_WEST
;
45 else if (!g_ascii_strcasecmp(s
, "north") ||
46 !g_ascii_strcasecmp(s
, "up"))
47 o
->dir
= OB_DIRECTION_NORTH
;
48 else if (!g_ascii_strcasecmp(s
, "south") ||
49 !g_ascii_strcasecmp(s
, "down"))
50 o
->dir
= OB_DIRECTION_SOUTH
;
51 else if (!g_ascii_strcasecmp(s
, "west") ||
52 !g_ascii_strcasecmp(s
, "left"))
53 o
->dir
= OB_DIRECTION_WEST
;
54 else if (!g_ascii_strcasecmp(s
, "east") ||
55 !g_ascii_strcasecmp(s
, "right"))
56 o
->dir
= OB_DIRECTION_EAST
;
63 static void free_func(gpointer options
)
70 /* Always return FALSE because its not interactive */
71 static gboolean
run_func(ObActionsData
*data
, gpointer options
)
76 d
= screen_cycle_desktop(o
->dir
,
80 if (d
!= screen_desktop
)
81 screen_set_desktop(d
, TRUE
);
This page took 0.038561 seconds and 4 git commands to generate.