[gthumb] viewer: do not call a zoom_changed when changing image



commit 735d09a498348d0b024761afb5b16d1c68fa8ffa
Author: Paolo Bacchilega <paobac src gnome org>
Date:   Sun Oct 13 12:10:49 2013 +0200

    viewer: do not call a zoom_changed when changing image
    
    this avoids some useless scaling

 gthumb/gth-image-viewer.c |   15 +++++++++++----
 1 files changed, 11 insertions(+), 4 deletions(-)
---
diff --git a/gthumb/gth-image-viewer.c b/gthumb/gth-image-viewer.c
index 040b830..c82d091 100644
--- a/gthumb/gth-image-viewer.c
+++ b/gthumb/gth-image-viewer.c
@@ -120,6 +120,7 @@ struct _GthImageViewerPrivate {
        gboolean                just_focused;
        gboolean                black_bg;
        gboolean                skip_zoom_change;
+       gboolean                update_image_after_zoom;
        gboolean                reset_scrollbars;
 
        GList                  *painters;
@@ -358,7 +359,10 @@ set_zoom (GthImageViewer *self,
        self->priv->zoom_level = zoom_level;
 
        _gth_image_viewer_update_image_area (self);
-       gth_image_viewer_tool_zoom_changed (self->priv->tool);
+       if (self->priv->update_image_after_zoom)
+               gth_image_viewer_tool_image_changed (self->priv->tool);
+       else
+               gth_image_viewer_tool_zoom_changed (self->priv->tool);
 
        if (! self->priv->skip_zoom_change)
                g_signal_emit (G_OBJECT (self),
@@ -1560,6 +1564,7 @@ gth_image_viewer_init (GthImageViewer *self)
        self->priv->doing_zoom_fit = FALSE;
 
        self->priv->skip_zoom_change = FALSE;
+       self->priv->update_image_after_zoom = FALSE;
 
        self->priv->is_void = TRUE;
        self->x_offset = 0;
@@ -1652,10 +1657,12 @@ _gth_image_viewer_content_changed (GthImageViewer *self,
                self->y_offset = 0;
        }
 
-       gth_image_viewer_tool_image_changed (self->priv->tool);
-
-       if (better_quality)
+       if (better_quality || ! self->priv->zoom_enabled) {
+               gth_image_viewer_tool_image_changed (self->priv->tool);
                return;
+       }
+
+       self->priv->update_image_after_zoom = TRUE;
 
        switch (self->priv->zoom_change) {
        case GTH_ZOOM_CHANGE_ACTUAL_SIZE:


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]