[Xfce4-commits] <ristretto:master> Fix rounding error that generates continues rewrites.
Stephan Arts
noreply at xfce.org
Fri Oct 21 20:40:01 CEST 2011
Updating branch refs/heads/master
to d818d60cd4c05ea1326c747a583c9ca76a42ba81 (commit)
from 72f74c701c2adc4694809a057f47dde73f3bb2fb (commit)
commit d818d60cd4c05ea1326c747a583c9ca76a42ba81
Author: Stephan Arts <stephan at xfce.org>
Date: Fri Oct 21 20:35:54 2011 +0200
Fix rounding error that generates continues rewrites.
- floor() the upper limits of the adjustments, this prevents
the upper-limit to be larger then the page-size when auto_scaling.
src/image_viewer.c | 33 ++++++++++++---------------------
1 files changed, 12 insertions(+), 21 deletions(-)
diff --git a/src/image_viewer.c b/src/image_viewer.c
index 7218d22..55427f0 100644
--- a/src/image_viewer.c
+++ b/src/image_viewer.c
@@ -808,10 +808,10 @@ correct_adjustments ( RsttoImageViewer *viewer )
case RSTTO_IMAGE_ORIENT_180:
gtk_adjustment_set_upper (
viewer->hadjustment,
- ceil(image_width * scale));
+ floor(image_width * scale));
gtk_adjustment_set_upper (
viewer->vadjustment,
- ceil(image_height * scale));
+ floor(image_height * scale));
gtk_adjustment_set_page_size (
viewer->hadjustment,
@@ -826,8 +826,8 @@ correct_adjustments ( RsttoImageViewer *viewer )
{
gtk_adjustment_set_value (
viewer->hadjustment,
- (image_width * scale) -
- (gdouble)widget->allocation.width);
+ floor((image_width * scale) -
+ (gdouble)widget->allocation.width));
}
if ( ( gtk_adjustment_get_value (viewer->vadjustment) +
@@ -836,18 +836,18 @@ correct_adjustments ( RsttoImageViewer *viewer )
{
gtk_adjustment_set_value (
viewer->vadjustment,
- (image_height * scale) -
- (gdouble)widget->allocation.height);
+ floor((image_height * scale) -
+ (gdouble)widget->allocation.height));
}
break;
case RSTTO_IMAGE_ORIENT_90:
case RSTTO_IMAGE_ORIENT_270:
gtk_adjustment_set_upper (
viewer->hadjustment,
- ceil(image_height * scale));
+ floor(image_height * scale));
gtk_adjustment_set_upper (
viewer->vadjustment,
- ceil(image_width * scale));
+ floor(image_width * scale));
gtk_adjustment_set_page_size (
viewer->hadjustment,
@@ -1187,7 +1187,6 @@ rstto_image_viewer_paint (GtkWidget *widget, cairo_t *ctx)
{
RsttoImageViewer *viewer = RSTTO_IMAGE_VIEWER (widget);
-
if(GTK_WIDGET_REALIZED(widget))
{
@@ -1964,14 +1963,14 @@ rstto_scroll_event (
gtk_adjustment_set_upper (
viewer->hadjustment,
- (gdouble)viewer->priv->image_width*viewer->priv->scale);
+ floor((gdouble)viewer->priv->image_width*viewer->priv->scale));
gtk_adjustment_set_value (
viewer->hadjustment,
(tmp_x * scale - event->x));
gtk_adjustment_set_upper (
viewer->vadjustment,
- (gdouble)viewer->priv->image_height*viewer->priv->scale);
+ floor((gdouble)viewer->priv->image_height*viewer->priv->scale));
gtk_adjustment_set_value (
viewer->vadjustment,
(tmp_y * scale - event->y));
@@ -1983,14 +1982,6 @@ rstto_scroll_event (
g_object_thaw_notify(G_OBJECT(viewer->hadjustment));
- /*
- * Trigger the 'changed' signal, update the rest
- * of
- * the appliaction.
- */
- gtk_adjustment_changed(viewer->hadjustment);
- gtk_adjustment_changed(viewer->vadjustment);
-
/* Invalidate the entire window */
gdk_window_invalidate_rect (
widget->window,
@@ -2253,14 +2244,14 @@ rstto_button_release_event (
gtk_adjustment_set_upper (
viewer->hadjustment,
- (gdouble)viewer->priv->image_width*viewer->priv->scale);
+ floor((gdouble)viewer->priv->image_width*viewer->priv->scale));
gtk_adjustment_set_value (
viewer->hadjustment,
(tmp_x * scale - ((gdouble)gtk_adjustment_get_page_size(viewer->hadjustment)/2)));
gtk_adjustment_set_upper (
viewer->vadjustment,
- (gdouble)viewer->priv->image_height*viewer->priv->scale);
+ floor((gdouble)viewer->priv->image_height*viewer->priv->scale));
gtk_adjustment_set_value (
viewer->vadjustment,
(tmp_y * scale - ((gdouble)gtk_adjustment_get_page_size(viewer->vadjustment)/2)));
More information about the Xfce4-commits
mailing list