1
0
Fork 0

constraints: Fix up aspect ratio math for frame rect conversion

This commit is contained in:
Jasper St. Pierre 2014-11-10 15:49:06 -08:00
parent e72c6916aa
commit cb66ab5a87

View file

@ -1017,6 +1017,7 @@ constrain_aspect_ratio (MetaWindow *window,
double best_width, best_height; double best_width, best_height;
double alt_width, alt_height; double alt_width, alt_height;
MetaRectangle *start_rect; MetaRectangle *start_rect;
MetaRectangle client_rect;
if (priority > PRIORITY_ASPECT_RATIO) if (priority > PRIORITY_ASPECT_RATIO)
return TRUE; return TRUE;
@ -1068,15 +1069,18 @@ constrain_aspect_ratio (MetaWindow *window,
fudge = 1; fudge = 1;
break; break;
} }
meta_window_frame_rect_to_client_rect (window, &info->current, &client_rect);
constraint_already_satisfied = constraint_already_satisfied =
info->current.width - (info->current.height * minr ) > -minr*fudge && client_rect.width - (client_rect.height * minr ) > -minr*fudge &&
info->current.width - (info->current.height * maxr ) < maxr*fudge; client_rect.width - (client_rect.height * maxr ) < maxr*fudge;
if (check_only || constraint_already_satisfied) if (check_only || constraint_already_satisfied)
return constraint_already_satisfied; return constraint_already_satisfied;
/*** Enforce constraint ***/ /*** Enforce constraint ***/
new_width = info->current.width; new_width = client_rect.width;
new_height = info->current.height; new_height = client_rect.height;
switch (info->resize_gravity) switch (info->resize_gravity)
{ {
@ -1123,6 +1127,14 @@ constrain_aspect_ratio (MetaWindow *window,
break; break;
} }
{
client_rect.width = new_width;
client_rect.height = new_height;
meta_window_client_rect_to_frame_rect (window, &client_rect, &client_rect);
new_width = client_rect.width;
new_height = client_rect.height;
}
/* Figure out what original rect to pass to meta_rectangle_resize_with_gravity /* Figure out what original rect to pass to meta_rectangle_resize_with_gravity
* See bug 448183 * See bug 448183
*/ */