[gthumb] fixed the navigator when the loaded image is not at the original size
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb] fixed the navigator when the loaded image is not at the original size
- Date: Sat, 9 Nov 2013 19:58:31 +0000 (UTC)
commit a47e668f7f9e18c917b5b39157c9468eab4fd963
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sat Sep 21 21:32:33 2013 +0200
fixed the navigator when the loaded image is not at the original size
gthumb/gth-image-navigator.c | 12 ++++++------
gthumb/gth-image-viewer.c | 32 ++++++++++++++++++++++++++++++--
gthumb/gth-image-viewer.h | 3 +++
3 files changed, 39 insertions(+), 8 deletions(-)
---
diff --git a/gthumb/gth-image-navigator.c b/gthumb/gth-image-navigator.c
index 6a8dac1..134c97b 100644
--- a/gthumb/gth-image-navigator.c
+++ b/gthumb/gth-image-navigator.c
@@ -30,8 +30,8 @@
#define VISIBLE_AREA_BORDER 2.0
-#define POPUP_BORDER 4
-#define POPUP_BORDER_2 8
+#define POPUP_BORDER 2
+#define POPUP_BORDER_2 (POPUP_BORDER*2)
#define POPUP_MAX_WIDTH 112
#define POPUP_MAX_HEIGHT 112
@@ -460,7 +460,7 @@ popup_window_event_cb (GtkWidget *widget,
mx = (int) (x / nav_popup->zoom_factor);
my = (int) (y / nav_popup->zoom_factor);
- gth_image_viewer_scroll_to (viewer, mx, my);
+ gth_image_viewer_set_scroll_offset (viewer, mx, my);
gtk_widget_queue_draw (widget);
gdk_window_process_updates (gtk_widget_get_window (widget), TRUE);
@@ -620,9 +620,9 @@ navigator_event_area_button_press_event_cb (GtkWidget *widget,
nav_popup->x_root = event->x_root;
nav_popup->y_root = event->y_root;
- gth_image_viewer_get_original_size (GTH_IMAGE_VIEWER (self->priv->viewer),
- &nav_popup->image_width,
- &nav_popup->image_height);
+
+ nav_popup->image_width = gth_image_viewer_get_image_width (GTH_IMAGE_VIEWER (self->priv->viewer));
+ nav_popup->image_height = gth_image_viewer_get_image_height (GTH_IMAGE_VIEWER (self->priv->viewer));
update_popup_geometry (nav_popup);
g_signal_connect (G_OBJECT (nav_popup->popup_win),
diff --git a/gthumb/gth-image-viewer.c b/gthumb/gth-image-viewer.c
index 00b7986..87a3813 100644
--- a/gthumb/gth-image-viewer.c
+++ b/gthumb/gth-image-viewer.c
@@ -219,6 +219,19 @@ get_prev_zoom (double zoom)
}
+static double
+_gth_image_viewer_get_quality_zoom (GthImageViewer *self)
+{
+ cairo_surface_t *image;
+
+ image = gth_image_viewer_get_current_image (self);
+ if (self->priv->original_width <= 0)
+ return 1.0;
+
+ return (double) cairo_image_surface_get_width (image) / self->priv->original_width;
+}
+
+
static void
_gth_image_viewer_get_zoomed_size_for_zoom (GthImageViewer *self,
int *width,
@@ -2384,12 +2397,27 @@ gth_image_viewer_scroll_page_y (GthImageViewer *self,
void
+gth_image_viewer_set_scroll_offset (GthImageViewer *self,
+ int x,
+ int y)
+{
+ double quality_zoom;
+
+ quality_zoom = _gth_image_viewer_get_quality_zoom (self);
+ gth_image_viewer_scroll_to (self, x / quality_zoom, y / quality_zoom);
+}
+
+
+void
gth_image_viewer_get_scroll_offset (GthImageViewer *self,
int *x,
int *y)
{
- *x = self->x_offset;
- *y = self->y_offset;
+ double quality_zoom;
+
+ quality_zoom = _gth_image_viewer_get_quality_zoom (self);
+ *x = self->x_offset * quality_zoom;
+ *y = self->y_offset * quality_zoom;
}
diff --git a/gthumb/gth-image-viewer.h b/gthumb/gth-image-viewer.h
index 595ac30..d22361f 100644
--- a/gthumb/gth-image-viewer.h
+++ b/gthumb/gth-image-viewer.h
@@ -264,6 +264,9 @@ void gth_image_viewer_scroll_page_x (GthImageViewer
gboolean increment);
void gth_image_viewer_scroll_page_y (GthImageViewer *viewer,
gboolean increment);
+void gth_image_viewer_set_scroll_offset (GthImageViewer *self,
+ int x,
+ int y);
void gth_image_viewer_get_scroll_offset (GthImageViewer *viewer,
int *x,
int *y);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]