image: Remove gtk_image_set_keep_aspect_ratio()

and gtk_image_set_can_shrink().

Images are meant to always be icon-sized, they can never shrink below
that.

And images are icons, so they are meant to be square. If they are
not, we pretned that's by accident and keep aspect ratio.
This commit is contained in:
Benjamin Otte 2018-06-09 23:36:56 +02:00
parent 7690c2d042
commit f58c556adb
3 changed files with 1 additions and 156 deletions

View File

@ -1503,10 +1503,6 @@ gtk_image_set_pixel_size
gtk_image_get_pixel_size
gtk_image_set_icon_size
gtk_image_get_icon_size
gtk_image_set_keep_aspect_ratio
gtk_image_get_keep_aspect_ratio
gtk_image_set_can_shrink
gtk_image_get_can_shrink
<SUBSECTION Standard>
GTK_IMAGE
GTK_IS_IMAGE

View File

@ -86,9 +86,6 @@ struct _GtkImagePrivate
gchar *filename; /* Only used with GTK_IMAGE_SURFACE */
gchar *resource_path; /* Only used with GTK_IMAGE_SURFACE */
guint keep_aspect_ratio : 1;
guint can_shrink : 1;
};
@ -127,8 +124,6 @@ enum
PROP_GICON,
PROP_RESOURCE,
PROP_USE_FALLBACK,
PROP_KEEP_ASPECT_RATIO,
PROP_CAN_SHRINK,
NUM_PROPERTIES
};
@ -263,31 +258,6 @@ gtk_image_class_init (GtkImageClass *class)
FALSE,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
/**
* GtkImage:keep-aspect-ratio:
*
* Whether the GtkImage will render its contents trying to preserve the aspect
* ratio of the contents.
*/
image_props[PROP_KEEP_ASPECT_RATIO] =
g_param_spec_boolean ("keep-aspect-ratio",
P_("Keep aspect ratio"),
P_("Render contents respecting the aspect ratio"),
TRUE,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
/**
* GtkImage:can-shrink
*
* If the #GtkImage can be made smaller than the image it contains.
*/
image_props[PROP_CAN_SHRINK] =
g_param_spec_boolean ("can-shrink",
P_("Can shrink"),
P_("Allow image to be smaller than contents"),
FALSE,
GTK_PARAM_READWRITE|G_PARAM_EXPLICIT_NOTIFY);
g_object_class_install_properties (gobject_class, NUM_PROPERTIES, image_props);
gtk_widget_class_set_accessible_type (widget_class, GTK_TYPE_IMAGE_ACCESSIBLE);
@ -304,7 +274,6 @@ gtk_image_init (GtkImage *image)
gtk_widget_set_has_surface (GTK_WIDGET (image), FALSE);
priv->icon_helper = gtk_icon_helper_new (widget_node, GTK_WIDGET (image));
priv->keep_aspect_ratio = TRUE;
}
static void
@ -361,14 +330,6 @@ gtk_image_set_property (GObject *object,
g_object_notify_by_pspec (object, pspec);
break;
case PROP_KEEP_ASPECT_RATIO:
gtk_image_set_keep_aspect_ratio (image, g_value_get_boolean (value));
break;
case PROP_CAN_SHRINK:
gtk_image_set_can_shrink (image, g_value_get_boolean (value));
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@ -410,12 +371,6 @@ gtk_image_get_property (GObject *object,
case PROP_USE_FALLBACK:
g_value_set_boolean (value, _gtk_icon_helper_get_use_fallback (priv->icon_helper));
break;
case PROP_KEEP_ASPECT_RATIO:
g_value_set_boolean (value, priv->keep_aspect_ratio);
break;
case PROP_CAN_SHRINK:
g_value_set_boolean (value, priv->can_shrink);
break;
case PROP_STORAGE_TYPE:
g_value_set_enum (value, _gtk_icon_helper_get_storage_type (priv->icon_helper));
break;
@ -1148,7 +1103,7 @@ gtk_image_snapshot (GtkWidget *widget,
height = gtk_widget_get_height (widget);
ratio = gdk_paintable_get_intrinsic_aspect_ratio (GDK_PAINTABLE (priv->icon_helper));
if (!priv->keep_aspect_ratio || ratio == 0)
if (ratio == 0)
{
gdk_paintable_snapshot (GDK_PAINTABLE (priv->icon_helper), snapshot, width, height);
}
@ -1301,9 +1256,6 @@ gtk_image_measure (GtkWidget *widget,
for_size,
minimum, natural);
if (priv->can_shrink)
*minimum = 0;
if (orientation == GTK_ORIENTATION_VERTICAL)
{
baseline_align = gtk_image_get_baseline_align (GTK_IMAGE (widget));
@ -1413,99 +1365,6 @@ gtk_image_get_icon_size (GtkImage *image)
return priv->icon_size;
}
/**
* gtk_image_set_keep_aspect_ratio:
* @image: a #GtkImage
* @keep_aspect_ratio: whether to keep aspect ratio
*
* If set to %TRUE, the @image will render its contents according to
* their aspect ratio. That means that empty space may show up at the
* top/bottom or left/right of @image.
*
* If set to %FALSE or if the contents provide no aspect ratio, the
* contents will be stretched over the image's whole area.
*/
void
gtk_image_set_keep_aspect_ratio (GtkImage *image,
gboolean keep_aspect_ratio)
{
GtkImagePrivate *priv = gtk_image_get_instance_private (image);
g_return_if_fail (GTK_IS_IMAGE (image));
if (priv->keep_aspect_ratio == keep_aspect_ratio)
return;
priv->keep_aspect_ratio = keep_aspect_ratio;
g_object_notify_by_pspec (G_OBJECT (image), image_props[PROP_KEEP_ASPECT_RATIO]);
}
/**
* gtk_image_get_keep_aspect_ratio:
* @image: a #GtkImage
*
* Gets the value set via gtk_image_set_keep_aspect_ratio().
*
* Returns: %TRUE if the image tries to keep the contents' aspect ratio
**/
gboolean
gtk_image_get_keep_aspect_ratio (GtkImage *image)
{
GtkImagePrivate *priv = gtk_image_get_instance_private (image);
g_return_val_if_fail (GTK_IS_IMAGE (image), TRUE);
return priv->keep_aspect_ratio;
}
/**
* gtk_image_set_can_shrink:
* @image: a #GtkImage
* @can_shrink: if the @image can be made smaller than its contents
*
* If set to %TRUE, the @image can be made smaller than its contents.
* The contents will be scaled down when rendering.
*
* If you want to still force a minimum size manually, consider using
* gtk_widget_set_size_request().
*
* Also of note is that a similar function for growing does not exist
* because the grow behavior can be controlled via
* gtk_widget_set_halign() and gtk_widget_set_valign().
*/
void
gtk_image_set_can_shrink (GtkImage *image,
gboolean can_shrink)
{
GtkImagePrivate *priv = gtk_image_get_instance_private (image);
g_return_if_fail (GTK_IS_IMAGE (image));
if (priv->can_shrink == can_shrink)
return;
priv->can_shrink = can_shrink;
g_object_notify_by_pspec (G_OBJECT (image), image_props[PROP_CAN_SHRINK]);
}
/**
* gtk_image_get_can_shrink:
* @image: a #GtkImage
*
* Gets the value set via gtk_image_set_can_shrink().
*
* Returns: %TRUE if the image can be made smaller than its contents
**/
gboolean
gtk_image_get_can_shrink (GtkImage *image)
{
GtkImagePrivate *priv = gtk_image_get_instance_private (image);
g_return_val_if_fail (GTK_IS_IMAGE (image), FALSE);
return priv->can_shrink;
}
void
gtk_image_get_image_size (GtkImage *image,
int *width,

View File

@ -140,12 +140,6 @@ void gtk_image_set_pixel_size (GtkImage *image,
GDK_AVAILABLE_IN_ALL
void gtk_image_set_icon_size (GtkImage *image,
GtkIconSize icon_size);
GDK_AVAILABLE_IN_ALL
void gtk_image_set_keep_aspect_ratio (GtkImage *image,
gboolean keep_aspect_ratio);
GDK_AVAILABLE_IN_ALL
void gtk_image_set_can_shrink (GtkImage *image,
gboolean can_shrink);
GDK_AVAILABLE_IN_ALL
GtkImageType gtk_image_get_storage_type (GtkImage *image);
@ -161,10 +155,6 @@ GDK_AVAILABLE_IN_ALL
gint gtk_image_get_pixel_size (GtkImage *image);
GDK_AVAILABLE_IN_ALL
GtkIconSize gtk_image_get_icon_size (GtkImage *image);
GDK_AVAILABLE_IN_ALL
gboolean gtk_image_get_keep_aspect_ratio (GtkImage *image);
GDK_AVAILABLE_IN_ALL
gboolean gtk_image_get_can_shrink (GtkImage *image);
G_END_DECLS