[eog] New EogView interface, to enable implementing multiple "backends"



commit fcaa0566cee56e06c1d3d4e47facf075b156a345
Author: Gustavo Noronha Silva <kov debian org>
Date:   Wed Nov 4 14:59:52 2009 -0200

    New EogView interface, to enable implementing multiple "backends"
    
    Initial attempt to make EogScrollView implement the new
    EogView interface. Now users of EogScrollView must use this
    interface to interact with the widget.

 bindings/python/eog.defs           |   83 +++++++-----
 doc/reference/eog-sections.txt     |   50 ++++---
 plugins/reload/eog-reload-plugin.c |    2 +-
 src/Makefile.am                    |    2 +
 src/eog-scroll-view.c              |  272 ++++++++++++++++++++++--------------
 src/eog-scroll-view.h              |   34 +-----
 src/eog-window.c                   |   83 ++++++------
 7 files changed, 298 insertions(+), 228 deletions(-)
---
diff --git a/bindings/python/eog.defs b/bindings/python/eog.defs
index 276cd06..b83abc9 100644
--- a/bindings/python/eog.defs
+++ b/bindings/python/eog.defs
@@ -140,6 +140,16 @@
   (gtype-id "EOG_TYPE_WINDOW")
 )
 
+;; Interfaces.
+
+(define-interface View
+  (in-module "Eog")
+  (c-name "EogView")
+  (gtype-id "EOG_TYPE_VIEW")
+  (vtable "EogViewClass")
+  (prerequisite "GtkWidget")
+)
+
 ;; Enumerations and flags ...
 
 (define-flags ImageData
@@ -893,9 +903,18 @@
   (return-type "GtkWidget*")
 )
 
