mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-27 06:00:22 +00:00
window: Sanitize size hint computation
We don't want the maximum size to be smaller than the minimum size. Not just because it's wrong but also because when this happens the rest of GTK gets mighty confused and infloops resizing to min-size and max-size in turns causing a flickering window. Well, at least if you run X without a window manager. Or your window manager hasn't finished starting up. Private RHEL bug finding this issue: https://bugzilla.redhat.com/show_bug.cgi?id=1035409
This commit is contained in:
parent
d4c8f1028a
commit
9849b292a9
@ -9177,22 +9177,21 @@ gtk_window_compute_hints (GtkWindow *window,
|
||||
|
||||
if (*new_flags & GDK_HINT_MAX_SIZE)
|
||||
{
|
||||
if (new_geometry->max_width < 0)
|
||||
new_geometry->max_width = requisition.width;
|
||||
else
|
||||
if (new_geometry->max_width >= 0)
|
||||
new_geometry->max_width += extra_width;
|
||||
new_geometry->max_width = MAX (new_geometry->max_width, new_geometry->min_width);
|
||||
|
||||
if (new_geometry->max_height < 0)
|
||||
new_geometry->max_height = requisition.height;
|
||||
else
|
||||
if (new_geometry->max_height >= 0)
|
||||
new_geometry->max_height += extra_height;
|
||||
|
||||
new_geometry->max_height = MAX (new_geometry->max_height, new_geometry->min_height);
|
||||
}
|
||||
else if (!priv->resizable)
|
||||
{
|
||||
*new_flags |= GDK_HINT_MAX_SIZE;
|
||||
|
||||
new_geometry->max_width = requisition.width;
|
||||
new_geometry->max_height = requisition.height;
|
||||
new_geometry->max_width = new_geometry->min_width;
|
||||
new_geometry->max_height = new_geometry->min_height;
|
||||
}
|
||||
|
||||
*new_flags |= GDK_HINT_WIN_GRAVITY;
|
||||
|
Loading…
Reference in New Issue
Block a user