diff options
author | Cosimo Cecchi <[email protected]> | 2013-08-04 02:41:54 +0200 |
---|---|---|
committer | raveit65 <[email protected]> | 2018-04-05 09:07:35 +0200 |
commit | 2e0c51fc197758c0a94594eac812ae8f6239e212 (patch) | |
tree | 5516c1483817c98e9355b5f5db1f543cc37750a3 /src | |
parent | 4bf67ac8fff8555bf784d8cd7e1611829a9fca44 (diff) | |
download | caja-2e0c51fc197758c0a94594eac812ae8f6239e212.tar.bz2 caja-2e0c51fc197758c0a94594eac812ae8f6239e212.tar.xz |
properties-window: support HiDpi for the properties window icon
This was missing from the last commit.
origin commit:
https://gitlab.gnome.org/GNOME/nautilus/commit/3a6053f1
Diffstat (limited to 'src')
-rw-r--r-- | src/file-manager/fm-properties-window.c | 27 |
1 files changed, 10 insertions, 17 deletions
diff --git a/src/file-manager/fm-properties-window.c b/src/file-manager/fm-properties-window.c index 1d097f6f..12fc57fa 100644 --- a/src/file-manager/fm-properties-window.c +++ b/src/file-manager/fm-properties-window.c @@ -410,14 +410,12 @@ get_image_for_properties_window (FMPropertiesWindow *window, static void -update_properties_window_icon (GtkImage *image) +update_properties_window_icon (FMPropertiesWindow *window) { - FMPropertiesWindow *window; GdkPixbuf *pixbuf; + cairo_surface_t *surface; char *name; - window = g_object_get_data (G_OBJECT (image), "properties_window"); - get_image_for_properties_window (window, &name, &pixbuf); if (name != NULL) { @@ -426,10 +424,13 @@ update_properties_window_icon (GtkImage *image) gtk_window_set_icon (GTK_WINDOW (window), pixbuf); } - gtk_image_set_from_pixbuf (image, pixbuf); + surface = gdk_cairo_surface_create_from_pixbuf (pixbuf, gtk_widget_get_scale_factor (GTK_WIDGET (window)), + gtk_widget_get_window (GTK_WIDGET (window))); + gtk_image_set_from_surface (GTK_IMAGE (window->details->icon_image), surface); g_free (name); g_object_unref (pixbuf); + cairo_surface_destroy (surface); } /* utility to test if a uri refers to a local image */ @@ -535,11 +536,11 @@ create_image_widget (FMPropertiesWindow *window, { GtkWidget *button; GtkWidget *image; - GdkPixbuf *pixbuf; - - get_image_for_properties_window (window, NULL, &pixbuf); image = gtk_image_new (); + window->details->icon_image = image; + + update_properties_window_icon (window); gtk_widget_show (image); button = NULL; @@ -559,13 +560,6 @@ create_image_widget (FMPropertiesWindow *window, G_CALLBACK (select_image_button_callback), window); } - gtk_image_set_from_pixbuf (GTK_IMAGE (image), pixbuf); - - g_object_unref (pixbuf); - - g_object_set_data (G_OBJECT (image), "properties_window", window); - - window->details->icon_image = image; window->details->icon_button = button; return button != NULL ? button : image; @@ -1163,8 +1157,7 @@ properties_window_update (FMPropertiesWindow *window, if (dirty_original) { update_properties_window_title (window); - update_properties_window_icon (GTK_IMAGE (window->details->icon_image)); - + update_properties_window_icon (window); update_name_field (window); for (l = window->details->emblem_buttons; l != NULL; l = l->next) { |