]>
Dogcows Code - chaz/openbox/blob - openbox/per_app_settings.c
1 /* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*-
3 client.h for the Openbox window manager
4 Copyright (c) 2006 Mikael Magnusson
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 See the COPYING file for a copy of the GNU General Public License.
19 #include "per_app_settings.h"
23 /* XXX put in client.c */
24 /* This should possibly do something more interesting than just match
25 * against WM_CLASS literally. */
26 ObAppSetting
*get_client_settings(ObClient
*client
)
28 GSList
*a
= config_per_app_settings
;
31 ObAppSetting
*app
= (ObAppSetting
*) a
->data
;
33 if (!strcmp(app
->name
, client
->name
)) {
34 ob_debug("Window matching: %s\n", app
->name
);
36 return (ObAppSetting
*) a
->data
;
44 /* XXX put in place.c */
45 void place_window_from_settings(ObAppSetting
*setting
, ObClient
*client
, gint
*x
, gint
*y
)
50 /* Find which head the pointer is on, partly taken from place.c */
51 if (setting
->head
== -1) {
52 screen_pointer_pos(&px
, &py
);
54 for (i
= 0; i
< screen_num_monitors
; i
++) {
55 screen
= screen_area_monitor(client
->desktop
, i
);
56 if (RECT_CONTAINS(*screen
, px
, py
))
60 if (i
== screen_num_monitors
)
61 screen
= screen_area_monitor(client
->desktop
, 0);
64 screen
= screen_area_monitor(client
->desktop
, setting
->head
);
66 if (setting
->position
.x
== -1 && setting
->center_x
)
67 *x
= screen
->x
+ screen
->width
/ 2 - client
->area
.width
/ 2;
68 else if (setting
->position
.x
!= -1)
69 *x
= screen
->x
+ setting
->position
.x
;
71 if (setting
->position
.y
== -1 && setting
->center_y
)
72 *y
= screen
->y
+ screen
->height
/ 2 - client
->area
.height
/ 2;
73 else if (setting
->position
.y
!= -1)
74 *y
= screen
->y
+ setting
->position
.y
;
This page took 0.035067 seconds and 4 git commands to generate.