X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=openbox%2Fplace.c;h=aa572db2aff2a34eb804bdffc15eff0a79b0657f;hb=dc6564619fdc9940a3d9db8528483c27f6bcb894;hp=6a97c36328e50b389a27489a94b1b9f1efda538f;hpb=77baf26a7f2f64ddf1274035fd4991ab17345904;p=chaz%2Fopenbox diff --git a/openbox/place.c b/openbox/place.c index 6a97c363..aa572db2 100644 --- a/openbox/place.c +++ b/openbox/place.c @@ -134,6 +134,8 @@ static Rect **pick_head(ObClient *c) for (i = 0; i < screen_num_monitors; ++i) area[i] = screen_area(c->desktop, choice[i], NULL); + g_free(choice); + return area; } @@ -180,7 +182,7 @@ static GSList* area_remove(GSList *list, Rect *a) if (!RECT_INTERSECTS_RECT(*r, *a)) { result = g_slist_prepend(result, r); - r = NULL; /* dont free it */ + /* dont free r, it's moved to the result list */ } else { Rect isect, extra; @@ -215,9 +217,10 @@ static GSList* area_remove(GSList *list, Rect *a) r->width, RECT_BOTTOM(*r) - RECT_BOTTOM(isect)); result = area_add(result, &extra); } - } - g_free(r); + /* 'r' is not being added to the result list, so free it */ + g_free(r); + } } g_slist_free(list); return result; @@ -251,8 +254,6 @@ 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++) { - guint i; - /* try all monitors in order of preference */ for (i = 0; i < screen_num_monitors && !ret; ++i) { GList *it; @@ -316,9 +317,9 @@ static gboolean place_nooverlap(ObClient *c, gint *x, gint *y) if (r->width >= c->frame->area.width && r->height >= c->frame->area.height && - r->width > maxsize) + r->width * r->height > maxsize) { - maxsize = r->width; + maxsize = r->width * r->height; maxit = sit; } }