[gtk+] widget: Allow underallocation for scrollables



commit 5b1ca9dfa88f6f5e925a2b111928f987a31998e1
Author: Benjamin Otte <otte redhat com>
Date:   Thu Apr 28 22:04:31 2011 +0200

    widget: Allow underallocation for scrollables
    
    Also document this fact.

 gtk/gtkscrollable.c |    8 ++++++++
 gtk/gtkwidget.c     |    3 ++-
 2 files changed, 10 insertions(+), 1 deletions(-)
---
diff --git a/gtk/gtkscrollable.c b/gtk/gtkscrollable.c
index 0ff0d96..7dbaa82 100644
--- a/gtk/gtkscrollable.c
+++ b/gtk/gtkscrollable.c
@@ -45,6 +45,14 @@
  *   </listitem>
  *   <listitem>
  *     <para>
+ *       Because its preferred size is the size for a fully expanded widget,
+ *       the scrollable widget must be able to cope with underallocations.
+ *       This means that it must accept any value passed to its
+ *       #GtkWidgetClass.size_allocate() function.
+ *     </para>
+ *   </listitem>
+ *   <listitem>
+ *     <para>
  *       When the parent allocates space to the scrollable child widget, the widget should update
  *       the adjustments' properties with new values.
  *     </para>
diff --git a/gtk/gtkwidget.c b/gtk/gtkwidget.c
index 86e59d3..f7094ba 100644
--- a/gtk/gtkwidget.c
+++ b/gtk/gtkwidget.c
@@ -4816,7 +4816,8 @@ gtk_widget_size_allocate (GtkWidget	*widget,
       gtk_widget_get_preferred_width_for_height (widget, real_allocation.height, &min_width, &natural_width);
     }
 
-  if (min_width > real_allocation.width || min_height > real_allocation.height)
+  if ((min_width > real_allocation.width || min_height > real_allocation.height) &&
+      !GTK_IS_SCROLLABLE (widget))
     g_warning ("gtk_widget_size_allocate(): attempt to underallocate %s%s %s %p. "
                "Allocation is %dx%d, but minimum required size is %dx%d.",
                priv->parent ? G_OBJECT_TYPE_NAME (priv->parent) : "", priv->parent ? "'s child" : "toplevel",



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]