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

Stephan Arts stephan at xfce.org
Fri Jul 13 01:11:09 CEST 2007


Author: stephan
Date: 2007-07-12 23:11:09 +0000 (Thu, 12 Jul 2007)
New Revision: 2903

Modified:
   ristretto/trunk/src/picture_viewer.c
Log:
Fixed refresh issue



Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2007-07-12 22:51:09 UTC (rev 2902)
+++ ristretto/trunk/src/picture_viewer.c	2007-07-12 23:11:09 UTC (rev 2903)
@@ -192,6 +192,7 @@
 static gboolean
 rstto_picture_viewer_expose(GtkWidget *widget, GdkEventExpose *event)
 {
+	rstto_picture_viewer_refresh(RSTTO_PICTURE_VIEWER(widget));
 	rstto_picture_viewer_paint(widget);
 
 	return FALSE;
@@ -276,8 +277,8 @@
 	tmp_pixbuf = gdk_pixbuf_new_subpixbuf(viewer->src_pixbuf,
 	                         viewer->hadjustment->value / viewer->scale >= 0? viewer->hadjustment->value / viewer->scale : 0,
 	                         viewer->vadjustment->value / viewer->scale >= 0? viewer->vadjustment->value / viewer->scale : 0,
-													 ((GTK_WIDGET(viewer)->allocation.width/viewer->scale)) < width?GTK_WIDGET(viewer)->allocation.width/viewer->scale:width,
-													 ((GTK_WIDGET(viewer)->allocation.height/viewer->scale)) < height?GTK_WIDGET(viewer)->allocation.height/viewer->scale:height);
+	                         ((GTK_WIDGET(viewer)->allocation.width/viewer->scale)) < width?GTK_WIDGET(viewer)->allocation.width/viewer->scale:width,
+                             ((GTK_WIDGET(viewer)->allocation.height/viewer->scale)) < height?GTK_WIDGET(viewer)->allocation.height/viewer->scale:height);
 
 	if(viewer->dst_pixbuf)
 	{
@@ -343,7 +344,17 @@
 void
 rstto_picture_viewer_set_pixbuf(RsttoPictureViewer *viewer, GdkPixbuf *pixbuf)
 {
+	if(viewer->src_pixbuf)
+		g_object_unref(viewer->src_pixbuf);
+
 	viewer->src_pixbuf = pixbuf;
+
+	if(viewer->src_pixbuf)
+	{
+		g_object_ref(viewer->src_pixbuf);
+		rstto_picture_viewer_refresh(viewer);
+		rstto_picture_viewer_paint(GTK_WIDGET(viewer));
+	}
 }
 
 static void
@@ -352,60 +363,63 @@
 	GtkWidget *widget = GTK_WIDGET(viewer);
 	if(viewer->src_pixbuf)
 	{
-		gdouble width = (gdouble)gdk_pixbuf_get_width(viewer->src_pixbuf);
-		gdouble height = (gdouble)gdk_pixbuf_get_height(viewer->src_pixbuf);
-		
-		if(viewer->hadjustment)
+		if(GTK_WIDGET_REALIZED(widget))
 		{
-			viewer->hadjustment->page_size = widget->allocation.width;
-			viewer->hadjustment->upper = width * viewer->scale;
-			viewer->hadjustment->lower = 0;
-			viewer->hadjustment->step_increment = 1;
-			viewer->hadjustment->page_increment = 100;
-		}
-		if(viewer->vadjustment)
-		{
-			viewer->vadjustment->page_size = widget->allocation.height;
-			viewer->vadjustment->upper = height * viewer->scale;
-			viewer->vadjustment->lower = 0;
-			viewer->vadjustment->step_increment = 1;
-			viewer->vadjustment->page_increment = 100;
-		}
+			gdouble width = (gdouble)gdk_pixbuf_get_width(viewer->src_pixbuf);
+			gdouble height = (gdouble)gdk_pixbuf_get_height(viewer->src_pixbuf);
+			
+			if(viewer->hadjustment)
+			{
+				viewer->hadjustment->page_size = widget->allocation.width;
+				viewer->hadjustment->upper = width * viewer->scale;
+				viewer->hadjustment->lower = 0;
+				viewer->hadjustment->step_increment = 1;
+				viewer->hadjustment->page_increment = 100;
+			}
+			if(viewer->vadjustment)
+			{
+				viewer->vadjustment->page_size = widget->allocation.height;
+				viewer->vadjustment->upper = height * viewer->scale;
+				viewer->vadjustment->lower = 0;
+				viewer->vadjustment->step_increment = 1;
+				viewer->vadjustment->page_increment = 100;
+			}
 
-		if((viewer->vadjustment->value + viewer->vadjustment->page_size) > viewer->vadjustment->upper)
-		{
-			viewer->vadjustment->value = viewer->vadjustment->upper - viewer->vadjustment->page_size;
-			gtk_adjustment_value_changed(viewer->vadjustment);
-		}
-		if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
-		{
-			viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
-			gtk_adjustment_value_changed(viewer->hadjustment);
-		}
+			if((viewer->vadjustment->value + viewer->vadjustment->page_size) > viewer->vadjustment->upper)
+			{
+				viewer->vadjustment->value = viewer->vadjustment->upper - viewer->vadjustment->page_size;
+				gtk_adjustment_value_changed(viewer->vadjustment);
+			}
+			if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
+			{
+				viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
+				gtk_adjustment_value_changed(viewer->hadjustment);
+			}
 
 
-		GdkPixbuf *tmp_pixbuf = NULL;
-		tmp_pixbuf = gdk_pixbuf_new_subpixbuf(viewer->src_pixbuf,
-														 viewer->hadjustment->value / viewer->scale >= 0? viewer->hadjustment->value / viewer->scale : 0,
-														 viewer->vadjustment->value / viewer->scale >= 0? viewer->vadjustment->value / viewer->scale : 0,
-														 ((widget->allocation.width/viewer->scale)) < width?widget->allocation.width/viewer->scale:width,
-														 ((widget->allocation.height/viewer->scale))< height?widget->allocation.height/viewer->scale:height);
+			GdkPixbuf *tmp_pixbuf = NULL;
+			tmp_pixbuf = gdk_pixbuf_new_subpixbuf(viewer->src_pixbuf,
+												  viewer->hadjustment->value / viewer->scale >= 0? viewer->hadjustment->value / viewer->scale : 0,
+												  viewer->vadjustment->value / viewer->scale >= 0? viewer->vadjustment->value / viewer->scale : 0,
+												  ((widget->allocation.width/viewer->scale)) < width?widget->allocation.width/viewer->scale:width,
+												  ((widget->allocation.height/viewer->scale))< height?widget->allocation.height/viewer->scale:height);
 
-		if(viewer->dst_pixbuf)
-		{
-			g_object_unref(viewer->dst_pixbuf);
-			viewer->dst_pixbuf = NULL;
-		}
-		viewer->dst_pixbuf = gdk_pixbuf_scale_simple(tmp_pixbuf, gdk_pixbuf_get_width(tmp_pixbuf)*viewer->scale, gdk_pixbuf_get_height(tmp_pixbuf)*viewer->scale, GDK_INTERP_BILINEAR);
+			if(viewer->dst_pixbuf)
+			{
+				g_object_unref(viewer->dst_pixbuf);
+				viewer->dst_pixbuf = NULL;
+			}
+			viewer->dst_pixbuf = gdk_pixbuf_scale_simple(tmp_pixbuf, gdk_pixbuf_get_width(tmp_pixbuf)*viewer->scale, gdk_pixbuf_get_height(tmp_pixbuf)*viewer->scale, GDK_INTERP_BILINEAR);
 
-		if(tmp_pixbuf)
-		{
-			g_object_unref(tmp_pixbuf);
-			tmp_pixbuf = NULL;
+			if(tmp_pixbuf)
+			{
+				g_object_unref(tmp_pixbuf);
+				tmp_pixbuf = NULL;
+			}
+
+			gtk_adjustment_changed(viewer->hadjustment);
+			gtk_adjustment_changed(viewer->vadjustment);
 		}
-
-		gtk_adjustment_changed(viewer->hadjustment);
-		gtk_adjustment_changed(viewer->vadjustment);
 	}
 
 }




More information about the Goodies-commits mailing list