When an import source has been overwritten with File -> Overwrite
<file.png>, or exported by whatever means, reflect this status in the
title bar of the image window. Do this by adding some string building
logic to gimp_display_shell_format_filename().
* app/widgets/gimpwindow.c: treat GimpCanvas as a text widget and
dispatch all key events to it before invoking menu shortcuts.
* app/display/gimpdisplayshell-callbacks.c: treat all events on the
empty display as unhandled, not handled.
* app/tools/gimptexttool.c: use the right API for invoking the proxy
text view's bindings. Handle some more cursor navigation request and
swallow text deletion requests we don't handle instead of always
doing what the delete key does.
* app/tools/tools-enums.[ch]: add enum GimpButtonPressType which can
be { NORMAL, DOUBLE, TRIPLE }
* app/tools/gimptool.[ch]: add press_type paramater to GimpTool::button_press()
* app/tools/gimp*tool.c
* app/tools/tool_manager.[ch]: changed accordingly.
* app/tools/gimptoolcontrol.[ch]: add members and API so tools can choose
to receive double and triple clicks.
* app/display/gimpdisplayshell-callbacks.c (gimp_display_shell_tool_events):
dispatch double and triple clicks to tools if they want them, and if they
became active by the preceding normal button press.
Add gimp_display_shell_sync_config() which copies the prefs settings
to the display shell and call it from gimp_display_shell_new() and
gimp_display_shell_fill().
The questionable while loops to get GimpCoords.direction into a proper
range were used in two places. This commit fixes the actual problematic
place where, under some rare circumstances, the code used to go into a
loop for a very long time.
2009-03-28 Michael Natterer <mitch@gimp.org>
Bug 555738 – Image display is wrong after undoing canvas size
enlargement
* app/display/gimpdisplayshell-handlers.c
(gimp_display_shell_size_changed_detailed_handler): call
gimp_display_shell_expose_full() because resizing the canvas can
leave all sorts of display areas unupdated otherwise.
svn path=/trunk/; revision=28230
2009-03-28 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell-handlers.c
(gimp_display_shell_size_changed_detailed_handler): swallow the
code of gimp_display_shell_image_size_starts_to_fit() because it
didn't make things clearer. Add local variables instead to make
things more readable.
svn path=/trunk/; revision=28229
2009-03-28 Michael Natterer <mitch@gimp.org>
Bug 566575 – Warning when creating sample point and releasing Ctrl
key too late
* app/display/gimpdisplayshell-callbacks.c
(gimp_display_shell_ruler_button_press): call
gimp_display_shell_update_focus() after changing the tool so the
new tool has the right state.
svn path=/trunk/; revision=28226
2009-03-28 Michael Natterer <mitch@gimp.org>
Bug 555025 – Action GEGL box widgets weirdness
Must not set GDK_HINT_MIN_SIZE if we don't actually set a minimum
size, or the window will be shrinkable to zero and it won't
expand automatically when its contents' requisition grows.
* app/widgets/gimpdialogfactory.[ch]: add hackish API
gimp_dialog_factory_set,get_has_min_size() because GTK+ itself
has no API for querying a window's GdkWindowHints.
(gimp_dialog_factory_set_user_pos): set GDK_HINT_MIN_SIZE only if
the window was being marked as having a minimum size using above
new API.
* app/widgets/gimptoolbox.c (gimp_toolbox_set_geometry)
* app/display/gimpdisplayshell.c (gimp_display_shell_style_set):
call gimp_dialog_factory_set_has_min_size (window, TRUE).
svn path=/trunk/; revision=28224
2009-03-22 Michael Natterer <mitch@gimp.org>
* app/display/gimpcanvas.c
* app/display/gimpdisplayshell.c: use accessors for various
members of GTK+ structures that don't exist any longer when
GSEAL_ENABLE is defined.
svn path=/trunk/; revision=28192
Bug 575006 – Add preferences for snapping
* app/config/gimpdisplayconfig.[ch]
* app/config/gimprc-blurbs.h
* app/display/gimpdisplayshell.c: applied part of a patch from
Akkana Peck. This adds gimprc properties for the default values
used for snapping in new image windows. It also changes the
default value for "Snap to Canvas Edges" to TRUE. Let's test
this
for a while...
svn path=/trunk/; revision=28151
2009-03-12 Sven Neumann <sven@gimp.org>
Bug 573070 – crash when working with 1x3200 pixel image
* app/display/gimpdisplayshell.c
(gimp_display_shell_scale_changed):
make sure that x_src_dec and y_src_dec never become zero.
svn path=/trunk/; revision=28142
2009-02-20 Michael Natterer <mitch@gimp.org>
Bug 572156 – top left pixel position/coordinate is not 0,0 but 1,1
* app/display/gimpstatusbar.c
(gimp_statusbar_push_coords)
(gimp_statusbar_update_cursor): fix braino for
GIMP_CURSOR_PRECISION_PIXEL_CENTER: going to the pixel's
center doesn't need any rounding, it simply needs clipping
the coordinates' fractional parts, gah...
Review all tools' cursor precision:
* app/tools/gimpblendtool.c (gimp_blend_tool_init): set cursor
precision to SUBPIXEL.
* app/tools/gimptexttool.c (gimp_text_tool_init)
* app/tools/gimpmeasuretool.c (gimp_measure_tool_init)
* app/tools/gimpeditselectiontool.c (gimp_edit_selection_tool_init):
set cursor precision to PIXEL_BORDER.
svn path=/trunk/; revision=28053
2009-02-14 Sven Neumann <sven@gimp.org>
* app/core/gimpcoords-interpolate.c
* app/display/gimpdisplayshell-coords.c: applied patch from
Alexia
Death that fixes issues with the new stroke direction code
(bug #520078).
svn path=/trunk/; revision=28030
2009-02-10 Sven Neumann <sven@gimp.org>
* app/core/gimpcoords-interpolate.c
* app/core/gimpbrush-transform.c
* app/paint/gimppaintoptions.c
* app/display/gimpdisplayshell-coords.c: applied patch from
Alexia
Death that fixes the direction of brush rotation (bug #520078).
svn path=/trunk/; revision=28010
2009-02-10 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-coords.c
(gimp_display_shell_eval_event): applied patch from Alexia Death
that introduces smoothing for the stroke direction (bug
#520078).
svn path=/trunk/; revision=28009
2009-02-08 Michael Natterer <mitch@gimp.org>
Bug 520078 – Rotate brushes
Applied a slightly modified patch from Alexia Death:
* app/core/core-types.h (struct GimpCoords): add "direction" member.
* app/core/gimpcoords.c: take direction into account in mix(),
scalarprod(), length_squared(), manhattan_dist() and equal().
* app/core/gimpcoords-interpolate.c
(gimp_coords_interpolate_catmull): same here.
* app/display/gimpdisplayshell-coords.c
(gimp_display_shell_eval_event): same here.
* app/paint/gimppaintoptions.[ch]: add properties for direction
dynamics and adapt dynamics mixing accordingly.
* app/paint/gimpbrushcore.c (gimp_brush_core_interpolate):
"interpolate" direction too (in fact, just copy it from
last_coords since it doesn't change along a straight line).
* app/paint/gimppaintcore-stroke.c
(gimp_paint_core_stroke_emulate_dynamics): emulate direction too.
* app/tools/gimppaintoptions-gui.c: add GUI for direction dynamics.
svn path=/trunk/; revision=28001
2009-02-02 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-title.c: reverted last change.
It's
not helpful to use different strings for the same information
and
space is not crucial in the window title.
svn path=/trunk/; revision=27979
2009-01-29 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.[ch]: removed gimp_image_get_type_string()
again.
* app/display/gimpdisplayshell-title.c
(gimp_display_shell_format_title): use the GimpImageBaseType
enum
instead.
* app/tools/gimptool.c (gimp_tool_oper_update): if the image is
empty and the tool can't handle that, display a message in the
statusbar telling the user about this.
svn path=/trunk/; revision=27970
* app/core/gimpimage.[ch] (gimp_image_get_type_string): New method
to get a string representation of the image type.
* app/display/gimpdisplayshell-title.c
(gimp_display_shell_format_title): Ask the GimpImage for an image
type string instead of making assumptions about its
implementation.
svn path=/trunk/; revision=27947
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-10 Sven Neumann <sven@gimp.org>
Bug 471344 – Circular brush strokes are not smooth and have
corners
Bug 127785 – stroking with size linked to pressure sensitivity
should scale the spacing
* app/core/gimpcoords-interpolate.[ch]
* app/display/gimpdisplayshell.[ch]
* app/display/gimpdisplayshell-callbacks.[ch]
* app/display/gimpdisplayshell-coords.[ch]: applied patch from
Alexia Death that introduces a Catmul-Rom splines based event
interpolation and also adapts the brush spacing to brush size.
svn path=/trunk/; revision=27898
* app/display/gimpdisplayshell.c (gimp_display_shell_shrink_wrap):
Only rely on disp_width/height for border calculation if they are
larger than 1. If not, special-case the calculation so we don't
get a severly mispositioned image.
svn path=/trunk/; revision=27892
* app/display/gimpdisplayshell.c (gimp_display_shell_shrink_wrap):
Rename border_x to border_width and border_y to border_height.
svn path=/trunk/; revision=27891
* app/display/gimpdisplayshell-handlers.c
(gimp_display_shell_size_changed_detailed_handler): Add explicit
call to gimp_display_shell_scroll_clamp_and_update() at the end to
make sure it is called.
svn path=/trunk/; revision=27762
2008-11-16 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell.h: optimize access to
GimpDisplayShell struct members by placing related and frequently
accessed members like like scale and offset into the same
cacheline.
* app/display/gimpdisplayshell.c (gimp_display_shell_init): resort
initialization accordingly.
svn path=/trunk/; revision=27668
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
* 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-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-14 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell-preview.c
(gimp_display_shell_draw_quad): check that the resulting area
has
positive width and height.
svn path=/trunk/; revision=27642
* app/display/gimpcursorview.[ch]: Move the instance struct to the
header but add a typed opaque priv pointer to it so we can avoid
exposing implementation details. Also move the class struct to the
header.
svn path=/trunk/; revision=27641