summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBenjamin Otte <otte@redhat.com>2018-04-03 14:14:37 +0200
committerBenjamin Otte <otte@redhat.com>2018-04-05 14:57:10 +0200
commit0ea8395c039e2e011c2628de95bbf334b7251b6b (patch)
tree370369b49cb0dc3a4cce1431429b04899a248591
parent7a4e76ae159477d047193a770c60e9936c4e912b (diff)
downloadgtk+-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.c16
-rw-r--r--gtk/gtkiconhelperprivate.h1
-rw-r--r--gtk/gtkimage.c10
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;