summaryrefslogtreecommitdiff
path: root/gtk/gtkbin.c
diff options
context:
space:
mode:
Diffstat (limited to 'gtk/gtkbin.c')
-rw-r--r--gtk/gtkbin.c32
1 files changed, 22 insertions, 10 deletions
diff --git a/gtk/gtkbin.c b/gtk/gtkbin.c
index 691fb89b6a..ed2796a89c 100644
--- a/gtk/gtkbin.c
+++ b/gtk/gtkbin.c
@@ -41,16 +41,16 @@ static void gtk_bin_forall (GtkContainer *container,
static GType gtk_bin_child_type (GtkContainer *container);
-static void gtk_bin_extended_layout_init (GtkExtendedLayoutIface *iface);
-static void gtk_bin_get_width_for_height (GtkExtendedLayout *layout,
- gint height,
- gint *minimum_width,
- gint *natural_width);
-static void gtk_bin_get_height_for_width (GtkExtendedLayout *layout,
- gint width,
- gint *minimum_height,
- gint *natural_height);
-
+static void gtk_bin_extended_layout_init (GtkExtendedLayoutIface *iface);
+static gboolean gtk_bin_is_height_for_width (GtkExtendedLayout *layout);
+static void gtk_bin_get_width_for_height (GtkExtendedLayout *layout,
+ gint height,
+ gint *minimum_width,
+ gint *natural_width);
+static void gtk_bin_get_height_for_width (GtkExtendedLayout *layout,
+ gint width,
+ gint *minimum_height,
+ gint *natural_height);
static GtkExtendedLayoutIface *parent_extended_layout_iface;
@@ -159,10 +159,22 @@ gtk_bin_extended_layout_init (GtkExtendedLayoutIface *iface)
{
parent_extended_layout_iface = g_type_interface_peek_parent (iface);
+ iface->is_height_for_width = gtk_bin_is_height_for_width;
iface->get_width_for_height = gtk_bin_get_width_for_height;
iface->get_height_for_width = gtk_bin_get_height_for_width;
}
+static gboolean
+gtk_bin_is_height_for_width (GtkExtendedLayout *layout)
+{
+ GtkBin *bin = GTK_BIN (layout);
+
+ if (bin->child)
+ return gtk_extended_layout_is_height_for_width (GTK_EXTENDED_LAYOUT (bin->child));
+
+ return TRUE;
+}
+
static void
get_child_padding_delta (GtkBin *bin,
gint *delta_h,