diff options
| author | Dana Jansens <danakj@orodu.net> | 2008-01-11 19:32:45 -0500 |
|---|---|---|
| committer | Dana Jansens <danakj@orodu.net> | 2008-01-11 19:32:45 -0500 |
| commit | 22333336d3ba36784955c67444f996b557f3838a (patch) | |
| tree | 579e484f5d0be3d5b6f51c1e972de5d8201eaf65 /openbox/place.c | |
| parent | 602a73c15ce22250a604e443a994ad6c8726f3f5 (diff) | |
add an <active> option for window placement, to try force new windows on the active monitor (for xinerama)
Diffstat (limited to 'openbox/place.c')
| -rw-r--r-- | openbox/place.c | 13 |
1 files changed, 8 insertions, 5 deletions
diff --git a/openbox/place.c b/openbox/place.c index aa572db2..276d9288 100644 --- a/openbox/place.c +++ b/openbox/place.c @@ -108,9 +108,9 @@ static Rect **pick_head(ObClient *c) } } - if (focus_client) { + if (focus_client && client_normal(focus_client)) { add_choice(choice, client_monitor(focus_client)); - ob_debug("placement adding choice %d for focused window\n", + ob_debug("placement adding choice %d for normal focused window\n", client_monitor(focus_client)); } @@ -146,7 +146,7 @@ static gboolean place_random(ObClient *client, gint *x, gint *y) guint i; areas = pick_head(client); - i = g_random_int_range(0, screen_num_monitors); + i = config_place_active ? 0 : g_random_int_range(0, screen_num_monitors); l = areas[i]->x; t = areas[i]->y; @@ -254,8 +254,11 @@ static gboolean place_nooverlap(ObClient *c, gint *x, gint *y) /* try ignoring different things to find empty space */ for (ignore = 0; ignore < IGNORE_END && !ret; ignore++) { - /* try all monitors in order of preference */ - for (i = 0; i < screen_num_monitors && !ret; ++i) { + /* try all monitors in order of preference, but only the first one + if config_place_active is true */ + for (i = 0; (i < (config_place_active ? 1 : screen_num_monitors) && + !ret); ++i) + { GList *it; /* add the whole monitor */ |
