Skip to content
  • Luca Bacci's avatar
    Use natural size in Gtk::ScrolledWindows for Gtk >= 3.22 (!39) · 4f3bb329
    Luca Bacci authored
    Before Gtk 3.22 GtkScrolledWindow propagated natural size to its child
    and so on to descendants. In Gtk 3.22 this was changed to always
    request the minimum size. This was done because it is believed to be
    a safer default (gives a better behaviour) in case of dynamic content
    inside the scrolled window, that is, content that may change allocated
    size. [1][2]
    
    When the scrolled window content is not dynamic the natural size is
    preferable because it gives a better looking layout and without any
    downside.
    
    In the case of GParted content is not dynamic, so request the scrolled
    windows to allocate children at natural sizes for Gtk >= 3.22.
    
    The benefits of natural size allocation are evident in presence of
    wrapping labels (for example inside the "Partition Info" dialog), that
    with the minimum size request likely end up taking a very small width.
    
    References:
    
    [1] Gtk commit from 2016-08-31:
        GtkScrolledWindow: Make propagation of natural child sizes optional
        GNOME/gtk@0984d162
        "Making propagation of child natural sizes mandatory (or default, even) was
        evidently a mistake as this causes dynamic content in a scrolled window
        to resize it's parent when the scrolled window is competing for space
        with an adjacent widget."
    
    [2] Gtk 3.22 Reference Documentation - gtk_scrolled_window_set_propagate_natural_width
        https://developer.gnome.org/gtk3/3.22/GtkScrolledWindow.html#gtk-scrolled-window-set-propagate-natural-width
    
    [3] Gtkmm 3.21.6 NEWS
        https://gitlab.gnome.org/GNOME/gtkmm/blob/3.21.6/NEWS
        "ScrolledWindow: Added get/set_propagate_natural_height/width() and the properties."
    
    Closes !39 - Always request natural size inside Gtk::ScrolledWindows
    4f3bb329