[gtk+/wip/baedert/gtkimageview] Stop using private gdk api



commit 1359ebec9987d8d9f07e5b2c2e62b13ee4445a30
Author: Timm Bäder <mail baedert org>
Date:   Sat Feb 6 10:20:32 2016 +0100

    Stop using private gdk api

 gdk/gdkcairo.h     |    6 ------
 gtk/gtkimageview.c |   29 ++++++++++++++++++++++++-----
 2 files changed, 24 insertions(+), 11 deletions(-)
---
diff --git a/gdk/gdkcairo.h b/gdk/gdkcairo.h
index 5e5677a..95993d2 100644
--- a/gdk/gdkcairo.h
+++ b/gdk/gdkcairo.h
@@ -81,12 +81,6 @@ void       gdk_cairo_draw_from_gl (cairo_t              *cr,
                                    int                   width,
                                    int                   height);
 
-GDK_AVAILABLE_IN_3_18
-void
-gdk_cairo_surface_paint_pixbuf (cairo_surface_t *surface,
-                                const GdkPixbuf *pixbuf);
-
-
 G_END_DECLS
 
 #endif /* __GDK_CAIRO_H__ */
diff --git a/gtk/gtkimageview.c b/gtk/gtkimageview.c
index 82c1837..6971977 100644
--- a/gtk/gtkimageview.c
+++ b/gtk/gtkimageview.c
@@ -2032,12 +2032,30 @@ gtk_image_view_update_surface (GtkImageView    *image_view,
                                int              scale_factor)
 {
   GtkImageViewPrivate *priv = gtk_image_view_get_instance_private (image_view);
-  int new_width    = gdk_pixbuf_get_width (frame);
-  int new_height   = gdk_pixbuf_get_height (frame);
-  int widget_scale = gtk_widget_get_scale_factor (GTK_WIDGET (image_view));
-  int real_width   = (new_width * scale_factor)  / widget_scale;
-  int real_height  = (new_height * scale_factor) / widget_scale;
+  /*int new_width    = gdk_pixbuf_get_width (frame);*/
+  /*int new_height   = gdk_pixbuf_get_height (frame);*/
+  /*int widget_scale = gtk_widget_get_scale_factor (GTK_WIDGET (image_view));*/
+  /*int real_width   = (new_width * scale_factor)  / widget_scale;*/
+  /*int real_height  = (new_height * scale_factor) / widget_scale;*/
+  GdkWindow *window = gtk_widget_get_window (GTK_WIDGET (image_view));
+  cairo_surface_t *new_surface;
 
+
+  new_surface = gdk_cairo_surface_create_from_pixbuf (frame,
+                                                      scale_factor,
+                                                      window);
+
+  gtk_image_view_replace_surface (image_view,
+                                  new_surface,
+                                  scale_factor);
+
+  /* TODO: Strictly speaking, we don't need to queue a resize if the
+   * surface size doesn't change. */
+
+  if (!priv->fit_allocation)
+    gtk_widget_queue_resize (GTK_WIDGET (image_view));
+
+#if 0
   if (!priv->image_surface ||
       cairo_image_surface_get_width (priv->image_surface)  != real_width ||
       cairo_image_surface_get_height (priv->image_surface) != real_height ||
@@ -2058,6 +2076,7 @@ gtk_image_view_update_surface (GtkImageView    *image_view,
       gdk_cairo_surface_paint_pixbuf (priv->image_surface, frame);
       gtk_widget_queue_draw (GTK_WIDGET (image_view));
     }
+#endif
 
   g_assert (priv->image_surface != NULL);
 }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]