forked from e16/e16
1
0
Fork 0

Fix breakage when size hints specify an aspect ratio (debian bug 527989).

SVN revision: 40607
This commit is contained in:
Kim Woelders 2009-05-12 21:21:26 +00:00
parent b0f7f5063c
commit 8ae0ed89f5
1 changed files with 19 additions and 9 deletions

View File

@ -186,23 +186,33 @@ ICCCM_SizeMatch(const EWin * ewin, int wi, int hi, int *pwo, int *pho)
if (Mode.mode == MODE_RESIZE_H) if (Mode.mode == MODE_RESIZE_H)
{ {
if (aspect < ewin->icccm.aspect_min) if (aspect < ewin->icccm.aspect_min)
h = (int)((double)w / ewin->icccm.aspect_min); w = (int)((double)h * ewin->icccm.aspect_min);
if (aspect > ewin->icccm.aspect_max) else if (aspect > ewin->icccm.aspect_max)
h = (int)((double)w / ewin->icccm.aspect_max); w = (int)((double)h * ewin->icccm.aspect_max);
} }
else if (Mode.mode == MODE_RESIZE_V) else if (Mode.mode == MODE_RESIZE_V)
{ {
if (aspect < ewin->icccm.aspect_min) if (aspect < ewin->icccm.aspect_min)
w = (int)((double)h * ewin->icccm.aspect_min); h = (int)((double)w / ewin->icccm.aspect_min);
if (aspect > ewin->icccm.aspect_max) else if (aspect > ewin->icccm.aspect_max)
w = (int)((double)h * ewin->icccm.aspect_max); h = (int)((double)w / ewin->icccm.aspect_max);
} }
else else
{ {
if (aspect < ewin->icccm.aspect_min) if (aspect < ewin->icccm.aspect_min)
{
if (ewin->icccm.aspect_min >= 1.)
h = (int)((double)w / ewin->icccm.aspect_min);
else
w = (int)((double)h * ewin->icccm.aspect_min); w = (int)((double)h * ewin->icccm.aspect_min);
if (aspect > ewin->icccm.aspect_max) }
else if (aspect > ewin->icccm.aspect_max)
{
if (ewin->icccm.aspect_max >= 1.)
h = (int)((double)w / ewin->icccm.aspect_max); h = (int)((double)w / ewin->icccm.aspect_max);
else
w = (int)((double)h * ewin->icccm.aspect_max);
}
} }
i = w / ewin->icccm.w_inc; i = w / ewin->icccm.w_inc;
j = h / ewin->icccm.h_inc; j = h / ewin->icccm.h_inc;