diff options
author | Benjamin Otte <otte@redhat.com> | 2018-04-03 14:14:37 +0200 |
---|---|---|
committer | Benjamin Otte <otte@redhat.com> | 2018-04-05 14:57:10 +0200 |
commit | 0ea8395c039e2e011c2628de95bbf334b7251b6b (patch) | |
tree | 370369b49cb0dc3a4cce1431429b04899a248591 | |
parent | 7a4e76ae159477d047193a770c60e9936c4e912b (diff) | |
download | gtk+-0ea8395c039e2e011c2628de95bbf334b7251b6b.tar.gz |
image: Actually report a request mode
This makes height-for-width actually work for GtkImage.
I'm kinda ashamed I didn't notice it not working before.
-rw-r--r-- | gtk/gtkiconhelper.c | 16 | ||||
-rw-r--r-- | gtk/gtkiconhelperprivate.h | 1 | ||||
-rw-r--r-- | gtk/gtkimage.c | 10 |
3 files changed, 27 insertions, 0 deletions
diff --git a/gtk/gtkiconhelper.c b/gtk/gtkiconhelper.c index ca7e308870..7c2e80abc4 100644 --- a/gtk/gtkiconhelper.c +++ b/gtk/gtkiconhelper.c @@ -470,6 +470,22 @@ gtk_icon_helper_new (GtkCssNode *css_node, return self; } +GtkSizeRequestMode +gtk_icon_helper_get_request_mode (GtkIconHelper *self) +{ + switch (gtk_image_definition_get_storage_type (self->def)) + { + case GTK_IMAGE_PAINTABLE: + return GTK_SIZE_REQUEST_HEIGHT_FOR_WIDTH; + + case GTK_IMAGE_ICON_NAME: + case GTK_IMAGE_GICON: + case GTK_IMAGE_EMPTY: + default: + return GTK_SIZE_REQUEST_CONSTANT_SIZE; + } +} + void gtk_icon_helper_measure (GtkIconHelper *self, GtkOrientation orientation, diff --git a/gtk/gtkiconhelperprivate.h b/gtk/gtkiconhelperprivate.h index b2d7b819e9..9d770d5902 100644 --- a/gtk/gtkiconhelperprivate.h +++ b/gtk/gtkiconhelperprivate.h @@ -64,6 +64,7 @@ GdkPaintable *_gtk_icon_helper_peek_paintable (GtkIconHelper *self); GtkImageDefinition *gtk_icon_helper_get_definition (GtkIconHelper *self); const gchar *_gtk_icon_helper_get_icon_name (GtkIconHelper *self); +GtkSizeRequestMode gtk_icon_helper_get_request_mode (GtkIconHelper *self); void gtk_icon_helper_measure (GtkIconHelper *self, GtkOrientation orientation, int for_size, diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c index f5054495f2..f4ef1f9961 100644 --- a/gtk/gtkimage.c +++ b/gtk/gtkimage.c @@ -136,6 +136,15 @@ static GParamSpec *image_props[NUM_PROPERTIES] = { NULL, }; G_DEFINE_TYPE_WITH_PRIVATE (GtkImage, gtk_image, GTK_TYPE_WIDGET) +static GtkSizeRequestMode +gtk_image_get_request_mode (GtkWidget *widget) +{ + GtkImage *image = GTK_IMAGE (widget); + GtkImagePrivate *priv = gtk_image_get_instance_private (image); + + return gtk_icon_helper_get_request_mode (priv->icon_helper); +} + static void gtk_image_class_init (GtkImageClass *class) { @@ -150,6 +159,7 @@ gtk_image_class_init (GtkImageClass *class) widget_class = GTK_WIDGET_CLASS (class); widget_class->snapshot = gtk_image_snapshot; + widget_class->get_request_mode = gtk_image_get_request_mode; widget_class->measure = gtk_image_measure; widget_class->unrealize = gtk_image_unrealize; widget_class->style_updated = gtk_image_style_updated; |