gimp r27452 - in trunk: . app/tools
- From: martinn svn gnome org
- To: svn-commits-list gnome org
- Subject: gimp r27452 - in trunk: . app/tools
- Date: Tue, 28 Oct 2008 18:12:21 +0000 (UTC)
Author: martinn
Date: Tue Oct 28 18:12:20 2008
New Revision: 27452
URL: http://svn.gnome.org/viewvc/gimp?rev=27452&view=rev
Log:
Bug 556603 â Zoom region always zooms in center of image
* app/tools/gimpmagnifytool.c (gimp_magnify_tool_button_release):
When zooming with a click, use gimp_display_shell_scale() instead
of local zoom logic.
Modified:
trunk/ChangeLog
trunk/app/tools/gimpmagnifytool.c
Modified: trunk/app/tools/gimpmagnifytool.c
==============================================================================
--- trunk/app/tools/gimpmagnifytool.c (original)
+++ trunk/app/tools/gimpmagnifytool.c Tue Oct 28 18:12:20 2008
@@ -190,8 +190,10 @@
if (release_type == GIMP_BUTTON_RELEASE_CLICK ||
release_type == GIMP_BUTTON_RELEASE_NO_MOTION)
{
- new_scale = gimp_zoom_model_zoom_step (options->zoom_type,
- current_scale);
+ gimp_display_shell_scale (shell,
+ options->zoom_type,
+ 0.0,
+ GIMP_ZOOM_FOCUS_BEST_GUESS);
}
else
{
@@ -219,71 +221,71 @@
}
new_scale = current_scale * factor;
- }
-
- if (new_scale != current_scale)
- {
- gdouble xres;
- gdouble yres;
- gint offset_x = 0;
- gint offset_y = 0;
-
- gimp_image_get_resolution (display->image, &xres, &yres);
- switch (options->zoom_type)
+ if (new_scale != current_scale)
{
- case GIMP_ZOOM_IN:
- /* move the center of the rectangle to the center of the
- * viewport:
- *
- * new_offset = center of rectangle in new scale screen coords
- * including offset
- * -
- * center of viewport in screen coords without
- * offset
- */
- offset_x = RINT (new_scale * ((x1 + x2) / 2.0) *
- SCREEN_XRES (shell) / xres -
- (shell->disp_width / 2.0));
-
- offset_y = RINT (new_scale * ((y1 + y2) / 2.0) *
- SCREEN_YRES (shell) / yres -
- (shell->disp_height / 2.0));
- break;
-
- case GIMP_ZOOM_OUT:
- /* move the center of the viewport to the center of the
- * rectangle:
- *
- * new_offset = center of viewport in new scale screen coords
- * including offset
- * -
- * center of rectangle in screen coords without
- * offset
- */
- offset_x = RINT (new_scale * UNSCALEX (shell,
- shell->offset_x +
- shell->disp_width / 2.0) *
- SCREEN_XRES (shell) / xres -
- (SCALEX (shell, (x1 + x2) / 2.0) -
- shell->offset_x));
-
- offset_y = RINT (new_scale * UNSCALEY (shell,
- shell->offset_y +
- shell->disp_height / 2.0) *
- SCREEN_YRES (shell) / yres -
- (SCALEY (shell, (y1 + y2) / 2.0) -
- shell->offset_y));
- break;
-
- default:
- break;
+ gdouble xres;
+ gdouble yres;
+ gint offset_x = 0;
+ gint offset_y = 0;
+
+ gimp_image_get_resolution (display->image, &xres, &yres);
+
+ switch (options->zoom_type)
+ {
+ case GIMP_ZOOM_IN:
+ /* move the center of the rectangle to the center of the
+ * viewport:
+ *
+ * new_offset = center of rectangle in new scale screen coords
+ * including offset
+ * -
+ * center of viewport in screen coords without
+ * offset
+ */
+ offset_x = RINT (new_scale * ((x1 + x2) / 2.0) *
+ SCREEN_XRES (shell) / xres -
+ (shell->disp_width / 2.0));
+
+ offset_y = RINT (new_scale * ((y1 + y2) / 2.0) *
+ SCREEN_YRES (shell) / yres -
+ (shell->disp_height / 2.0));
+ break;
+
+ case GIMP_ZOOM_OUT:
+ /* move the center of the viewport to the center of the
+ * rectangle:
+ *
+ * new_offset = center of viewport in new scale screen coords
+ * including offset
+ * -
+ * center of rectangle in screen coords without
+ * offset
+ */
+ offset_x = RINT (new_scale * UNSCALEX (shell,
+ shell->offset_x +
+ shell->disp_width / 2.0) *
+ SCREEN_XRES (shell) / xres -
+ (SCALEX (shell, (x1 + x2) / 2.0) -
+ shell->offset_x));
+
+ offset_y = RINT (new_scale * UNSCALEY (shell,
+ shell->offset_y +
+ shell->disp_height / 2.0) *
+ SCREEN_YRES (shell) / yres -
+ (SCALEY (shell, (y1 + y2) / 2.0) -
+ shell->offset_y));
+ break;
+
+ default:
+ break;
+ }
+
+ gimp_display_shell_scale_by_values (shell,
+ new_scale,
+ offset_x, offset_y,
+ options->auto_resize);
}
-
- gimp_display_shell_scale_by_values (shell,
- new_scale,
- offset_x, offset_y,
- options->auto_resize);
}
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]