]>
Dogcows Code - chaz/openbox/blob - layer.c
bbfda57218f122ae1784dc11ba03c9372d4cebf1
1 #include "openbox/actions.h"
2 #include "openbox/client.h"
5 gint layer
; /*!< -1 for below, 0 for normal, and 1 for above */
9 static gpointer
setup_func_top(xmlNodePtr node
);
10 static gpointer
setup_func_bottom(xmlNodePtr node
);
11 static gpointer
setup_func_send(xmlNodePtr node
);
12 static gboolean
run_func(ObActionsData
*data
, gpointer options
);
14 void action_layer_startup(void)
16 actions_register("ToggleAlwaysOnTop", setup_func_top
, g_free
,
17 run_func
, NULL
, NULL
);
18 actions_register("ToggleAlwaysOnBottom", setup_func_bottom
, g_free
,
19 run_func
, NULL
, NULL
);
20 actions_register("SendToLayer", setup_func_send
, g_free
,
21 run_func
, NULL
, NULL
);
24 static gpointer
setup_func_top(xmlNodePtr node
)
26 Options
*o
= g_new0(Options
, 1);
32 static gpointer
setup_func_bottom(xmlNodePtr node
)
34 Options
*o
= g_new0(Options
, 1);
40 static gpointer
setup_func_send(xmlNodePtr node
)
45 o
= g_new0(Options
, 1);
47 if ((n
= obt_parse_find_node(node
, "layer"))) {
48 gchar
*s
= obt_parse_node_string(n
);
49 if (!g_ascii_strcasecmp(s
, "above") ||
50 !g_ascii_strcasecmp(s
, "top"))
52 else if (!g_ascii_strcasecmp(s
, "below") ||
53 !g_ascii_strcasecmp(s
, "bottom"))
55 else if (!g_ascii_strcasecmp(s
, "normal") ||
56 !g_ascii_strcasecmp(s
, "middle"))
64 /* Always return FALSE because its not interactive */
65 static gboolean
run_func(ObActionsData
*data
, gpointer options
)
70 ObClient
*c
= data
->client
;
72 actions_client_move(data
, TRUE
);
75 if (o
->toggle
|| !c
->below
)
76 client_set_layer(c
, c
->below
? 0 : -1);
78 else if (o
->layer
> 0) {
79 if (o
->toggle
|| !c
->above
)
80 client_set_layer(c
, c
->above
? 0 : 1);
82 else if (c
->above
|| c
->below
)
83 client_set_layer(c
, 0);
85 actions_client_move(data
, FALSE
);
This page took 0.036106 seconds and 3 git commands to generate.