[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