From 3c78f7dba243c6e096f0265faceec7fa1360c209 Mon Sep 17 00:00:00 2001 From: Mike Blumenkrantz Date: Thu, 6 Dec 2012 13:24:27 +0000 Subject: [PATCH] fix ratio resizing when increasing window size ticket #1935 SVN revision: 80359 --- src/bin/e_border.c | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/src/bin/e_border.c b/src/bin/e_border.c index c14fafe0e..2504fb93e 100644 --- a/src/bin/e_border.c +++ b/src/bin/e_border.c @@ -4763,9 +4763,12 @@ e_border_resize_limit(E_Border *bd, int *h) { double a; + Eina_Bool inc_h; E_OBJECT_CHECK(bd); E_OBJECT_TYPE_CHECK(bd, E_BORDER_TYPE); + + inc_h = (*h - bd->h > 0); *w -= bd->client_inset.l + bd->client_inset.r; *h -= bd->client_inset.t + bd->client_inset.b; if (*h < 1) *h = 1; @@ -4783,7 +4786,11 @@ e_border_resize_limit(E_Border *bd, if ((bd->client.icccm.min_aspect != 0.0) && (a < bd->client.icccm.min_aspect)) { - th = tw / bd->client.icccm.max_aspect; + if (inc_h) + tw = th * bd->client.icccm.min_aspect; + else + th = tw / bd->client.icccm.max_aspect; + *w = tw + bd->client.icccm.base_w; *h = th + bd->client.icccm.base_h; } else if ((bd->client.icccm.max_aspect != 0.0) && @@ -4798,7 +4805,12 @@ e_border_resize_limit(E_Border *bd, a = (double)*w / (double)*h; if ((bd->client.icccm.min_aspect != 0.0) && (a < bd->client.icccm.min_aspect)) - *h = *w / bd->client.icccm.min_aspect; + { + if (inc_h) + *w = *h * bd->client.icccm.min_aspect; + else + *h = *w / bd->client.icccm.min_aspect; + } else if ((bd->client.icccm.max_aspect != 0.0) && (a > bd->client.icccm.max_aspect)) *w = *h * bd->client.icccm.max_aspect;