]>
Dogcows Code - chaz/openbox/blob - action.c
9f9795713c23a693d9417f93c65424a0994a68e9
7 void action_execute(char *path
)
10 if (!g_spawn_command_line_async(path
, &e
)) {
11 g_warning("failed to execute '%s': %s", path
, e
->message
);
15 void action_iconify(Client
*c
)
17 client_iconify(c
, TRUE
, TRUE
);
20 void action_raise(Client
*c
)
25 void action_lower(Client
*c
)
30 void action_close(Client
*c
)
35 void action_shade(Client
*c
)
37 client_shade(c
, TRUE
);
40 void action_unshade(Client
*c
)
42 client_shade(c
, FALSE
);
45 void action_toggle_shade(Client
*c
)
47 client_shade(c
, !c
->shaded
);
50 void action_toggle_omnipresent(Client
*c
)
52 client_set_desktop(c
, c
->desktop
== DESKTOP_ALL
?
53 screen_desktop
: DESKTOP_ALL
);
56 void action_move_relative(Client
*c
, int dx
, int dy
)
58 client_configure(c
, Corner_TopLeft
, c
->area
.x
+ dx
, c
->area
.y
+ dy
,
59 c
->area
.width
, c
->area
.height
, TRUE
, TRUE
);
62 void action_resize_relative(Client
*c
, int dx
, int dy
)
64 client_configure(c
, Corner_TopLeft
, c
->area
.x
, c
->area
.y
,
65 c
->area
.width
+ dx
, c
->area
.height
+ dy
, TRUE
, TRUE
);
68 void action_maximize_full(Client
*c
)
70 client_maximize(c
, TRUE
, 0, TRUE
);
73 void action_unmaximize_full(Client
*c
)
75 client_maximize(c
, FALSE
, 0, TRUE
);
78 void action_toggle_maximize_full(Client
*c
)
80 client_maximize(c
, !(c
->max_horz
|| c
->max_vert
), 0, TRUE
);
83 void action_maximize_horz(Client
*c
)
85 client_maximize(c
, TRUE
, 1, TRUE
);
88 void action_unmaximize_horz(Client
*c
)
90 client_maximize(c
, FALSE
, 1, TRUE
);
93 void action_toggle_maximize_horz(Client
*c
)
95 client_maximize(c
, !c
->max_horz
, 1, TRUE
);
98 void action_maximize_vert(Client
*c
)
100 client_maximize(c
, TRUE
, 2, TRUE
);
103 void action_unmaximize_vert(Client
*c
)
105 client_maximize(c
, FALSE
, 2, TRUE
);
108 void action_toggle_maximize_vert(Client
*c
)
110 client_maximize(c
, !c
->max_vert
, 2, TRUE
);
113 void action_send_to_desktop(Client
*c
, guint desktop
)
115 if (desktop
< screen_num_desktops
|| desktop
== DESKTOP_ALL
)
116 client_set_desktop(c
, desktop
);
119 void action_send_to_next_desktop(Client
*c
, gboolean wrap
, gboolean follow
)
123 d
= screen_desktop
+ 1;
124 if (d
>= screen_num_desktops
) {
128 client_set_desktop(c
, d
);
129 if (follow
) screen_set_desktop(d
);
132 void action_send_to_previous_desktop(Client
*c
, gboolean wrap
, gboolean follow
)
136 d
= screen_desktop
- 1;
137 if (d
>= screen_num_desktops
) {
139 d
= screen_num_desktops
- 1;
141 client_set_desktop(c
, d
);
142 if (follow
) screen_set_desktop(d
);
145 void action_desktop(guint desktop
)
147 if (desktop
< screen_num_desktops
|| desktop
== DESKTOP_ALL
)
148 screen_set_desktop(desktop
);
151 void action_next_desktop(gboolean wrap
)
155 d
= screen_desktop
+ 1;
156 if (d
>= screen_num_desktops
) {
160 screen_set_desktop(d
);
163 void action_previous_desktop(gboolean wrap
)
167 d
= screen_desktop
- 1;
168 if (d
>= screen_num_desktops
) {
170 d
= screen_num_desktops
- 1;
172 screen_set_desktop(d
);
175 static void cur_row_col(guint
*r
, guint
*c
)
177 switch (screen_desktop_layout
.orientation
) {
178 case Orientation_Horz
:
179 switch (screen_desktop_layout
.start_corner
) {
181 *r
= screen_desktop
/ screen_desktop_layout
.columns
;
182 *c
= screen_desktop
% screen_desktop_layout
.columns
;
184 case Corner_BottomLeft
:
185 *r
= screen_desktop_layout
.rows
- 1 -
186 screen_desktop
/ screen_desktop_layout
.columns
;
187 *c
= screen_desktop
% screen_desktop_layout
.columns
;
190 case Corner_TopRight
:
191 *r
= screen_desktop
/ screen_desktop_layout
.columns
;
192 *c
= screen_desktop_layout
.columns
- 1 -
193 screen_desktop
% screen_desktop_layout
.columns
;
195 case Corner_BottomRight
:
196 *r
= screen_desktop_layout
.rows
- 1 -
197 screen_desktop
/ screen_desktop_layout
.columns
;
198 *c
= screen_desktop_layout
.columns
- 1 -
199 screen_desktop
% screen_desktop_layout
.columns
;
203 case Orientation_Vert
:
204 switch (screen_desktop_layout
.start_corner
) {
206 *r
= screen_desktop
% screen_desktop_layout
.rows
;
207 *c
= screen_desktop
/ screen_desktop_layout
.rows
;
209 case Corner_BottomLeft
:
210 *r
= screen_desktop_layout
.rows
- 1 -
211 screen_desktop
% screen_desktop_layout
.rows
;
212 *c
= screen_desktop
/ screen_desktop_layout
.rows
;
215 case Corner_TopRight
:
216 *r
= screen_desktop
% screen_desktop_layout
.rows
;
217 *c
= screen_desktop_layout
.columns
- 1 -
218 screen_desktop
/ screen_desktop_layout
.rows
;
220 case Corner_BottomRight
:
221 *r
= screen_desktop_layout
.rows
- 1 -
222 screen_desktop
% screen_desktop_layout
.rows
;
223 *c
= screen_desktop_layout
.columns
- 1 -
224 screen_desktop
/ screen_desktop_layout
.rows
;
232 static guint
translate_row_col(guint r
, guint c
)
234 switch (screen_desktop_layout
.orientation
) {
235 case Orientation_Horz
:
236 switch (screen_desktop_layout
.start_corner
) {
238 return r
* screen_desktop_layout
.columns
+ c
;
239 case Corner_BottomLeft
:
240 return (screen_desktop_layout
.rows
- 1 - r
) *
241 screen_desktop_layout
.columns
+ c
;
242 case Corner_TopRight
:
243 return r
* screen_desktop_layout
.columns
+
244 (screen_desktop_layout
.columns
- 1 - c
);
245 case Corner_BottomRight
:
246 return (screen_desktop_layout
.rows
- 1 - r
) *
247 screen_desktop_layout
.columns
+
248 (screen_desktop_layout
.columns
- 1 - c
);
250 case Orientation_Vert
:
251 switch (screen_desktop_layout
.start_corner
) {
253 return c
* screen_desktop_layout
.rows
+ r
;
254 case Corner_BottomLeft
:
255 return c
* screen_desktop_layout
.rows
+
256 (screen_desktop_layout
.rows
- 1 - r
);
257 case Corner_TopRight
:
258 return (screen_desktop_layout
.columns
- 1 - c
) *
259 screen_desktop_layout
.rows
+ r
;
260 case Corner_BottomRight
:
261 return (screen_desktop_layout
.columns
- 1 - c
) *
262 screen_desktop_layout
.rows
+
263 (screen_desktop_layout
.rows
- 1 - r
);
266 g_assert_not_reached();
270 void action_next_desktop_column(gboolean wrap
)
276 d
= translate_row_col(r
, c
);
277 if (d
>= screen_num_desktops
) {
281 if (d
>= screen_num_desktops
)
283 d
= translate_row_col(r
, c
);
284 if (d
< screen_num_desktops
)
285 screen_set_desktop(d
);
288 void action_previous_desktop_column(gboolean wrap
)
294 d
= translate_row_col(r
, c
);
295 if (d
>= screen_num_desktops
) {
297 c
= screen_desktop_layout
.columns
- 1;
299 if (d
>= screen_num_desktops
)
301 d
= translate_row_col(r
, c
);
302 if (d
< screen_num_desktops
)
303 screen_set_desktop(d
);
306 void action_next_desktop_row(gboolean wrap
)
312 d
= translate_row_col(r
, c
);
313 if (d
>= screen_num_desktops
) {
317 if (d
>= screen_num_desktops
)
319 d
= translate_row_col(r
, c
);
320 if (d
< screen_num_desktops
)
321 screen_set_desktop(d
);
324 void action_previous_desktop_row(gboolean wrap
)
330 d
= translate_row_col(r
, c
);
331 if (d
>= screen_num_desktops
) {
333 c
= screen_desktop_layout
.rows
- 1;
335 if (d
>= screen_num_desktops
)
337 d
= translate_row_col(r
, c
);
338 if (d
< screen_num_desktops
)
339 screen_set_desktop(d
);
342 void action_toggle_decorations(Client
*c
)
344 c
->disabled_decorations
= c
->disabled_decorations
? 0 : ~0;
345 client_setup_decor_and_functions(c
);
This page took 0.053387 seconds and 3 git commands to generate.