summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2017-11-14 23:30:58 -0500
committerMatthias Clasen <mclasen@redhat.com>2017-11-15 14:22:17 -0500
commit0d23606653fdb3473d7f56f1df14dd0f5572da97 (patch)
treea992c4e6a8b695d697a6c8dd6b03c0697e9e40db
parent866ff2b8f09a56cca4a7df1494c7d54a302ae956 (diff)
downloadgtk+-0d23606653fdb3473d7f56f1df14dd0f5572da97.tar.gz
Drop gtk_icon_size_lookup
Add a new, private gtk_image_get_image_size to replace it, and update the remaining callers in a suitable way.
-rw-r--r--demos/gtk-demo/clipboard.c4
-rw-r--r--demos/gtk-demo/toolpalette.c4
-rw-r--r--gtk/a11y/gtkimageaccessible.c42
-rw-r--r--gtk/gtkcellrendererspinner.c26
-rw-r--r--gtk/gtkicontheme.c63
-rw-r--r--gtk/gtkicontheme.h5
-rw-r--r--gtk/gtkimage.c10
-rw-r--r--gtk/gtkimageprivate.h5
-rw-r--r--gtk/gtkprintunixdialog.c19
-rw-r--r--gtk/gtktoolbutton.c48
-rw-r--r--tests/testdnd2.c3
11 files changed, 63 insertions, 166 deletions
diff --git a/demos/gtk-demo/clipboard.c b/demos/gtk-demo/clipboard.c
index 859017fb3f..9fc2cd9034 100644
--- a/demos/gtk-demo/clipboard.c
+++ b/demos/gtk-demo/clipboard.c
@@ -69,7 +69,6 @@ get_image_surface (GtkImage *image)
{
const gchar *icon_name;
GtkIconTheme *icon_theme;
- int width;
switch (gtk_image_get_storage_type (image))
{
@@ -78,8 +77,7 @@ get_image_surface (GtkImage *image)
case GTK_IMAGE_ICON_NAME:
icon_name = gtk_image_get_icon_name (image);
icon_theme = gtk_icon_theme_get_for_display (gtk_widget_get_display (GTK_WIDGET (image)));
- gtk_icon_size_lookup (GTK_ICON_SIZE_INHERIT, &width, NULL);
- return gtk_icon_theme_load_surface (icon_theme, icon_name, width, 1, NULL, GTK_ICON_LOOKUP_GENERIC_FALLBACK, NULL);
+ return gtk_icon_theme_load_surface (icon_theme, icon_name, 48, 1, NULL, GTK_ICON_LOOKUP_GENERIC_FALLBACK, NULL);
default:
g_warning ("Image storage type %d not handled",
gtk_image_get_storage_type (image));
diff --git a/demos/gtk-demo/toolpalette.c b/demos/gtk-demo/toolpalette.c
index 922e4994aa..164f6c999f 100644
--- a/demos/gtk-demo/toolpalette.c
+++ b/demos/gtk-demo/toolpalette.c
@@ -39,14 +39,12 @@ canvas_item_new (GtkWidget *widget,
const gchar *icon_name;
GdkPixbuf *pixbuf;
GtkIconTheme *icon_theme;
- int width;
icon_name = gtk_tool_button_get_icon_name (button);
icon_theme = gtk_icon_theme_get_for_display (gtk_widget_get_display (widget));
- gtk_icon_size_lookup (GTK_ICON_SIZE_LARGE, &width, NULL);
pixbuf = gtk_icon_theme_load_icon (icon_theme,
icon_name,
- width,
+ 48,
GTK_ICON_LOOKUP_GENERIC_FALLBACK,
NULL);
diff --git a/gtk/a11y/gtkimageaccessible.c b/gtk/a11y/gtkimageaccessible.c
index 543152eac2..e4837d128f 100644
--- a/gtk/a11y/gtkimageaccessible.c
+++ b/gtk/a11y/gtkimageaccessible.c
@@ -21,6 +21,7 @@
#include <gtk/gtk.h>
#include "gtkimageaccessible.h"
#include "gtktoolbarprivate.h"
+#include "gtkimageprivate.h"
#include "gtkintl.h"
struct _GtkImageAccessiblePrivate
@@ -252,7 +253,6 @@ gtk_image_accessible_get_image_size (AtkImage *image,
{
GtkWidget* widget;
GtkImage *gtk_image;
- GtkImageType image_type;
widget = gtk_accessible_get_widget (GTK_ACCESSIBLE (image));
if (widget == NULL)
@@ -264,44 +264,8 @@ gtk_image_accessible_get_image_size (AtkImage *image,
gtk_image = GTK_IMAGE (widget);
- image_type = gtk_image_get_storage_type (gtk_image);
- switch (image_type)
- {
- case GTK_IMAGE_SURFACE:
- {
- cairo_surface_t *surface;
-
- surface = gtk_image_get_surface (gtk_image);
- *height = cairo_image_surface_get_height (surface);
- *width = cairo_image_surface_get_width (surface);
- break;
- }
- case GTK_IMAGE_TEXTURE:
- {
- GdkTexture *texture;
-
- texture = gtk_image_get_texture (gtk_image);
- *height = gdk_texture_get_height (texture);
- *width = gdk_texture_get_width (texture);
- break;
- }
- case GTK_IMAGE_ICON_NAME:
- case GTK_IMAGE_GICON:
- {
- GtkIconSize size;
-
- g_object_get (gtk_image, "icon-size", &size, NULL);
- gtk_icon_size_lookup (size, width, height);
- break;
- }
- case GTK_IMAGE_EMPTY:
- default:
- {
- *height = -1;
- *width = -1;
- break;
- }
- }
+ if (gtk_image_get_storage_type (gtk_image) != GTK_IMAGE_EMPTY)
+ gtk_image_get_image_size (gtk_image, width, height);
}
static gboolean
diff --git a/gtk/gtkcellrendererspinner.c b/gtk/gtkcellrendererspinner.c
index 11b8ff9108..46282eaa99 100644
--- a/gtk/gtkcellrendererspinner.c
+++ b/gtk/gtkcellrendererspinner.c
@@ -28,11 +28,13 @@
#include "config.h"
#include "gtkcellrendererspinner.h"
-#include "gtkicontheme.h"
+#include "gtkiconhelperprivate.h"
#include "gtkintl.h"
#include "gtksettings.h"
#include "gtksnapshot.h"
#include "gtktypebuiltins.h"
+#include "gtkstylecontextprivate.h"
+#include "gtkcssnumbervalueprivate.h"
#include <math.h>
@@ -186,12 +188,22 @@ gtk_cell_renderer_spinner_update_size (GtkCellRendererSpinner *cell,
GtkWidget *widget)
{
GtkCellRendererSpinnerPrivate *priv = cell->priv;
-
- if (!gtk_icon_size_lookup (priv->icon_size, &priv->size, NULL))
- {
- g_warning ("Invalid icon size %u", priv->icon_size);
- priv->size = 24;
- }
+ GtkStyleContext *context;
+ GtkIconHelper icon_helper;
+ GtkCssNode *node;
+ GtkCssStyle *style;
+
+ context = gtk_widget_get_style_context (widget);
+ gtk_style_context_save (context);
+
+ gtk_style_context_add_class (context, "spinner");
+ node = gtk_style_context_get_node (context);
+ gtk_icon_size_set_style_classes (node, priv->icon_size);
+ style = gtk_css_node_get_style (node);
+ priv->size = _gtk_css_number_value_get (gtk_css_style_get_value (style, GTK_CSS_PROPERTY_ICON_SIZE), 100);
+
+ gtk_icon_helper_destroy (&icon_helper);
+ gtk_style_context_restore (context);
}
static void
diff --git a/gtk/gtkicontheme.c b/gtk/gtkicontheme.c
index 239ea4eecf..5250672fb5 100644
--- a/gtk/gtkicontheme.c
+++ b/gtk/gtkicontheme.c
@@ -5347,66 +5347,3 @@ gtk_icon_info_new_for_file (GFile *file,
return info;
}
-
-typedef struct _IconSize IconSize;
-
-struct _IconSize
-{
- int width;
- int height;
-};
-
-static const IconSize icon_sizes[] = {
- [GTK_ICON_SIZE_INHERIT] = {
- .width = 16,
- .height = 16,
- },
- [GTK_ICON_SIZE_NORMAL] = {
- .width = 16,
- .height = 16,
- },
- [GTK_ICON_SIZE_LARGE] = {
- .width = 32,
- .height = 32,
- },
-};
-
-/**
- * gtk_icon_size_lookup:
- * @size: (type int): an icon size (#GtkIconSize)
- * @width: (out) (optional): location to store icon width
- * @height: (out) (optional): location to store icon height
- *
- * Obtains the pixel size of a semantic icon size @size:
- * #GTK_ICON_NORMAL, #GTK_ICON_SIZE_LARGE, etc. This function
- * isn’t normally needed, gtk_icon_theme_load_icon() is the usual
- * way to get an icon for rendering, then just look at the size of
- * the rendered pixbuf. The rendered pixbuf may not even correspond to
- * the width/height returned by gtk_icon_size_lookup(), because themes
- * are free to render the pixbuf however they like, including changing
- * the usual size.
- *
- * Returns: %TRUE if @size was a valid size
- */
-gboolean
-gtk_icon_size_lookup (GtkIconSize size,
- gint *widthp,
- gint *heightp)
-{
- GTK_NOTE (MULTIHEAD,
- g_warning ("gtk_icon_size_lookup ()) is not multihead safe"));
-
- if (size == (GtkIconSize)-1)
- return FALSE;
-
- if (size >= G_N_ELEMENTS (icon_sizes))
- return FALSE;
-
- if (widthp)
- *widthp = icon_sizes[size].width;
-
- if (heightp)
- *heightp = icon_sizes[size].height;
-
- return TRUE;
-}
diff --git a/gtk/gtkicontheme.h b/gtk/gtkicontheme.h
index b9447ba135..360e73d081 100644
--- a/gtk/gtkicontheme.h
+++ b/gtk/gtkicontheme.h
@@ -345,11 +345,6 @@ GdkPixbuf * gtk_icon_info_load_symbolic_for_context_finish (GtkIconInf
gboolean *was_symbolic,
GError **error);
-GDK_AVAILABLE_IN_ALL
-gboolean gtk_icon_size_lookup (GtkIconSize size,
- gint *width,
- gint *height);
-
G_END_DECLS
diff --git a/gtk/gtkimage.c b/gtk/gtkimage.c
index 3c289b32bc..c8837a1754 100644
--- a/gtk/gtkimage.c
+++ b/gtk/gtkimage.c
@@ -1399,3 +1399,13 @@ gtk_image_get_icon_size (GtkImage *image)
return priv->icon_size;
}
+
+void
+gtk_image_get_image_size (GtkImage *image,
+ int *width,
+ int *height)
+{
+ GtkImagePrivate *priv = gtk_image_get_instance_private (image);
+
+ _gtk_icon_helper_get_size (&priv->icon_helper, width, height);
+}
diff --git a/gtk/gtkimageprivate.h b/gtk/gtkimageprivate.h
index 58b1804c66..04b99c1313 100644
--- a/gtk/gtkimageprivate.h
+++ b/gtk/gtkimageprivate.h
@@ -38,6 +38,11 @@ void gtk_image_set_from_definition (GtkImage
GtkImageDefinition * gtk_image_get_definition (GtkImage *image);
+void gtk_image_get_image_size (GtkImage *image,
+ int *width,
+ int *height);
+
+
G_END_DECLS
#endif /* __GTK_IMAGE_H__ */
diff --git a/gtk/gtkprintunixdialog.c b/gtk/gtkprintunixdialog.c
index 5b31d59d85..25b9e646e5 100644
--- a/gtk/gtkprintunixdialog.c
+++ b/gtk/gtkprintunixdialog.c
@@ -134,7 +134,6 @@ static void gtk_print_unix_dialog_get_property (GObject *object,
guint prop_id,
GValue *value,
GParamSpec *pspec);
-static void gtk_print_unix_dialog_style_updated (GtkWidget *widget);
static void unschedule_idle_mark_conflicts (GtkPrintUnixDialog *dialog);
static void selected_printer_changed (GtkTreeSelection *selection,
GtkPrintUnixDialog *dialog);
@@ -406,7 +405,6 @@ gtk_print_unix_dialog_class_init (GtkPrintUnixDialogClass *class)
object_class->set_property = gtk_print_unix_dialog_set_property;
object_class->get_property = gtk_print_unix_dialog_get_property;
- widget_class->style_updated = gtk_print_unix_dialog_style_updated;
widget_class->destroy = gtk_print_unix_dialog_destroy;
g_object_class_install_property (object_class,
@@ -2303,23 +2301,6 @@ draw_collate (GtkDrawingArea *da,
}
static void
-gtk_print_unix_dialog_style_updated (GtkWidget *widget)
-{
- GtkPrintUnixDialog *dialog = (GtkPrintUnixDialog *)widget;
- GtkPrintUnixDialogPrivate *priv = dialog->priv;
- gint size;
- gfloat scale;
-
- GTK_WIDGET_CLASS (gtk_print_unix_dialog_parent_class)->style_updated (widget);
-
- gtk_icon_size_lookup (GTK_ICON_SIZE_LARGE, &size, NULL);
- scale = size / 48.0;
-
- gtk_drawing_area_set_content_width (GTK_DRAWING_AREA (priv->collate_image), (50 + 20) * scale);
- gtk_drawing_area_set_content_height (GTK_DRAWING_AREA (priv->collate_image), (15 + 26) * scale);
-}
-
-static void
update_page_range_entry_sensitivity (GtkWidget *button,
GtkPrintUnixDialog *dialog)
{
diff --git a/gtk/gtktoolbutton.c b/gtk/gtktoolbutton.c
index ce6f63bf7f..d8685e7b0e 100644
--- a/gtk/gtktoolbutton.c
+++ b/gtk/gtktoolbutton.c
@@ -21,7 +21,7 @@
#include "config.h"
#include "gtktoolbutton.h"
#include "gtkbutton.h"
-#include "gtkimage.h"
+#include "gtkimageprivate.h"
#include "gtklabel.h"
#include "gtkbox.h"
#include "gtkintl.h"
@@ -716,33 +716,31 @@ clone_image_menu_size (GtkImage *image)
}
else if (storage_type == GTK_IMAGE_SURFACE)
{
- gint width, height;
+ int width, height;
+ cairo_surface_t *src_surface, *dest_surface;
+ GtkWidget *cloned_image;
+ gint scale = gtk_widget_get_scale_factor (GTK_WIDGET (image));
+ cairo_t *cr;
- if (gtk_icon_size_lookup (GTK_ICON_SIZE_NORMAL, &width, &height))
- {
- cairo_surface_t *src_surface, *dest_surface;
- GtkWidget *cloned_image;
- gint scale = gtk_widget_get_scale_factor (GTK_WIDGET (image));
- cairo_t *cr;
-
- src_surface = gtk_image_get_surface (image);
- dest_surface =
- gdk_window_create_similar_image_surface (gtk_widget_get_window (GTK_WIDGET(image)),
+ gtk_image_get_image_size (image, &width, &height);
+
+ src_surface = gtk_image_get_surface (image);
+ dest_surface =
+ gdk_window_create_similar_image_surface (gtk_widget_get_window (GTK_WIDGET (image)),
CAIRO_FORMAT_ARGB32,
width * scale, height * scale, scale);
- cr = cairo_create (dest_surface);
- cairo_set_source_surface (cr, src_surface, 0, 0);
- cairo_scale (cr,
- width / cairo_image_surface_get_width (src_surface),
- height / cairo_image_surface_get_height (src_surface));
- cairo_paint (cr);
- cairo_destroy (cr);
-
- cloned_image = gtk_image_new_from_surface (dest_surface);
- cairo_surface_destroy (dest_surface);
-
- return cloned_image;
- }
+ cr = cairo_create (dest_surface);
+ cairo_set_source_surface (cr, src_surface, 0, 0);
+ cairo_scale (cr,
+ width / cairo_image_surface_get_width (src_surface),
+ height / cairo_image_surface_get_height (src_surface));
+ cairo_paint (cr);
+ cairo_destroy (cr);
+
+ cloned_image = gtk_image_new_from_surface (dest_surface);
+ cairo_surface_destroy (dest_surface);
+
+ return cloned_image;
}
return NULL;
diff --git a/tests/testdnd2.c b/tests/testdnd2.c
index 2b4f405310..d2f5f24c73 100644
--- a/tests/testdnd2.c
+++ b/tests/testdnd2.c
@@ -6,7 +6,7 @@ get_image_surface (GtkImage *image,
{
GtkIconTheme *icon_theme;
const char *icon_name;
- int width;
+ int width = 48;
cairo_surface_t *surface;
switch (gtk_image_get_storage_type (image))
@@ -18,7 +18,6 @@ get_image_surface (GtkImage *image,
case GTK_IMAGE_ICON_NAME:
icon_name = gtk_image_get_icon_name (image);
icon_theme = gtk_icon_theme_get_for_display (gtk_widget_get_display (GTK_WIDGET (image)));
- gtk_icon_size_lookup (GTK_ICON_SIZE_LARGE, &width, NULL);
*out_size = width;
return gtk_icon_theme_load_surface (icon_theme, icon_name, width, 1, NULL, GTK_ICON_LOOKUP_GENERIC_FALLBACK, NULL);
default: