[Goodies-commits] r2283 - ristretto/trunk/src

Stephan Arts stephan at xfce.org
Fri Dec 29 01:26:29 CET 2006


Author: stephan
Date: 2006-12-29 00:26:29 +0000 (Fri, 29 Dec 2006)
New Revision: 2283

Modified:
   ristretto/trunk/src/picture_viewer.c
   ristretto/trunk/src/picture_viewer.h
Log:
scroll bars actually do something (only seen when resizing window afterwards though)

Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2006-12-28 16:06:48 UTC (rev 2282)
+++ ristretto/trunk/src/picture_viewer.c	2006-12-29 00:26:29 UTC (rev 2283)
@@ -43,6 +43,9 @@
 static void
 rstto_picture_viewer_set_scroll_adjustments(RsttoPictureViewer *, GtkAdjustment *, GtkAdjustment *);
 
+static void
+cb_rstto_picture_viewer_value_changed(GtkAdjustment *adjustment, RsttoPictureViewer *viewer);
+
 static GtkWidgetClass *parent_class = NULL;
 
 GType
@@ -75,18 +78,14 @@
 rstto_picture_viewer_init(RsttoPictureViewer *viewer)
 {
 	//GTK_WIDGET_SET_FLAGS(viewer, GTK_NO_WINDOW);
+	viewer->cb_value_changed = cb_rstto_picture_viewer_value_changed;
+
 	viewer->dst_pixbuf = NULL;
 	gtk_widget_set_redraw_on_allocate(GTK_WIDGET(viewer), TRUE);
 
-	viewer->scale = 1;
+	viewer->scale = 12;
 
 	viewer->src_pixbuf = gdk_pixbuf_new_from_file("test.png", NULL);
-	//gint width = gdk_pixbuf_get_width(viewer->src_pixbuf);
-	//gint height = gdk_pixbuf_get_height(viewer->src_pixbuf);
-
-//	viewer->hadjustment = (GtkAdjustment *)gtk_adjustment_new(0, 0, 0, 0.1, 0.9, 0);
-//	viewer->vadjustment = (GtkAdjustment *)gtk_adjustment_new(0, 0, 0, 0.1, 0.9, 0);
-
 }
 
 static void
@@ -147,6 +146,10 @@
 	viewer->vadjustment->upper = height * viewer->scale;
 	viewer->hadjustment->lower = 0;
 	viewer->vadjustment->lower = 0;
+	viewer->hadjustment->step_increment = 1;
+	viewer->hadjustment->page_increment = 100;
+	viewer->vadjustment->step_increment = 1;
+	viewer->vadjustment->page_increment = 100;
 
 	if((viewer->vadjustment->value + viewer->vadjustment->page_size) > viewer->vadjustment->upper)
 	{
@@ -162,8 +165,8 @@
 
 	GdkPixbuf *tmp_pixbuf = NULL;
 	tmp_pixbuf = gdk_pixbuf_new_subpixbuf(viewer->src_pixbuf,
-	                         0,
-													 0,
+	                         viewer->hadjustment->value / viewer->scale >= 0? viewer->hadjustment->value / viewer->scale : 0,
+	                         viewer->vadjustment->value / viewer->scale >= 0? viewer->vadjustment->value / viewer->scale : 0,
 													 ((allocation->width/viewer->scale)+1) < width?allocation->width/viewer->scale+1:width,
 													 ((allocation->height/viewer->scale)+1)< height?allocation->height/viewer->scale+1:height);
 
@@ -231,7 +234,6 @@
 static void
 rstto_picture_viewer_unrealize(GtkWidget *widget)
 {
-
 }
 
 static gboolean
@@ -264,10 +266,38 @@
 static void
 rstto_picture_viewer_set_scroll_adjustments(RsttoPictureViewer *viewer, GtkAdjustment *hadjustment, GtkAdjustment *vadjustment)
 {
+	if(viewer->hadjustment)
+	{
+		g_signal_handlers_disconnect_by_func(viewer->hadjustment, viewer->cb_value_changed, viewer);
+		g_object_unref(viewer->hadjustment);
+	}
+	if(viewer->vadjustment)
+	{
+		g_signal_handlers_disconnect_by_func(viewer->vadjustment, viewer->cb_value_changed, viewer);
+		g_object_unref(viewer->vadjustment);
+	}
+
 	viewer->hadjustment = hadjustment;
 	viewer->vadjustment = vadjustment;
+
+	if(viewer->hadjustment)
+	{
+		g_signal_connect(G_OBJECT(viewer->hadjustment), "value-changed", (GCallback)viewer->cb_value_changed, viewer);
+		g_object_ref(viewer->hadjustment);
+	}
+	if(viewer->vadjustment)
+	{
+		g_signal_connect(G_OBJECT(viewer->vadjustment), "value-changed", (GCallback)viewer->cb_value_changed, viewer);
+		g_object_ref(viewer->vadjustment);
+	}
 }
 
+static void
+cb_rstto_picture_viewer_value_changed(GtkAdjustment *adjustment, RsttoPictureViewer *viewer)
+{
+	g_debug("value changed");
+}
+
 GtkWidget *
 rstto_picture_viewer_new()
 {

Modified: ristretto/trunk/src/picture_viewer.h
===================================================================
--- ristretto/trunk/src/picture_viewer.h	2006-12-28 16:06:48 UTC (rev 2282)
+++ ristretto/trunk/src/picture_viewer.h	2006-12-29 00:26:29 UTC (rev 2283)
@@ -51,6 +51,7 @@
 	GtkAdjustment    *vadjustment;
 	GtkAdjustment    *hadjustment;
 	gdouble           scale;
+	void             (*cb_value_changed)(GtkAdjustment *, RsttoPictureViewer *);
 };
 
 typedef struct _RsttoPictureViewerClass RsttoPictureViewerClass;




More information about the Goodies-commits mailing list