Commit Graph

181 Commits

Author SHA1 Message Date
ddc63de6d6 app: remove "gboolean use_offsets" from gimpdisplayshell-transform.[ch] 2010-09-23 19:24:04 +02:00
6ad46f651a Bug 610587 - Zooming with zoom tool pans away from the cursor
Update lower and upper value of adjustments *before* we set the new
value, otherwise it will be erroneously clamped sometimes.
2010-06-19 08:09:34 +02:00
7e3898da09 app/tests: Add keyboard zoom focus regression test
Add keyboard zoom focus regression test. We also need a new display
shell utility function
gimp_display_shell_push_zoom_focus_pointer_pos() for that.
2010-06-18 20:57:59 +02:00
5da660a14d app: Make zoom focus with keyboard work again
Make zoom focus with keyboard work again, it broke when
GimpDisplayShell stopped being a GtkWindow and thus the source of key
events.
2010-06-12 15:37:21 +02:00
8671860945 app: move "image" member of GimpDisplay to the private struct 2010-02-28 16:15:59 +01:00
efcfec9eb8 app: remove ancient utility function img2real()
and use gimp_pixels_to_units() directly.
2010-02-28 15:42:55 +01:00
55961ab149 app: fix glitch in my recent unit conversion cleanup 2010-02-28 15:31:35 +01:00
0908e53148 app: use the new unit conversion functions
and get rid of the brainfuck idea that app/ has to use _gimp_unit_foo()
functions, passing a gimp pointer. Instead, simply use the libgimpbase
API all over the place. Should we ever allow more than one gimp instance,
they will simply have to share one unit database.
2010-02-21 16:46:39 +01:00
b6ce5d075d Remove macros SCREEN_XRES() and SCREEN_YRES()
and add gimp_display_shell_get_screen_resolution() instead. The times
when these macros were used in inner loops have long passed.
2010-02-03 19:50:46 +01:00
23955439d6 Don't access GtkAdjustment's members directly
but also don't use its accessors because doing that would emit
"changed" multiple times when setting up an adjustment with multiple
utility functions. Instead, use g_object_set() and freeze/thaw
notification around all calls. g_object_thaw_notify() will make sure
"changed" is emitted if anything has changed since freezing.
2009-10-09 09:59:01 +02:00
c5b856f16f Use gimp_display_get_image() instead of display->image 2009-10-06 19:20:44 +02:00
f6fd3aed51 Move GimpDisplayShell's expose functions to separate files 2009-10-02 23:55:26 +02:00
253b8e2cbe Use gimp_display_shell_get_window() instead of gtk_widget_get_toplevel()
The new function does the right thing, unlike get_toplevel() which
returns the shell itself if it is not in a window. Check the return
value of get_window() for being non-NULL.
2009-09-29 20:32:26 +02:00
35739c743c Change GimpImageWindow API to speak in shells, not displays
A widget container should keep around child widgets, not whatever
objects that just have widgets.
2009-09-28 22:55:55 +02:00
54edc20113 Add missing #include "gimpimagewindow.h" 2009-09-28 22:55:54 +02:00
32783d7228 Move shrink_wrap() from the display to the window
Also fix all callers. This clearly needs more cleanup.
2009-09-28 22:55:50 +02:00
d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

	* all files with a GPL header and all COPYING files:

	Change licence to GPLv3 (and to LGPLv3 for libgimp).

	Cleaned up some copyright headers and regenerated the parsers in
	the ImageMap plugin.


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00
1dd185c397 Bug 560903 – Explicit zooming with e.g. '1' should handle
zoom-focus better

* app/display/display-enums.h: Added
GIMP_ZOOM_FOCUS_RETAIN_CENTERING_ELSE_BEST_GUESS.

* app/display/gimpdisplayshell-scale.c
(gimp_display_shell_scale_get_zoom_focus): Take the new enum into
account; if the image is centered, keep it centered, else use the
best-guess method.

* app/actions/view-commands.c (view_zoom_explicit_cmd_callback):
Use the new enum for explicit zooming.

* app/display/display-enums.c: Regenerated.

svn path=/trunk/; revision=27653
2008-11-15 10:24:56 +00:00
9089377f32 Bug 560245 – Zoom selection always centered in the Navigation tab
* app/display/gimpdisplayshell-scale.c (gimp_display_shell_scale):
Also take the image center and not only the zoom focus point into
account when deciding whether or not to center the image after
zoom.

