[Goodies-commits] r3032 - ristretto/trunk/src
Stephan Arts
stephan at xfce.org
Wed Aug 22 09:05:47 CEST 2007
Author: stephan
Date: 2007-08-22 07:05:47 +0000 (Wed, 22 Aug 2007)
New Revision: 3032
Modified:
ristretto/trunk/src/picture_viewer.c
Log:
remove issue with gtk-adjustments
Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c 2007-08-21 21:51:26 UTC (rev 3031)
+++ ristretto/trunk/src/picture_viewer.c 2007-08-22 07:05:47 UTC (rev 3032)
@@ -371,11 +371,18 @@
gdouble height = (gdouble)gdk_pixbuf_get_height(viewer->priv->src_pixbuf);
GdkPixbuf *tmp_pixbuf = NULL;
- tmp_pixbuf = gdk_pixbuf_new_subpixbuf(viewer->priv->src_pixbuf,
- viewer->hadjustment->value / viewer->priv->scale >= 0? viewer->hadjustment->value / viewer->priv->scale : 0,
- viewer->vadjustment->value / viewer->priv->scale >= 0? viewer->vadjustment->value / viewer->priv->scale : 0,
- ((GTK_WIDGET(viewer)->allocation.width/viewer->priv->scale)) < width?GTK_WIDGET(viewer)->allocation.width/viewer->priv->scale:width,
- ((GTK_WIDGET(viewer)->allocation.height/viewer->priv->scale)) < height?GTK_WIDGET(viewer)->allocation.height/viewer->priv->scale:height);
+ if (viewer->hadjustment && viewer->vadjustment)
+ {
+ tmp_pixbuf = gdk_pixbuf_new_subpixbuf(viewer->priv->src_pixbuf,
+ viewer->hadjustment->value / viewer->priv->scale >= 0?
+ viewer->hadjustment->value / viewer->priv->scale : 0,
+ viewer->vadjustment->value / viewer->priv->scale >= 0?
+ viewer->vadjustment->value / viewer->priv->scale : 0,
+ ((GTK_WIDGET(viewer)->allocation.width/viewer->priv->scale)) < width?
+ GTK_WIDGET(viewer)->allocation.width/viewer->priv->scale:width,
+ ((GTK_WIDGET(viewer)->allocation.height/viewer->priv->scale)) < height?
+ GTK_WIDGET(viewer)->allocation.height/viewer->priv->scale:height);
+ }
if(viewer->priv->dst_pixbuf)
{
@@ -383,12 +390,12 @@
viewer->priv->dst_pixbuf = NULL;
}
- viewer->priv->dst_pixbuf = gdk_pixbuf_scale_simple(tmp_pixbuf,
+ if(tmp_pixbuf)
+ {
+ viewer->priv->dst_pixbuf = gdk_pixbuf_scale_simple(tmp_pixbuf,
gdk_pixbuf_get_width(tmp_pixbuf)*viewer->priv->scale,
gdk_pixbuf_get_height(tmp_pixbuf)*viewer->priv->scale,
GDK_INTERP_BILINEAR);
- if(tmp_pixbuf)
- {
g_object_unref(tmp_pixbuf);
tmp_pixbuf = NULL;
}
@@ -444,6 +451,8 @@
{
GtkWidget *widget = GTK_WIDGET(viewer);
gboolean changed;
+ gboolean vadjustment_changed = FALSE;
+ gboolean hadjustment_changed = FALSE;
if(viewer->priv->src_pixbuf)
{
@@ -485,7 +494,7 @@
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);
+ hadjustment_changed = TRUE;
}
}
if(viewer->vadjustment)
@@ -497,8 +506,8 @@
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);
+ viewer->vadjustment->value = viewer->vadjustment->upper - viewer->vadjustment->page_size - 1;
+ vadjustment_changed = TRUE;
}
}
@@ -537,6 +546,11 @@
gtk_adjustment_changed(viewer->hadjustment);
gtk_adjustment_changed(viewer->vadjustment);
}
+ if (hadjustment_changed == TRUE)
+ gtk_adjustment_value_changed(viewer->hadjustment);
+ if (vadjustment_changed == TRUE)
+ gtk_adjustment_value_changed(viewer->vadjustment);
+
cursor = gdk_cursor_new(GDK_LEFT_PTR);
gdk_window_set_cursor(widget->window, cursor);
gdk_cursor_unref(cursor);
More information about the Goodies-commits
mailing list