+
+
+;; From eog-view.h
+
+(define-function eog_view_get_type
+  (c-name "eog_view_get_type")
+  (return-type "GType")
+)
+
 (define-method set_image
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_set_image")
+  (of-object "EogView")
+  (c-name "eog_view_set_image")
   (return-type "none")
   (parameters
     '("EogImage*" "image")
@@ -903,8 +922,8 @@
 )
 
 (define-method set_zoom_upscale
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_set_zoom_upscale")
+  (of-object "EogView")
+  (c-name "eog_view_set_zoom_upscale")
   (return-type "none")
   (parameters
     '("gboolean" "upscale")
@@ -912,8 +931,8 @@
 )
 
 (define-method set_zoom_multiplier
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_set_zoom_multiplier")
+  (of-object "EogView")
+  (c-name "eog_view_set_zoom_multiplier")
   (return-type "none")
   (parameters
     '("gdouble" "multiplier")
@@ -921,8 +940,8 @@
 )
 
 (define-method set_antialiasing_in
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_set_antialiasing_in")
+  (of-object "EogView")
+  (c-name "eog_view_set_antialiasing_in")
   (return-type "none")
   (parameters
     '("gboolean" "state")
@@ -930,8 +949,8 @@
 )
 
 (define-method set_antialiasing_out
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_set_antialiasing_out")
+  (of-object "EogView")
+  (c-name "eog_view_set_antialiasing_out")
   (return-type "none")
   (parameters
     '("gboolean" "state")
@@ -939,8 +958,8 @@
 )
 
 (define-method set_transparency
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_set_transparency")
+  (of-object "EogView")
+  (c-name "eog_view_set_transparency")
   (return-type "none")
   (parameters
     '("EogTransparencyStyle" "style")
@@ -949,14 +968,14 @@
 )
 
 (define-method scrollbars_visible
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_scrollbars_visible")
+  (of-object "EogView")
+  (c-name "eog_view_scrollbars_visible")
   (return-type "gboolean")
 )
 
 (define-method zoom_in
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_zoom_in")
+  (of-object "EogView")
+  (c-name "eog_view_zoom_in")
   (return-type "none")
   (parameters
     '("gboolean" "smooth")
@@ -964,8 +983,8 @@
 )
 
 (define-method zoom_out
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_zoom_out")
+  (of-object "EogView")
+  (c-name "eog_view_zoom_out")
   (return-type "none")
   (parameters
     '("gboolean" "smooth")
@@ -973,14 +992,14 @@
 )
 
 (define-method zoom_fit
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_zoom_fit")
+  (of-object "EogView")
+  (c-name "eog_view_zoom_fit")
   (return-type "none")
 )
 
 (define-method set_zoom
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_set_zoom")
+  (of-object "EogView")
+  (c-name "eog_view_set_zoom")
   (return-type "none")
   (parameters
     '("double" "zoom")
@@ -988,32 +1007,32 @@
 )
 
 (define-method get_zoom
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_get_zoom")
+  (of-object "EogView")
+  (c-name "eog_view_get_zoom")
   (return-type "double")
 )
 
 (define-method get_zoom_is_min
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_get_zoom_is_min")
+  (of-object "EogView")
+  (c-name "eog_view_get_zoom_is_min")
   (return-type "gboolean")
 )
 
 (define-method get_zoom_is_max
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_get_zoom_is_max")
+  (of-object "EogView")
+  (c-name "eog_view_get_zoom_is_max")
   (return-type "gboolean")
 )
 
 (define-method show_cursor
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_show_cursor")
+  (of-object "EogView")
+  (c-name "eog_view_show_cursor")
   (return-type "none")
 )
 
 (define-method hide_cursor
-  (of-object "EogScrollView")
-  (c-name "eog_scroll_view_hide_cursor")
+  (of-object "EogView")
+  (c-name "eog_view_hide_cursor")
   (return-type "none")
 )
 
diff --git a/doc/reference/eog-sections.txt b/doc/reference/eog-sections.txt
index 5a0bc4d..3eacd5a 100644
--- a/doc/reference/eog-sections.txt
+++ b/doc/reference/eog-sections.txt
@@ -434,26 +434,7 @@ EOG_PLUGIN_MANAGER_GET_CLASS
 <FILE>eog-scroll-view</FILE>
 <TITLE>EogScrollView</TITLE>
 EogScrollView
-EogTransparencyStyle
 eog_scroll_view_new
-eog_scroll_view_set_image
-eog_scroll_view_set_scroll_wheel_zoom
-eog_scroll_view_set_zoom_upscale
-eog_scroll_view_set_zoom_multiplier
-eog_scroll_view_set_antialiasing_in
-eog_scroll_view_set_antialiasing_out
-eog_scroll_view_set_transparency
-eog_scroll_view_scrollbars_visible
-eog_scroll_view_set_popup
-eog_scroll_view_zoom_in
-eog_scroll_view_zoom_out
-eog_scroll_view_zoom_fit
-eog_scroll_view_set_zoom
-eog_scroll_view_get_zoom
-eog_scroll_view_get_zoom_is_min
-eog_scroll_view_get_zoom_is_max
-eog_scroll_view_show_cursor
-eog_scroll_view_hide_cursor
 <SUBSECTION Standard>
 EOG_SCROLL_VIEW
 EOG_IS_SCROLL_VIEW
@@ -624,6 +605,37 @@ EOG_SIDEBAR_GET_CLASS
 </SECTION>
 
 <SECTION>
+<FILE>eog-view</FILE>
+EOG_VIEW_GET_INTERFACE
+EogTransparencyStyle
+<TITLE>EogView</TITLE>
+EogView
+eog_view_set_image
+eog_view_set_scroll_wheel_zoom
+eog_view_set_zoom_upscale
+eog_view_set_zoom_multiplier
+eog_view_set_antialiasing
+eog_view_set_transparency
+eog_view_scrollbars_visible
+eog_view_set_popup
+eog_view_zoom_in
+eog_view_zoom_out
+eog_view_zoom_fit
+eog_view_set_zoom
+eog_view_get_zoom
+eog_view_get_zoom_is_min
+eog_view_get_zoom_is_max
+eog_view_show_cursor
+eog_view_hide_cursor
+<SUBSECTION Standard>
+EOG_VIEW
+EOG_IS_VIEW
+EOG_TYPE_VIEW
+eog_view_get_type
+EOG_VIEW_CLASS
+</SECTION>
+
+<SECTION>
 <FILE>eog-thumbnail</FILE>
 eog_thumbnail_init
 eog_thumbnail_fit_to_size
diff --git a/plugins/reload/eog-reload-plugin.c b/plugins/reload/eog-reload-plugin.c
index beedae1..830415a 100644
--- a/plugins/reload/eog-reload-plugin.c
+++ b/plugins/reload/eog-reload-plugin.c
@@ -8,7 +8,7 @@
 #include <glib/gi18n-lib.h>
 
 #include <eog-debug.h>
-#include <eog-scroll-view.h>
+#include <eog-view.h>
 #include <eog-thumb-view.h>
 #include <eog-image.h>
 
diff --git a/src/Makefile.am b/src/Makefile.am
index f17050f..f82525d 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -62,6 +62,7 @@ INST_H_FILES =				\
 	eog-enums.h			\
 	eog-image-save-info.h		\
 	eog-scroll-view.h		\
+	eog-view.h			\
 	eog-thumb-view.h		\
 	eog-list-store.h		\
 	eog-thumbnail.h			\
@@ -90,6 +91,7 @@ libeog_la_SOURCES =			\
 	eog-image-jpeg.c		\
 	eog-image-save-info.c		\
 	eog-scroll-view.c		\
+	eog-view.c			\
 	eog-thumb-view.c		\
 	eog-list-store.c		\
 	eog-thumbnail.c			\
diff --git a/src/eog-scroll-view.c b/src/eog-scroll-view.c
index 60005dd..858e94c 100644
--- a/src/eog-scroll-view.c
+++ b/src/eog-scroll-view.c
@@ -6,8 +6,8 @@
 #include <gdk-pixbuf/gdk-pixbuf.h>
 #include <gdk/gdkkeysyms.h>
 
-#include "eog-marshal.h"
 #include "eog-scroll-view.h"
+#include "eog-view.h"
 #include "eog-debug.h"
 #include "uta.h"
 #include "zoom.h"
@@ -49,13 +49,6 @@ typedef enum {
 	PROGRESSIVE_POLISHING	/* We have finished loading an image but have not scaled it with interpolation */
 } ProgressiveState;
 
-/* Signal IDs */
-enum {
-	SIGNAL_ZOOM_CHANGED,
-	SIGNAL_LAST
-};
-static gint view_signals [SIGNAL_LAST];
-
 typedef enum {
 	EOG_SCROLL_VIEW_CURSOR_NORMAL,
 	EOG_SCROLL_VIEW_CURSOR_HIDDEN,
@@ -139,10 +132,41 @@ static void set_zoom_fit (EogScrollView *view);
 static void request_paint_area (EogScrollView *view, GdkRectangle *area);
 static void set_minimum_zoom_factor (EogScrollView *view);
 
+/* EogView interface implementation */
+
+static void eog_scroll_view_iface_init (EogViewClass *iface);
+
+/* loading stuff */
+static void     eog_scroll_view_set_image        (EogView *view, EogImage *image);
+
+/* general properties */
+static void     eog_scroll_view_set_scroll_wheel_zoom (EogView *view, gboolean scroll_wheel_zoom);
+static void     eog_scroll_view_set_zoom_upscale      (EogView *view, gboolean upscale);
+static void     eog_scroll_view_set_zoom_multiplier   (EogView *view, gdouble multiplier);
+static void     eog_scroll_view_set_antialiasing_in   (EogView *view, gboolean state);
+static void     eog_scroll_view_set_antialiasing_out  (EogView *view, gboolean state);
+static void     eog_scroll_view_set_transparency      (EogView *view, EogTransparencyStyle style, GdkColor *color);
+static gboolean eog_scroll_view_scrollbars_visible    (EogView *view);
+static void	eog_scroll_view_set_popup             (EogView *view, GtkMenu *menu);
+static void     eog_scroll_view_set_bg_color          (EogView *view, GdkColor *color);
+
+/* zoom api */
+static void     eog_scroll_view_zoom_in          (EogView *view, gboolean smooth);
+static void     eog_scroll_view_zoom_out         (EogView *view, gboolean smooth);
+static void     eog_scroll_view_zoom_fit         (EogView *view);
+static void     eog_scroll_view_set_zoom         (EogView *view, double zoom);
+static double   eog_scroll_view_get_zoom         (EogView *view);
+static gboolean eog_scroll_view_get_zoom_is_min  (EogView *view);
+static gboolean eog_scroll_view_get_zoom_is_max  (EogView *view);
+static void     eog_scroll_view_show_cursor      (EogView *view);
+static void     eog_scroll_view_hide_cursor      (EogView *view);
+
 #define EOG_SCROLL_VIEW_GET_PRIVATE(object) \
 	(G_TYPE_INSTANCE_GET_PRIVATE ((object), EOG_TYPE_SCROLL_VIEW, EogScrollViewPrivate))
 
-G_DEFINE_TYPE (EogScrollView, eog_scroll_view, GTK_TYPE_TABLE)
+G_DEFINE_TYPE_WITH_CODE (EogScrollView, eog_scroll_view, GTK_TYPE_TABLE,
+			 G_IMPLEMENT_INTERFACE (EOG_TYPE_VIEW,
+						eog_scroll_view_iface_init))
 
 
 /*===================================
@@ -1082,7 +1106,7 @@ set_zoom (EogScrollView *view, double zoom,
 	/* repaint the whole image */
 	gtk_widget_queue_draw (GTK_WIDGET (priv->display));
 
-	g_signal_emit (view, view_signals [SIGNAL_ZOOM_CHANGED], 0, priv->zoom);
+	g_signal_emit_by_name (view, "zoom_changed", 0, priv->zoom);
 }
 
 /* Zooms the image to fit the available allocation */
@@ -1120,7 +1144,7 @@ set_zoom_fit (EogScrollView *view)
 	priv->xofs = 0;
 	priv->yofs = 0;
 
-	g_signal_emit (view, view_signals [SIGNAL_ZOOM_CHANGED], 0, priv->zoom);
+	g_signal_emit_by_name (view, "zoom_changed", 0, priv->zoom);
 }
 
 /*===================================
@@ -1664,51 +1688,57 @@ image_changed_cb (EogImage *img, gpointer data)
 	gtk_widget_queue_draw (GTK_WIDGET (priv->display));
 }
 
-/*===================================
-         public API
-  ---------------------------------*/
+/*=============================================
+      "public" API (accessed through interface)
+  ---------------------------------------------*/
 
-void
-eog_scroll_view_hide_cursor (EogScrollView *view)
+static void
+eog_scroll_view_hide_cursor (EogView *view)
 {
-       eog_scroll_view_set_cursor (view, EOG_SCROLL_VIEW_CURSOR_HIDDEN);
+        eog_scroll_view_set_cursor (EOG_SCROLL_VIEW (view), EOG_SCROLL_VIEW_CURSOR_HIDDEN);
 }
 
-void
-eog_scroll_view_show_cursor (EogScrollView *view)
+static void
+eog_scroll_view_show_cursor (EogView *view)
 {
-       eog_scroll_view_set_cursor (view, EOG_SCROLL_VIEW_CURSOR_NORMAL);
+        eog_scroll_view_set_cursor (EOG_SCROLL_VIEW (view), EOG_SCROLL_VIEW_CURSOR_NORMAL);
 }
 
 /* general properties */
-void
-eog_scroll_view_set_zoom_upscale (EogScrollView *view, gboolean upscale)
+static void
+eog_scroll_view_set_zoom_upscale (EogView *view, gboolean upscale)
 {
+	EogScrollView *scroll_view;
 	EogScrollViewPrivate *priv;
 
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-	priv = view->priv;
+	scroll_view = EOG_SCROLL_VIEW (view);
+
+	priv = scroll_view->priv;
 
 	if (priv->upscale != upscale) {
 		priv->upscale = upscale;
 
 		if (priv->zoom_mode == ZOOM_MODE_FIT) {
-			set_zoom_fit (view);
+			set_zoom_fit (scroll_view);
 			gtk_widget_queue_draw (GTK_WIDGET (priv->display));
 		}
 	}
 }
 
-void
-eog_scroll_view_set_antialiasing_in (EogScrollView *view, gboolean state)
+static void
+eog_scroll_view_set_antialiasing_in (EogView *view, gboolean state)
 {
+	EogScrollView *scroll_view;
 	EogScrollViewPrivate *priv;
 	GdkInterpType new_interp_type;
 
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-	priv = view->priv;
+	scroll_view = EOG_SCROLL_VIEW (view);
+
+	priv = scroll_view->priv;
 
 	new_interp_type = state ? GDK_INTERP_BILINEAR : GDK_INTERP_NEAREST;
 
@@ -1718,15 +1748,18 @@ eog_scroll_view_set_antialiasing_in (EogScrollView *view, gboolean state)
 	}
 }
 
-void
-eog_scroll_view_set_antialiasing_out (EogScrollView *view, gboolean state)
+static void
+eog_scroll_view_set_antialiasing_out (EogView *view, gboolean state)
 {
+	EogScrollView *scroll_view;
 	EogScrollViewPrivate *priv;
 	GdkInterpType new_interp_type;
 
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-	priv = view->priv;
+	scroll_view = EOG_SCROLL_VIEW (view);
+
+	priv = scroll_view->priv;
 
 	new_interp_type = state ? GDK_INTERP_BILINEAR : GDK_INTERP_NEAREST;
 
@@ -1736,9 +1769,10 @@ eog_scroll_view_set_antialiasing_out (EogScrollView *view, gboolean state)
 	}
 }
 
-void
-eog_scroll_view_set_transparency (EogScrollView *view, EogTransparencyStyle style, GdkColor *color)
+static void
+eog_scroll_view_set_transparency (EogView *view, EogTransparencyStyle style, GdkColor *color)
 {
+    	EogScrollView *scroll_view;
 	EogScrollViewPrivate *priv;
 	guint32 col = 0;
 	guint32 red, green, blue;
@@ -1746,7 +1780,9 @@ eog_scroll_view_set_transparency (EogScrollView *view, EogTransparencyStyle styl
 
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-	priv = view->priv;
+	scroll_view = EOG_SCROLL_VIEW (view);
+
+	priv = scroll_view->priv;
 
 	if (color != NULL) {
 		red = (color->red >> 8) << 16;
@@ -1780,15 +1816,18 @@ static double preferred_zoom_levels[] = {
 };
 static const gint n_zoom_levels = (sizeof (preferred_zoom_levels) / sizeof (double));
 
-void
-eog_scroll_view_zoom_in (EogScrollView *view, gboolean smooth)
+static void
+eog_scroll_view_zoom_in (EogView *view, gboolean smooth)
 {
+	EogScrollView *scroll_view;
 	EogScrollViewPrivate *priv;
 	double zoom;
 
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-	priv = view->priv;
+	scroll_view = EOG_SCROLL_VIEW (view);
+
+	priv = scroll_view->priv;
 
 	if (smooth) {
 		zoom = priv->zoom * priv->zoom_multiplier;
@@ -1812,19 +1851,22 @@ eog_scroll_view_zoom_in (EogScrollView *view, gboolean smooth)
 			zoom = preferred_zoom_levels [i];
 		}
 	}
-	set_zoom (view, zoom, FALSE, 0, 0);
+	set_zoom (scroll_view, zoom, FALSE, 0, 0);
 
 }
 
-void
-eog_scroll_view_zoom_out (EogScrollView *view, gboolean smooth)
+static void
+eog_scroll_view_zoom_out (EogView *view, gboolean smooth)
 {
+	EogScrollView *scroll_view;
 	EogScrollViewPrivate *priv;
 	double zoom;
 
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-	priv = view->priv;
+	scroll_view = EOG_SCROLL_VIEW (view);
+
+	priv = scroll_view->priv;
 
 	if (smooth) {
 		zoom = priv->zoom / priv->zoom_multiplier;
@@ -1847,52 +1889,56 @@ eog_scroll_view_zoom_out (EogScrollView *view, gboolean smooth)
 			zoom = preferred_zoom_levels [i];
 		}
 	}
-	set_zoom (view, zoom, FALSE, 0, 0);
+	set_zoom (scroll_view, zoom, FALSE, 0, 0);
 }
 
-void
-eog_scroll_view_zoom_fit (EogScrollView *view)
+static void
+eog_scroll_view_zoom_fit (EogView *view)
 {
+	EogScrollView *scroll_view;
+
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-	set_zoom_fit (view);
-	check_scrollbar_visibility (view, NULL);
-	gtk_widget_queue_draw (GTK_WIDGET (view->priv->display));
+	scroll_view = EOG_SCROLL_VIEW (view);
+
+	set_zoom_fit (scroll_view);
+	check_scrollbar_visibility (scroll_view, NULL);
+	gtk_widget_queue_draw (GTK_WIDGET (scroll_view->priv->display));
 }
 
-void
-eog_scroll_view_set_zoom (EogScrollView *view, double zoom)
+static void
+eog_scroll_view_set_zoom (EogView *view, double zoom)
 {
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-	set_zoom (view, zoom, FALSE, 0, 0);
+	set_zoom (EOG_SCROLL_VIEW (view), zoom, FALSE, 0, 0);
 }
 
-double
-eog_scroll_view_get_zoom (EogScrollView *view)
+static double
+eog_scroll_view_get_zoom (EogView *view)
 {
 	g_return_val_if_fail (EOG_IS_SCROLL_VIEW (view), 0.0);
 
-	return view->priv->zoom;
+	return EOG_SCROLL_VIEW (view)->priv->zoom;
 }
 
-gboolean
-eog_scroll_view_get_zoom_is_min (EogScrollView *view)
+static gboolean
+eog_scroll_view_get_zoom_is_min (EogView *view)
 {
 	g_return_val_if_fail (EOG_IS_SCROLL_VIEW (view), FALSE);
 
-	set_minimum_zoom_factor (view);
+	set_minimum_zoom_factor (EOG_SCROLL_VIEW (view));
 
-	return DOUBLE_EQUAL (view->priv->zoom, MIN_ZOOM_FACTOR) ||
-	       DOUBLE_EQUAL (view->priv->zoom, view->priv->min_zoom);
+	return DOUBLE_EQUAL (EOG_SCROLL_VIEW (view)->priv->zoom, MIN_ZOOM_FACTOR) || 
+	       DOUBLE_EQUAL (EOG_SCROLL_VIEW (view)->priv->zoom, EOG_SCROLL_VIEW (view)->priv->min_zoom);
 }
 
-gboolean
-eog_scroll_view_get_zoom_is_max (EogScrollView *view)
+static gboolean
+eog_scroll_view_get_zoom_is_max (EogView *view)
 {
 	g_return_val_if_fail (EOG_IS_SCROLL_VIEW (view), FALSE);
 
-	return DOUBLE_EQUAL (view->priv->zoom, MAX_ZOOM_FACTOR);
+	return DOUBLE_EQUAL (EOG_SCROLL_VIEW (view)->priv->zoom, MAX_ZOOM_FACTOR);
 }
 
 static void
@@ -1916,21 +1962,24 @@ display_next_frame_cb (EogImage *image, gint delay, gpointer data)
 	gtk_widget_queue_draw (GTK_WIDGET (priv->display)); 
 }
 
-void
-eog_scroll_view_set_image (EogScrollView *view, EogImage *image)
+static void
+eog_scroll_view_set_image (EogView *view, EogImage *image)
 {
+	EogScrollView *scroll_view;
 	EogScrollViewPrivate *priv;
 
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-	priv = view->priv;
+	scroll_view = EOG_SCROLL_VIEW (view);
+
+	priv = scroll_view->priv;
 
 	if (priv->image == image) {
 		return;
 	}
 
 	if (priv->image != NULL) {
-		free_image_resources (view);
+		free_image_resources (scroll_view);
 		if (GTK_WIDGET_DRAWABLE (priv->display) && image == NULL) {
 			gdk_window_clear (GTK_WIDGET (priv->display)->window);
 		}
@@ -1945,13 +1994,13 @@ eog_scroll_view_set_image (EogScrollView *view, EogImage *image)
 		if (priv->pixbuf == NULL) {
 			priv->pixbuf = eog_image_get_pixbuf (image);
 			priv->progressive_state = PROGRESSIVE_NONE;
-			set_zoom_fit (view);
-			check_scrollbar_visibility (view, NULL);
+			set_zoom_fit (scroll_view);
+			check_scrollbar_visibility (scroll_view, NULL);
 			gtk_widget_queue_draw (GTK_WIDGET (priv->display));
 
 		}
-		else if ((is_zoomed_in (view) && priv->interp_type_in != GDK_INTERP_NEAREST) ||
-			 (is_zoomed_out (view) && priv->interp_type_out != GDK_INTERP_NEAREST))
+		else if ((is_zoomed_in (scroll_view) && priv->interp_type_in != GDK_INTERP_NEAREST) ||
+			 (is_zoomed_out (scroll_view) && priv->interp_type_out != GDK_INTERP_NEAREST))
 		{
 			/* paint antialiased image version */
 			priv->progressive_state = PROGRESSIVE_POLISHING;
@@ -1959,22 +2008,22 @@ eog_scroll_view_set_image (EogScrollView *view, EogImage *image)
 		}
 
 		priv->image_changed_id = g_signal_connect (image, "changed",
-							   (GCallback) image_changed_cb, view);
+							   (GCallback) image_changed_cb, scroll_view);
 		if (eog_image_is_animation (image) == TRUE ) {
 			eog_image_start_animation (image);
 			priv->frame_changed_id = g_signal_connect (image, "next-frame", 
-								    (GCallback) display_next_frame_cb, view);
+								    (GCallback) display_next_frame_cb, scroll_view);
 		}
 	}
 
 	priv->image = image;
 }
 
-gboolean
-eog_scroll_view_scrollbars_visible (EogScrollView *view)
+static gboolean
+eog_scroll_view_scrollbars_visible (EogView *view)
 {
-	if (!GTK_WIDGET_VISIBLE (GTK_WIDGET (view->priv->hbar)) &&
-	    !GTK_WIDGET_VISIBLE (GTK_WIDGET (view->priv->vbar)))
+	if (!GTK_WIDGET_VISIBLE (GTK_WIDGET (EOG_SCROLL_VIEW (view)->priv->hbar)) && 
+	    !GTK_WIDGET_VISIBLE (GTK_WIDGET (EOG_SCROLL_VIEW (view)->priv->vbar)))
 		return FALSE;
 
 	return TRUE;
@@ -2047,16 +2096,6 @@ eog_scroll_view_class_init (EogScrollViewClass *klass)
 
 	gobject_class->dispose = eog_scroll_view_dispose;
 
-	view_signals [SIGNAL_ZOOM_CHANGED] =
-		g_signal_new ("zoom_changed",
-			      EOG_TYPE_SCROLL_VIEW,
-			      G_SIGNAL_RUN_LAST,
-			      G_STRUCT_OFFSET (EogScrollViewClass, zoom_changed),
-			      NULL, NULL,
-			      eog_marshal_VOID__DOUBLE,
-			      G_TYPE_NONE, 1,
-			      G_TYPE_DOUBLE);
-
 	widget_class->size_allocate = eog_scroll_view_size_allocate;
 	widget_class->style_set = eog_scroll_view_style_set;
 
@@ -2064,6 +2103,30 @@ eog_scroll_view_class_init (EogScrollViewClass *klass)
 }
 
 static void
+eog_scroll_view_iface_init (EogViewClass *iface)
+{
+	iface->set_image = eog_scroll_view_set_image;
+	iface->set_scroll_wheel_zoom = eog_scroll_view_set_scroll_wheel_zoom;
+	iface->set_zoom_upscale = eog_scroll_view_set_zoom_upscale;
+	iface->set_zoom_multiplier = eog_scroll_view_set_zoom_multiplier;
+	iface->set_antialiasing_in = eog_scroll_view_set_antialiasing_in;
+	iface->set_antialiasing_out = eog_scroll_view_set_antialiasing_out;
+	iface->set_transparency = eog_scroll_view_set_transparency;
+	iface->scrollbars_visible = eog_scroll_view_scrollbars_visible;
+	iface->set_popup = eog_scroll_view_set_popup;
+	iface->set_bg_color = eog_scroll_view_set_bg_color;
+	iface->zoom_in = eog_scroll_view_zoom_in;
+	iface->zoom_out = eog_scroll_view_zoom_out;
+	iface->zoom_fit = eog_scroll_view_zoom_fit;
+	iface->set_zoom = eog_scroll_view_set_zoom;
+	iface->get_zoom = eog_scroll_view_get_zoom;
+	iface->get_zoom_is_max = eog_scroll_view_get_zoom_is_max;
+	iface->get_zoom_is_min = eog_scroll_view_get_zoom_is_min;
+	iface->show_cursor = eog_scroll_view_show_cursor;
+	iface->hide_cursor = eog_scroll_view_hide_cursor;
+}
+
+static void
 view_on_drag_begin_cb (GtkWidget        *widget,
 		       GdkDragContext   *context,
 		       gpointer          user_data)
@@ -2231,25 +2294,30 @@ view_on_button_press_event_cb (GtkWidget *view, GdkEventButton *event,
     return FALSE;
 }
 
-void
-eog_scroll_view_set_popup (EogScrollView *view,
-			   GtkMenu *menu)
+static void
+eog_scroll_view_set_popup (EogView *view,
+  			   GtkMenu *menu)
 {
+	EogScrollView *scroll_view;
+
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
-	g_return_if_fail (view->priv->menu == NULL);
 
-	view->priv->menu = g_object_ref (menu);
+	scroll_view = EOG_SCROLL_VIEW (view);
+
+	g_return_if_fail (scroll_view->priv->menu == NULL);
+
+	scroll_view->priv->menu = g_object_ref (menu);
 
-	gtk_menu_attach_to_widget (GTK_MENU (view->priv->menu),
-				   GTK_WIDGET (view),
+	gtk_menu_attach_to_widget (GTK_MENU (scroll_view->priv->menu), 
+				   GTK_WIDGET (scroll_view),
 				   NULL);
 
-	g_signal_connect (G_OBJECT (view), "button_press_event",
+	g_signal_connect (G_OBJECT (scroll_view), "button_press_event",
 			  G_CALLBACK (view_on_button_press_event_cb), NULL);
 }
 
-void
-eog_scroll_view_set_bg_color (EogScrollView *view,
+static void
+eog_scroll_view_set_bg_color (EogView *view,
 			      GdkColor *color)
 {
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
@@ -2257,20 +2325,20 @@ eog_scroll_view_set_bg_color (EogScrollView *view,
 	gtk_widget_modify_bg (GTK_WIDGET (view), GTK_STATE_NORMAL, color);
 }
 
-void
-eog_scroll_view_set_scroll_wheel_zoom (EogScrollView *view,
-				       gboolean       scroll_wheel_zoom)
+static void
+eog_scroll_view_set_scroll_wheel_zoom (EogView *view,
+				       gboolean scroll_wheel_zoom)
 {
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-        view->priv->scroll_wheel_zoom = scroll_wheel_zoom;
+        EOG_SCROLL_VIEW (view)->priv->scroll_wheel_zoom = scroll_wheel_zoom;
 }
 
-void
-eog_scroll_view_set_zoom_multiplier (EogScrollView *view,
-				     gdouble        zoom_multiplier)
+static void
+eog_scroll_view_set_zoom_multiplier (EogView *view,
+				     gdouble zoom_multiplier)
 {
 	g_return_if_fail (EOG_IS_SCROLL_VIEW (view));
 
-        view->priv->zoom_multiplier = 1.0 + zoom_multiplier;
+        EOG_SCROLL_VIEW (view)->priv->zoom_multiplier = 1.0 + zoom_multiplier;
 }
diff --git a/src/eog-scroll-view.h b/src/eog-scroll-view.h
index baaf6f0..7f4c2bd 100644
--- a/src/eog-scroll-view.h
+++ b/src/eog-scroll-view.h
@@ -2,6 +2,7 @@
 #define _EOG_SCROLL_VIEW_H_
 
 #include <gtk/gtk.h>
+#include "eog-view.h"
 #include "eog-image.h"
 
 G_BEGIN_DECLS
@@ -25,44 +26,11 @@ struct _EogScrollView {
 
 struct _EogScrollViewClass {
 	GtkTableClass parent_class;
-
-	void (* zoom_changed) (EogScrollView *view, double zoom);
 };
 
-typedef enum {
-	EOG_TRANSP_BACKGROUND,
-	EOG_TRANSP_CHECKED,
-	EOG_TRANSP_COLOR
-} EogTransparencyStyle;
-
 GType    eog_scroll_view_get_type         (void) G_GNUC_CONST;
 GtkWidget* eog_scroll_view_new            (void);
 
-/* loading stuff */
-void     eog_scroll_view_set_image        (EogScrollView *view, EogImage *image);
-
-/* general properties */
-void     eog_scroll_view_set_scroll_wheel_zoom (EogScrollView *view, gboolean scroll_wheel_zoom);
-void     eog_scroll_view_set_zoom_upscale (EogScrollView *view, gboolean upscale);
-void     eog_scroll_view_set_zoom_multiplier (EogScrollView *view, gdouble multiplier);
-void     eog_scroll_view_set_antialiasing_in (EogScrollView *view, gboolean state);
-void     eog_scroll_view_set_antialiasing_out (EogScrollView *view, gboolean state);
-void     eog_scroll_view_set_transparency (EogScrollView *view, EogTransparencyStyle style, GdkColor *color);
-gboolean eog_scroll_view_scrollbars_visible (EogScrollView *view);
-void	 eog_scroll_view_set_popup (EogScrollView *view, GtkMenu *menu);
-void	 eog_scroll_view_set_bg_color (EogScrollView *view, GdkColor *color);
-
-/* zoom api */
-void     eog_scroll_view_zoom_in          (EogScrollView *view, gboolean smooth);
-void     eog_scroll_view_zoom_out         (EogScrollView *view, gboolean smooth);
-void     eog_scroll_view_zoom_fit         (EogScrollView *view);
-void     eog_scroll_view_set_zoom         (EogScrollView *view, double zoom);
-double   eog_scroll_view_get_zoom         (EogScrollView *view);
-gboolean eog_scroll_view_get_zoom_is_min  (EogScrollView *view);
-gboolean eog_scroll_view_get_zoom_is_max  (EogScrollView *view);
-void     eog_scroll_view_show_cursor      (EogScrollView *view);
-void     eog_scroll_view_hide_cursor      (EogScrollView *view);
-
 G_END_DECLS
 
 #endif /* _EOG_SCROLL_VIEW_H_ */
diff --git a/src/eog-window.c b/src/eog-window.c
index 7741a46..c9462cc 100644
--- a/src/eog-window.c
+++ b/src/eog-window.c
@@ -33,6 +33,7 @@
 
 #include "eog-window.h"
 #include "eog-scroll-view.h"
+#include "eog-view.h"
 #include "eog-debug.h"
 #include "eog-file-chooser.h"
 #include "eog-thumb-view.h"
@@ -239,14 +240,14 @@ eog_window_interp_in_type_changed_cb (GConfClient *client,
 
 	priv = EOG_WINDOW (user_data)->priv;
 
-	g_return_if_fail (EOG_IS_SCROLL_VIEW (priv->view));
+	g_return_if_fail (EOG_IS_VIEW (priv->view));
 
 	if (entry->value != NULL && entry->value->type == GCONF_VALUE_BOOL) {
 		interpolate_in = gconf_value_get_bool (entry->value);
 	}
 
-	eog_scroll_view_set_antialiasing_in (EOG_SCROLL_VIEW (priv->view),
-					  interpolate_in);
+	eog_view_set_antialiasing_in (EOG_VIEW (priv->view),
+				      interpolate_in);
 }
 
 static void
@@ -264,14 +265,14 @@ eog_window_interp_out_type_changed_cb (GConfClient *client,
 
 	priv = EOG_WINDOW (user_data)->priv;
 
-	g_return_if_fail (EOG_IS_SCROLL_VIEW (priv->view));
+	g_return_if_fail (EOG_IS_VIEW (priv->view));
 
 	if (entry->value != NULL && entry->value->type == GCONF_VALUE_BOOL) {
 		interpolate_out = gconf_value_get_bool (entry->value);
 	}
 
-	eog_scroll_view_set_antialiasing_out (EOG_SCROLL_VIEW (priv->view),
-					  interpolate_out);
+	eog_view_set_antialiasing_out (EOG_VIEW (priv->view),
+				       interpolate_out);
 }
 
 static void
@@ -289,13 +290,13 @@ eog_window_scroll_wheel_zoom_changed_cb (GConfClient *client,
 
 	priv = EOG_WINDOW (user_data)->priv;
 
-	g_return_if_fail (EOG_IS_SCROLL_VIEW (priv->view));
+	g_return_if_fail (EOG_IS_VIEW (priv->view));
 
 	if (entry->value != NULL && entry->value->type == GCONF_VALUE_BOOL) {
 		scroll_wheel_zoom = gconf_value_get_bool (entry->value);
 	}
 
-	eog_scroll_view_set_scroll_wheel_zoom (EOG_SCROLL_VIEW (priv->view),
+	eog_view_set_scroll_wheel_zoom (EOG_VIEW (priv->view),
 					       scroll_wheel_zoom);
 }
 
@@ -314,13 +315,13 @@ eog_window_zoom_multiplier_changed_cb (GConfClient *client,
 
 	priv = EOG_WINDOW (user_data)->priv;
 
-	g_return_if_fail (EOG_IS_SCROLL_VIEW (priv->view));
+	g_return_if_fail (EOG_IS_VIEW (priv->view));
 
 	if (entry->value != NULL && entry->value->type == GCONF_VALUE_FLOAT) {
 		multiplier = gconf_value_get_float (entry->value);
 	}
 
-	eog_scroll_view_set_zoom_multiplier (EOG_SCROLL_VIEW (priv->view),
+	eog_view_set_zoom_multiplier (EOG_VIEW (priv->view),
 					     multiplier);
 }
 
@@ -339,7 +340,7 @@ eog_window_transparency_changed_cb (GConfClient *client,
 
 	priv = EOG_WINDOW (user_data)->priv;
 
-	g_return_if_fail (EOG_IS_SCROLL_VIEW (priv->view));
+	g_return_if_fail (EOG_IS_VIEW (priv->view));
 
 	if (entry->value != NULL && entry->value->type == GCONF_VALUE_STRING) {
 		value = gconf_value_get_string (entry->value);
@@ -354,15 +355,15 @@ eog_window_transparency_changed_cb (GConfClient *client,
 		color_str = gconf_client_get_string (priv->client,
 						     EOG_CONF_VIEW_TRANS_COLOR, NULL);
 		if (gdk_color_parse (color_str, &color)) {
-			eog_scroll_view_set_transparency (EOG_SCROLL_VIEW (priv->view),
+			eog_view_set_transparency (EOG_VIEW (priv->view),
 							  EOG_TRANSP_COLOR, &color);
 		}
 		g_free (color_str);
 	} else if (g_ascii_strcasecmp (value, "CHECK_PATTERN") == 0) {
-		eog_scroll_view_set_transparency (EOG_SCROLL_VIEW (priv->view),
+		eog_view_set_transparency (EOG_VIEW (priv->view),
 						  EOG_TRANSP_CHECKED, NULL);
 	} else {
-		eog_scroll_view_set_transparency (EOG_SCROLL_VIEW (priv->view),
+		eog_view_set_transparency (EOG_VIEW (priv->view),
 						  EOG_TRANSP_BACKGROUND, NULL);
 	}
 }
@@ -384,7 +385,7 @@ eog_window_trans_color_changed_cb (GConfClient *client,
 
 	priv = EOG_WINDOW (user_data)->priv;
 
-	g_return_if_fail (EOG_IS_SCROLL_VIEW (priv->view));
+	g_return_if_fail (EOG_IS_VIEW (priv->view));
 
 	value = gconf_client_get_string (priv->client,
 					 EOG_CONF_VIEW_TRANSPARENCY,
@@ -399,7 +400,7 @@ eog_window_trans_color_changed_cb (GConfClient *client,
 		color_str = gconf_value_get_string (entry->value);
 
 		if (gdk_color_parse (color_str, &color)) {
-			eog_scroll_view_set_transparency (EOG_SCROLL_VIEW (priv->view),
+			eog_view_set_transparency (EOG_VIEW (priv->view),
 							  EOG_TRANSP_COLOR, &color);
 		}
 	}
@@ -421,7 +422,7 @@ eog_window_scroll_buttons_changed_cb (GConfClient *client,
 
 	priv = EOG_WINDOW (user_data)->priv;
 
-	g_return_if_fail (EOG_IS_SCROLL_VIEW (priv->view));
+	g_return_if_fail (EOG_IS_VIEW (priv->view));
 
 	if (entry->value != NULL && entry->value->type == GCONF_VALUE_BOOL) {
 		show_buttons = gconf_value_get_bool (entry->value);
@@ -750,7 +751,7 @@ update_status_bar (EogWindow *window)
 		int zoom, width, height;
 		goffset bytes = 0;
 
-		zoom = floor (100 * eog_scroll_view_get_zoom (EOG_SCROLL_VIEW (priv->view)) + 0.5);
+		zoom = floor (100 * eog_view_get_zoom (EOG_VIEW (priv->view)) + 0.5);
 
 		eog_image_get_size (priv->image, &width, &height);
 
@@ -1080,7 +1081,7 @@ eog_window_display_image (EogWindow *window, EogImage *image)
 		image_thumb_changed_cb (image, window);
 	}
 
-	eog_scroll_view_set_image (EOG_SCROLL_VIEW (priv->view), image);
+	eog_view_set_image (EOG_VIEW (priv->view), image);
 
 	gtk_window_set_title (GTK_WINDOW (window), eog_image_get_caption (image));
 
@@ -1508,7 +1509,7 @@ eog_job_load_cb (EogJobLoad *job, gpointer data)
 
 		update_status_bar (window);
 
-		eog_scroll_view_set_image (EOG_SCROLL_VIEW (priv->view), NULL);
+		eog_view_set_image (EOG_VIEW (priv->view), NULL);
 
         	if (window->priv->status == EOG_WINDOW_STATUS_INIT) {
 			update_action_groups_state (window);
@@ -1707,9 +1708,9 @@ view_zoom_changed_cb (GtkWidget *widget, double zoom, gpointer user_data)
 					     "ViewZoomOut");
 
 	gtk_action_set_sensitive (action_zoom_in,
-			!eog_scroll_view_get_zoom_is_max (EOG_SCROLL_VIEW (window->priv->view)));
+			!eog_view_get_zoom_is_max (EOG_VIEW (window->priv->view)));
 	gtk_action_set_sensitive (action_zoom_out,
-			!eog_scroll_view_get_zoom_is_min (EOG_SCROLL_VIEW (window->priv->view)));
+			!eog_view_get_zoom_is_min (EOG_VIEW (window->priv->view)));
 }
 
 static void
@@ -1841,7 +1842,7 @@ fullscreen_timeout_cb (gpointer data)
 
 	gtk_widget_hide_all (window->priv->fullscreen_popup);
 
-	eog_scroll_view_hide_cursor (EOG_SCROLL_VIEW (window->priv->view));
+	eog_view_hide_cursor (EOG_VIEW (window->priv->view));
 
 	fullscreen_clear_timeout (window);
 
@@ -1910,7 +1911,7 @@ fullscreen_set_timeout (EogWindow *window)
 
 	window->priv->fullscreen_timeout_source = source;
 
-	eog_scroll_view_show_cursor (EOG_SCROLL_VIEW (window->priv->view));
+	eog_view_show_cursor (EOG_VIEW (window->priv->view));
 }
 
 static void
@@ -2221,13 +2222,13 @@ eog_window_run_fullscreen (EogWindow *window, gboolean slideshow)
 					 EOG_CONF_FULLSCREEN_UPSCALE,
 					 NULL);
 
-	eog_scroll_view_set_zoom_upscale (EOG_SCROLL_VIEW (priv->view),
-					  upscale);
+	eog_view_set_zoom_upscale (EOG_VIEW (priv->view),
+				   upscale);
 
 	gtk_widget_grab_focus (priv->view);
 
-	eog_scroll_view_set_bg_color (EOG_SCROLL_VIEW (window->priv->view),
-				      &(GTK_WIDGET (window)->style->black));
+	eog_view_set_bg_color (EOG_VIEW (window->priv->view),
+			       &(GTK_WIDGET (window)->style->black));
 
 	{
 		GtkStyle *style;
@@ -2301,9 +2302,9 @@ eog_window_stop_fullscreen (EogWindow *window, gboolean slideshow)
 	g_assert (GTK_IS_WIDGET (menubar));
 	gtk_widget_show (menubar);
 
-	eog_scroll_view_set_zoom_upscale (EOG_SCROLL_VIEW (priv->view), FALSE);
+	eog_view_set_zoom_upscale (EOG_VIEW (priv->view), FALSE);
 
-	eog_scroll_view_set_bg_color (EOG_SCROLL_VIEW (window->priv->view), NULL);
+	eog_view_set_bg_color (EOG_VIEW (window->priv->view), NULL);
 	gtk_widget_set_style (window->priv->view->parent, NULL);
 	gtk_window_unfullscreen (GTK_WINDOW (window));
 
@@ -2313,7 +2314,7 @@ eog_window_stop_fullscreen (EogWindow *window, gboolean slideshow)
 		eog_window_update_fullscreen_action (window);
 	}
 
-	eog_scroll_view_show_cursor (EOG_SCROLL_VIEW (priv->view));
+	eog_view_show_cursor (EOG_VIEW (priv->view));
 
 #ifdef HAVE_DBUS
 	eog_application_screensaver_enable (EOG_APP);
@@ -3418,7 +3419,7 @@ eog_window_cmd_zoom_in (GtkAction *action, gpointer user_data)
 	priv = EOG_WINDOW (user_data)->priv;
 
 	if (priv->view) {
-		eog_scroll_view_zoom_in (EOG_SCROLL_VIEW (priv->view), FALSE);
+		eog_view_zoom_in (EOG_VIEW (priv->view), FALSE);
 	}
 }
 
@@ -3434,7 +3435,7 @@ eog_window_cmd_zoom_out (GtkAction *action, gpointer user_data)
 	priv = EOG_WINDOW (user_data)->priv;
 
 	if (priv->view) {
-		eog_scroll_view_zoom_out (EOG_SCROLL_VIEW (priv->view), FALSE);
+		eog_view_zoom_out (EOG_VIEW (priv->view), FALSE);
 	}
 }
 
@@ -3450,7 +3451,7 @@ eog_window_cmd_zoom_normal (GtkAction *action, gpointer user_data)
 	priv = EOG_WINDOW (user_data)->priv;
 
 	if (priv->view) {
-		eog_scroll_view_set_zoom (EOG_SCROLL_VIEW (priv->view), 1.0);
+		eog_view_set_zoom (EOG_VIEW (priv->view), 1.0);
 	}
 }
 
@@ -3466,7 +3467,7 @@ eog_window_cmd_zoom_fit (GtkAction *action, gpointer user_data)
 	priv = EOG_WINDOW (user_data)->priv;
 
 	if (priv->view) {
-		eog_scroll_view_zoom_fit (EOG_SCROLL_VIEW (priv->view));
+		eog_view_zoom_fit (EOG_VIEW (priv->view));
 	}
 }
 
@@ -4212,7 +4213,7 @@ eog_window_construct_ui (EogWindow *window)
 			  window);
 
 	view_popup = gtk_ui_manager_get_widget (priv->ui_mgr, "/ViewPopup");
-	eog_scroll_view_set_popup (EOG_SCROLL_VIEW (priv->view),
+	eog_view_set_popup (EOG_VIEW (priv->view),
 				   GTK_MENU (view_popup));
 
 	frame = gtk_widget_new (GTK_TYPE_FRAME,
@@ -4665,7 +4666,7 @@ eog_window_key_press (GtkWidget *widget, GdkEventKey *event)
 			break;
 		} /* else fall-trough is intended */
 	case GDK_Up:
-		if (eog_scroll_view_scrollbars_visible (EOG_SCROLL_VIEW (EOG_WINDOW (widget)->priv->view))) {
+		if (eog_view_scrollbars_visible (EOG_VIEW (EOG_WINDOW (widget)->priv->view))) {
 			/* break to let scrollview handle the key */
 			break;
 		}
@@ -4696,7 +4697,7 @@ eog_window_key_press (GtkWidget *widget, GdkEventKey *event)
 			break;
 		} /* else fall-trough is intended */
 	case GDK_Down:
-		if (eog_scroll_view_scrollbars_visible (EOG_SCROLL_VIEW (EOG_WINDOW (widget)->priv->view))) {
+		if (eog_view_scrollbars_visible (EOG_VIEW (EOG_WINDOW (widget)->priv->view))) {
 			/* break to let scrollview handle the key */
 			break;
 		}
@@ -4716,7 +4717,7 @@ eog_window_key_press (GtkWidget *widget, GdkEventKey *event)
 			break;
 		}
 	case GDK_Page_Up:
-		if (!eog_scroll_view_scrollbars_visible (EOG_SCROLL_VIEW (EOG_WINDOW (widget)->priv->view))) {
+		if (!eog_view_scrollbars_visible (EOG_VIEW (EOG_WINDOW (widget)->priv->view))) {
 			if (!GTK_WIDGET_VISIBLE (EOG_WINDOW (widget)->priv->nav)) {
 				/* If the iconview is not visible skip to the
 				 * previous image manually as it won't handle
@@ -4729,7 +4730,7 @@ eog_window_key_press (GtkWidget *widget, GdkEventKey *event)
 		}
 		break;
 	case GDK_Page_Down:
-		if (!eog_scroll_view_scrollbars_visible (EOG_SCROLL_VIEW (EOG_WINDOW (widget)->priv->view))) {
+		if (!eog_view_scrollbars_visible (EOG_VIEW (EOG_WINDOW (widget)->priv->view))) {
 			if (!GTK_WIDGET_VISIBLE (EOG_WINDOW (widget)->priv->nav)) {
 				/* If the iconview is not visible skip to the
 				 * next image manually as it won't handle
@@ -5386,7 +5387,7 @@ eog_window_reload_image (EogWindow *window)
 	window->priv->image = NULL;
 
 	view = eog_window_get_view (window);
-	eog_scroll_view_set_image (EOG_SCROLL_VIEW (view), NULL);
+	eog_view_set_image (EOG_VIEW (view), NULL);
 
 	eog_thumb_view_select_single (EOG_THUMB_VIEW (window->priv->thumbview),
 				      EOG_THUMB_VIEW_SELECT_CURRENT);



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