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 (aspect < ewin->icccm.aspect_min)
h = (int)((double)w / ewin->icccm.aspect_min);
if (aspect > ewin->icccm.aspect_max)
h = (int)((double)w / ewin->icccm.aspect_max);
w = (int)((double)h * ewin->icccm.aspect_min);
else if (aspect > ewin->icccm.aspect_max)
w = (int)((double)h * ewin->icccm.aspect_max);
}
else if (Mode.mode == MODE_RESIZE_V)
{
if (aspect < ewin->icccm.aspect_min)
w = (int)((double)h * ewin->icccm.aspect_min);
if (aspect > ewin->icccm.aspect_max)
w = (int)((double)h * ewin->icccm.aspect_max);
h = (int)((double)w / ewin->icccm.aspect_min);
else if (aspect > ewin->icccm.aspect_max)
h = (int)((double)w / ewin->icccm.aspect_max);
}
else
{
if (aspect < ewin->icccm.aspect_min)
w = (int)((double)h * ewin->icccm.aspect_min);
if (aspect > ewin->icccm.aspect_max)
h = (int)((double)w / ewin->icccm.aspect_max);
{
if (ewin->icccm.aspect_min >= 1.)
h = (int)((double)w / ewin->icccm.aspect_min);
else
w = (int)((double)h * ewin->icccm.aspect_min);
}
else if (aspect > ewin->icccm.aspect_max)
{
if (ewin->icccm.aspect_max >= 1.)
h = (int)((double)w / ewin->icccm.aspect_max);
else
w = (int)((double)h * ewin->icccm.aspect_max);
}
}
i = w / ewin->icccm.w_inc;
j = h / ewin->icccm.h_inc;