svn path=/trunk/; revision=27651
2008-11-15 08:04:06 +00:00
47c39d6c97 removed function gimp_display_shell_scroll_get_scaled_viewport_offset() as
2008-11-14  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-scroll.[ch]: removed function
	gimp_display_shell_scroll_get_scaled_viewport_offset() as it was
	only returning -shell->offset_x and -shell->offset_y and it
	started to show up in profiles.

	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell-transform.c
	* app/display/gimpdisplayshell-scale.c: use the shell offsets
	directly.


svn path=/trunk/; revision=27644
2008-11-13 23:16:11 +00:00
9aded56913 Avoid critical warnings when converting an image window with a unit other
* app/display/gimpdisplayshell-scale.c
(gimp_display_shell_scale_update_rulers): Avoid critical warnings
when converting an image window with a unit other than pixels into
a the empty image window. Probably fixes some of the crashes
reported by Windows users.

svn path=/trunk/; revision=27586
2008-11-09 19:56:03 +00:00
3b053f79fa don't #include "libgimpwidgets/gimpwidgets.h".
2008-10-23  Michael Natterer  <mitch@gimp.org>

	* app/display/gimpdisplayshell.h: don't #include
	"libgimpwidgets/gimpwidgets.h".

	* app/display/gimpdisplayshell-draw.c
	* app/display/gimpdisplayshell-scale.c
	* app/tools/gimpeditselectiontool.c: include it here.


svn path=/trunk/; revision=27375
2008-10-23 09:42:55 +00:00
2427cc5495 Bug 556804 – Zoom drop down doesn't update
* app/display/gimpdisplayshell-scale.c
* app/display/gimpdisplayshell-callbacks.c: Fix calls to
gimp_display_shell_scaled() when Resize window on zoom is enabled.

svn path=/trunk/; revision=27366
2008-10-22 19:02:00 +00:00
5503e6a055 Add GEGL_CFLAGS and #includes as if gimpdrawable.h and gimpimage.h had a
2008-10-09  Michael Natterer  <mitch@gimp.org>

	Add GEGL_CFLAGS and #includes as if gimpdrawable.h and gimpimage.h
	had a GEGL dependency (they will have in the next commit, but I
	wanted to keep the commit separate).

	* app/dialogs/Makefile.am
	* app/file/Makefile.am
	* app/gui/Makefile.am
	* app/menus/Makefile.am
	* app/paint/Makefile.am
	* app/plug-in/Makefile.am
	* app/text/Makefile.am
	* app/vectors/Makefile.am
	* app/widgets/Makefile.am
	* app/xcf/Makefile.am: add GEGL_CFLAGS.

	* app/actions/*.c
	* app/core/*.c
	* app/dialogs/*.c
	* app/display/*.c
	* app/file/*.c
	* app/gui/*.c
	* app/menus/*.c
	* app/paint/*.c
	* app/pdb/gimppdb-utils.c
	* app/pdb/gimpprocedure.c
	* app/plug-in/*.c
	* app/text/*.c
	* app/tools/*.c
	* app/vectors/*.c
	* app/widgets/*.c
	* app/xcf/*.c: add <gegl.h> or replace <glib-object.h> by <gegl.h>
	to all files which include a drawable subclass or gimpimage.h

	* tools/pdbgen/app.pl: include <gegl.h> instead of <glib-object.h>
	in all generated files.

	* app/pdb/*-cmds.c: regenerated.

	* data/images/gimp-splash.png: the goat is still sleeping.
	By Aurore Derriennic.


svn path=/trunk/; revision=27202
2008-10-09 20:24:04 +00:00
632b8d3fba bail out early if shell->display is NULL. Fixes crash reported on the
2008-10-03  Sven Neumann  <sven@gimp.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_update_scrollbars)
	(gimp_display_shell_scale_update_rulers): bail out early if
	shell->display is NULL. Fixes crash reported on the 
mailing-list.


svn path=/trunk/; revision=27117
2008-10-03 19:20:46 +00:00
259801e34e Bug 553534 – centering issues after image scaling and setting zoom
to 100%

* app/display/display-enums.h: Added a GimpZoomFocus enum with
'best guess', 'pointer' or 'image center' values.

* app/display/gimpdisplayshell-scale.[ch]
(gimp_display_shell_scale): Take a GimpZoomFocus parameter and
pass it on to

(gimp_display_shell_scale_get_zoom_focus): which returns the
requested zoom focus point if one was given, else makes a best
guess.

* app/actions/view-commands.c
* app/display/gimpstatusbar.c
* app/display/gimpnavigationeditor.c
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-scale-dialog.c: For explicit-zoom
commands like "zoom to 100%", always use the image center as the
zoom focus point. For all other zooming, continue to use the
best-guess method.

* app/display/display-enums.c: Regenerated.

svn path=/trunk/; revision=27104
2008-10-02 14:53:35 +00:00
1d7e141c2d We need to set the scale before using it. Fixes at least
2008-08-31  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_set_initial_scale): We need to set the scale
	before using it. Fixes at least gimp_display_shell_fill() and
	Image -> Duplicate giving weird initial scales.

svn path=/trunk/; revision=26823
2008-08-31 09:12:55 +00:00
3cfd2a33c0 Canonically calculate scale to use for zoom-focus calculations so that it
2008-08-28  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_to): Canonically calculate scale to use
	for zoom-focus calculations so that it also works when not in Dot
	by dot-mode.

svn path=/trunk/; revision=26805
2008-08-28 19:35:14 +00:00
750a56ef74 removed unused includes
svn path=/trunk/; revision=26591
2008-08-16 11:54:25 +00:00
f9ebb8c9fd app/display/Makefile.am app/display/gimpdisplayshell-scale.[ch] split
2008-08-16  Sven Neumann  <sven@gimp.org>

	* app/display/Makefile.am
	* app/display/gimpdisplayshell-scale.[ch]
	* app/display/gimpdisplayshell-scale-dialog.[ch]: split scale
	dialog into a new file.

	* app/actions/view-commands.c: changed accordingly.

svn path=/trunk/; revision=26590
2008-08-16 11:51:10 +00:00
1250993fe1 New function.
2008-08-16  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_viewport_coord_almost_centered): New
	function.

	(gimp_display_shell_scale): Center the image on zoom also if it is
	almost centered. This makes the image centered all the way when
	zooming out far away.

svn path=/trunk/; revision=26589
2008-08-16 10:25:50 +00:00
8d7b13ae01 Reimplement to increase readability.
2008-08-16  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_to): Reimplement to increase
	readability.

svn path=/trunk/; revision=26587
2008-08-16 08:59:58 +00:00
46f7ce1a01 Nice-ify.
2008-08-16  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_to): Nice-ify.

svn path=/trunk/; revision=26586
2008-08-16 07:15:33 +00:00
ab419f2e70 Support axis independence.
2008-08-16  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.[ch]
	(gimp_display_shell_scale_get_zoom_focus)
	(gimp_display_shell_scale_image_is_within_viewport): Support axis
	independence.

	* app/display/gimpdisplayshell.c
	(gimp_display_shell_zoom_button_callback): Adapt to new
	gimp_display_shell_scale_image_is_within_viewport().

svn path=/trunk/; revision=26585
2008-08-16 07:06:26 +00:00
aaa6336664 Make proper tests (>= not >)...
2008-08-16  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_image_is_within_viewport): Make proper
	tests (>= not >)...

svn path=/trunk/; revision=26584
2008-08-16 05:45:41 +00:00
d9454d7045 More elegantly deal with the 'Resize window on zoom'-case.
2008-08-15  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c (gimp_display_shell_scale):
	More elegantly deal with the 'Resize window on zoom'-case.

svn path=/trunk/; revision=26581
2008-08-15 19:46:39 +00:00
a100804747 Make proper tests (<= not <).
2008-08-14  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_image_starts_to_fit)
	(gimp_display_shell_scale_image_is_within_viewport): Make
	proper tests (<= not <).

svn path=/trunk/; revision=26567
2008-08-14 20:31:44 +00:00
a56fd032f6 New function. (gimp_display_shell_scale_get_zoom_focus): If the image
2008-08-14  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_image_stops_to_fit): New function.
	(gimp_display_shell_scale_get_zoom_focus): If the image stops
	to fit the viewport, we can already now use the mouse cursor
	as the zoom focus point.

svn path=/trunk/; revision=26563
2008-08-14 19:45:35 +00:00
c8ae8f67b4 New function.
2008-08-14  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-draw.[ch]
	(gimp_display_shell_draw_get_scaled_image_size_for_scale): New
	function.

	* app/display/gimpdisplayshell-scale.[ch]
	(gimp_display_shell_scale): When zooming out and the image
	starts to fit the viewport on a given axis, center on that
	axis.

	(gimp_display_shell_scale_image_starts_to_fit): New function.

	(gimp_display_shell_calculate_scale_x_and_y): New function.

	* app/display/gimpdisplayshell.c
	(gimp_display_shell_scale_changed): Use
	gimp_display_shell_calculate_scale_x_and_y().

	* app/display/gimpdisplayshell-scroll.c
	(gimp_display_shell_scroll_center_image): Bail out if neither
	vertical nor horizontal centering is requested.

svn path=/trunk/; revision=26562
2008-08-14 19:23:28 +00:00
0fe3208158 When the image is within the viewport, also use the center of the image as
2008-08-14  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_get_zoom_focus): When the image is
	within the viewport, also use the center of the image as the zoom
	focus point when zooming it. It feels way too weird not to do it
	this way.

svn path=/trunk/; revision=26561
2008-08-14 17:49:36 +00:00
de82d2f7ec If the image is within the viewport and we are zooming out, make the focus
2008-08-14  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_get_zoom_focus): If the image is within
	the viewport and we are zooming out, make the focus point be the
	center of the image.

svn path=/trunk/; revision=26560
2008-08-14 17:41:38 +00:00
57ec836f3e Move calculation of the actual new scale to use from here
2008-08-14  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_to): Move calculation of the actual new
	scale to use from here
	(gimp_display_shell_scale): to here, because we need this
	information in order to determine what point to focus on while
	zooming.

svn path=/trunk/; revision=26559
2008-08-14 16:41:31 +00:00
ecd95dcf76 Split this up in gimp_display_shell_scale_update_scrollbars() and
2008-08-14  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_update_scrollbars_and_rulers): Split this up
	in gimp_display_shell_scale_update_scrollbars() and
	gimp_display_shell_scale_update_rulers().

svn path=/trunk/; revision=26555
2008-08-14 15:17:40 +00:00
2f52791b2b New helper function.
2008-08-14  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scroll.c
	(gimp_display_shell_scroll_clamp_and_update): New helper function.

	* app/display/gimpdisplayshell-scale.c
	* app/display/gimpdisplayshell-scroll.c
	* app/display/gimpdisplayshell-callbacks.c: Use it.

svn path=/trunk/; revision=26554
2008-08-14 14:41:29 +00:00
0fabf10475 New function responsible for deciding what viewport coordinate to focus on
2008-08-13  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_get_zoom_focus): New function
	responsible for deciding what viewport coordinate to focus on when
	zooming in and out.

svn path=/trunk/; revision=26532
2008-08-13 18:37:15 +00:00
ccdac05843 Make this a private function because we want to be in full control over
2008-08-13  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.[ch]
	(gimp_display_shell_scale_to): Make this a private function
	because we want to be in full control over what pixel to focus on
	when zooming in and out.

	* app/display/gimpdisplayshell-callbacks.c
	(gimp_display_shell_canvas_tool_events): Use
	gimp_display_shell_scale() here instead of
	gimp_display_shell_scale_to(). We figure out (and can override if
	we wish) the coordinates that were previously passed explicitly.

svn path=/trunk/; revision=26531
2008-08-13 17:58:25 +00:00
47b34e973d New function.
2008-08-13  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_image_is_within_viewport): New function.

	* app/display/gimpdisplayshell.c (gimp_display_shell_new): When
	the zoom button is toggled, implicitly do a View -> Fit Image in
	Window if the (scaled) image is within the viewport.

svn path=/trunk/; revision=26529
2008-08-13 17:36:29 +00:00
0687c3317d Move the zoom-revert updating logic into this new helper function so that
2008-08-10  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_handle_zoom_revert): Move the
	zoom-revert updating logic into this new helper function so that
	we can update zoom-revert from other places.

svn path=/trunk/; revision=26485
2008-08-10 13:06:06 +00:00
2eacb5cf58 Rename gimp_display_shell_scale_setup() to
2008-08-10  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.[ch]:
	Rename gimp_display_shell_scale_setup() to
	gimp_display_shell_update_scrollbars_and_rulers(), because that's
	exactly what that function does.

	* app/display/gimpdisplayshell.c
	* app/display/gimpdisplayshell-scroll.c
	* app/display/gimpdisplayshell-handlers.c
	* app/display/gimpdisplayshell-callbacks.c: Adapt to new name.

svn path=/trunk/; revision=26484
2008-08-10 11:56:29 +00:00
c023ac02f9 Remove unused local variables sw and sh.
2008-08-10  Martin Nordholts  <martinn@svn.gnome.org>

	* app/display/gimpdisplayshell-scale.c
	(gimp_display_shell_scale_setup): Remove unused local variables sw
	and sh.

svn path=/trunk/; revision=26483
2008-08-10 11:40:00 +00:00