2007-05-07 Sven Neumann <sven@gimp.org>
* app/tools/gimpbrushtool.[ch] (gimp_brush_tool_draw): moved
brush drawing code to the new function gimp_brush_tool_draw_brush().
* app/tools/gimpsourcetool.c: (gimp_source_tool_draw): draw the
brush outline at the source position (bug #435545).
svn path=/trunk/; revision=22450
2006-11-07 Sven Neumann <sven@gimp.org>
* app/tools/gimpdrawtool.[ch] (gimp_draw_tool_draw_corner):
improved highlighting.
(gimp_draw_tool_draw_arc_by_anchor): take width and height
arguments instead of radius_x and radius_y.
* app/tools/gimpiscissorstool.c
* app/tools/gimpvectortool.c: slightly increased handle sizes.
* app/tools/gimpmeasuretool.c: increased size of the end points.
* app/tools/gimpperspectiveclonetool.c: increased handle size.
* app/tools/gimprectangletool.c: renamed variables.
* app/tools/gimpsourcetool.c: use a single define for the target
size.
* app/tools/gimptransformtool.[ch]: increased handle size. Made
the area that can be grabbed identical to the displayed handle.
Replaced filled circle with a circle outline and a cross.
* app/tools/gimptransformtool-undo.c: follow renaming of define
in
gimptransformtool.h.
2006-09-20 Michael Natterer <mitch@gimp.org>
* app/paint/gimpsourcecore.c: implement GimpPaintCore::start()
and set paint_core->use_saved_proj to TRUE when we are using
the destination drawable image's projection as source. Return
FALSE from start() if there is no src_drawable set and removed
checks for src_drawable != NULL further down in the code path.
* app/tools/gimpperspectiveclonetool.c (button_press)
* app/tools/gimpsourcetool.c (button_press): don't fiddle with
paint_core->use_saved_proj here.
* app/paint/gimpclone.c: implement GimpPaintCore::start() and
return FALSE if we are in pattern mode and there is no pattern to
clone from. Removed GimpPaintCore::paint() implementation because
all it did was popping a message if there is no pattern. Removed
check for pattern != NULL and cleaned up the file a bit.
* app/paint/gimpperspectiveclone.c (paint): removed message about
no pattern to clone from.
2006-09-16 Michael Natterer <mitch@gimp.org>
* app/tools/gimpperspectiveclonetool.c (button_press)
* app/tools/gimpsourcetool.c (button_press): need to instruct the
paint_core to make a copy of the projection whenever we clone from
the same *image*, not from the same display. Fixes crash when
cloning from the same image's projection in another view
(bug #356209).
2006-09-13 Michael Natterer <mitch@gimp.org>
* app/tools/gimpsourcetool.c (gimp_source_tool_control): chain
up before clearing src_drawable and src_display, so the draw
tool can undraw the source marker. Fixes bug #355746.
2006-09-12 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell-callbacks.c
* app/tools/gimpforegroundselecttool.c
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.c
* app/tools/gimprectangletool.c
* app/tools/gimpselectiontool.c
* app/tools/gimpsourcetool.c
* app/tools/gimpvectortool.c: back out change committed on
2006-08-21 which passed modifier events to tools even while mouse1
was down. This generated way too much unexpected events that would
have to be special cased in all tools. Will implement an anternate
solution soon.
2006-09-05 Michael Natterer <mitch@gimp.org>
* app/tools/gimptool.[ch]: added gimp_tool_get_options() so tools
don't need to incude "core/gimptoolinfo.h" just to get to
their options.
* app/tools/gimp*tool.h: added macros GIMP_FOO_TOOL_GET_OPTIONS()
which return specific tool options types and do all casting
themselves.
* app/tools/*.c: use the new macros and don't include
"core/gimptoolinfo.h" in most files.
* app/tools/gimpcolorpickertool.c (gimp_color_picker_tool_register):
make it use the parent context's FG and BG.
* app/tools/gimpcolortool.c (gimp_color_tool_real_picked): set the
color on the tool's options, not on the user context.
2006-09-04 Michael Natterer <mitch@gimp.org>
* app/tools/Makefile.am
* app/tools/gimpsourcetool.[ch]: new class which is essentially a
copy of GimpCloneTool with s/clone/source/ plus some minor
modifications.
* app/tools/gimpclonetool.[ch]: remove almost everything and
derive from GimpSourceTool.
2006-09-03 Michael Natterer <mitch@gimp.org>
* app/paint/paint-enums.[ch]: renamed enum GimpCloneAlignMode to
GimpSourceAlignMode.
* app/paint/Makefile.am
* app/paint/gimpsourcecore.[ch]
* app/paint/gimpsourceoptions.[ch]: new classes which contain the
source selection functionality factored out of the clone core and
options.
* app/paint/gimpclone.[ch]
* app/paint/gimpcloneoptions.[ch]: remove that functionality here
and derive from the new classes.
* app/tools/gimpclonetool.c: changed accordingly.
* app/display/gimpdisplayshell-callbacks.c: allow modifier key events
for Shift and Control to be propagated even if button1 is down.
* app/tools/gimpclonetool.c
* app/tools/gimpcroptool.c
* app/tools/gimpforegroundselecttool.c
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.c
* app/tools/gimpvectortool.c: change modifier_key method
to prevent any bad consequences.
* app/tools/gimprectangletool.[ch]: add modifier_key handler, and use it
to toggle "make-square" if Shift is pressed while button1 is down, and
"fixed-center" if Control is pressed while button1 is down.
* app/tools/gimprectangleselecttool.c (gimp_rectangle_tool_modifier_key):
call rectangle tool modifer_key method after chaining up.
2006-08-03 Raphael Quinet <raphael@gimp.org>
* app/tools/gimpselectiontool.c (gimp_selection_tool_oper_update):
use gimp_suggest_modifiers().
* app/tools/gimpclonetool.c (gimp_clone_tool_oper_update): suggest
ctrl only when cloning from the image, not from a pattern
* app/tools/gimpsmudgetool.c (gimp_smudge_tool_init): don't
suggest Ctrl for that tool, even if it can be used.
2006-08-02 Raphael Quinet <raphael@gimp.org>
* app/widgets/gimpwidgets-utils.h
* app/widgets/gimpwidgets-utils.c (gimp_suggest_modifiers):
New utility function to build status bar messages while allowing
dynamic names for the modifiers.
* app/tools/gimppainttool.h
* app/tools/gimppainttool.c: Added new members to the class in
order to allow paint tools to set different status messages for
the normal case or when drawing a line.
* app/tools/gimpclonetool.c
* app/tools/gimpconvolvetool.c
* app/tools/gimpdodgeburntool.c
* app/tools/gimperasertool.c
* app/tools/gimpsmudgetool.c: Use the new functions to set
appropriate messages in the status bar. Still work in progress,
partial fix for bug #124040.
* app/tools/gimpvectortool.c: Use gimp_suggest_modifiers().
2006-06-18 Michael Natterer <mitch@gimp.org>
* app/tools/gimptool.[ch]: added virtual functions
GimpTool::has_display(), which returns whether any tool subclass
keeps a pointer to the passed display; and GimpTool::has_image()
which returns a display based on a passed image, or NULL if no
display matches. Added default implementation of
GimpTool::control() which sets tool->display to NULL on HALT.
* app/tools/gimpclonetool.c
* app/tools/gimpdrawtool.c: implement both functions.
* app/tools/gimpclonetool.c: removed weak pointer hacks that are
no longer needed now (and were incomplete anyway).
* app/tools/tool_manager.c (tool_manager_select_tool)
(tool_manager_control_active)
(tool_manager_image_clean_dirty): use the new functions instead of
peeking around in tool subclasses (and forgetting tools that may
have display pointers, like the clone tool)
* app/display/gimpdisplay.c (gimp_display_delete): removed
fiddling with tool internals here too, control(HALT) on the tool
is now sufficient to remove any reference to the closed display.
2006-06-03 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.[ch]: renamed
gimp_image_coords_in_active_drawable() to
gimp_image_coords_in_active_pickable() and added boolean
"sample_merged" and "selected_only" parameters. Use floor()
instead of ROUND(), we want to round to the actual pixel, not to
the nearest pixel boundary.
* app/tools/gimpbucketfilltool.c
* app/tools/gimpclonetool.c
* app/tools/gimpcolortool.c
* app/tools/gimpfliptool.c
* app/tools/gimptransformtool.c: changed accordingly. Removed
quite some duplicated code which checked sample_merged and the
mask value at the cursor location.
* app/tools/gimpbycolorselecttool.c: use the hand tool cursor,
there's also a hand in the toolbox icon. Fixed cursor_update()
function to set the bad modifier when there is no pickable pixel
at the cursor loction.
* app/tools/gimpfuzzyselecttool.c: added cursor_update()
implementation which does the same as by_color_select's one.
* app/tools/gimpselectiontool.c
(gimp_selection_tool_cursor_update): don't override the bad
modifier which was set by a subclass' cursor_update().
2006-06-01 Michael Natterer <mitch@gimp.org>
* cursors/Makefile.am
* cursors/modifier-bad.png
* cursors/xbm/modifier-bad-mask.xbm
* cursors/xbm/modifier-bad.xbm: new "bad" cursor
modifier. Replaces the "bad" cursor.
* cursors/gimp-tool-cursors.xcf: added it here too.
* app/widgets/widgets-enums.h: added GIMP_CURSOR_MODIFIER_BAD.
* app/widgets/gimpcursor.c: add the bad modifier. Leave the bad
cursor there for now.
* app/display/gimpdisplayshell-callbacks.c
* app/tools/gimpaligntool.c
* app/tools/gimpblendtool.c
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpclonetool.c
* app/tools/gimpcolortool.c
* app/tools/gimpfliptool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimpmovetool.c
* app/tools/gimptransformtool.c
* app/tools/gimpvectortool.c: use the modifier instead of the
cursor. Fixes hotspot jumping when switching between normal and
bad cursors. The changed cursor_update() functions even make more
sense IMHO. Fixes bug #158407.
2006-05-22 Michael Natterer <mitch@gimp.org>
* app/tools/gimpclonetool.[ch]: re-apply heavily modified patch
from Michael Schumacher which shows the clone source even while
not painting. Fixes bug #324224. Did some additional cleanup.
2006-05-22 Michael Natterer <mitch@gimp.org>
* app/tools/gimpclonetool.c: revert previous change. Tools must
not do anything essential in cursor_update(), and poking in the
GimpClone struct is a bad hack. Will look into this.
2006-03-25 Michael Natterer <mitch@gimp.org>
* app/tools/gimpclonetool.c
* app/tools/gimpcurvestool.c
* app/tools/gimpforegroundselecttool.c
* app/tools/gimpselectiontool.c
* app/tools/gimpvectortool.c (GimpTool::oper_update): don't push
status messages when shell->proximity is FALSE. Make sure the old
status message gets popped regardless of shell->proximity's
value. Fixes stuck status bar messages.
2006-01-14 Michael Natterer <mitch@gimp.org>
* app/config/gimpconfig-utils.[ch] (gimp_config_connect_full):
variant of gimp_config_connect() which allows the connected
objects to have different propertynames.
* app/widgets/widgets-enums.[ch]: removed enum GimpViewType...
* app/core/core-enums.[ch]: ...and added it here.
* app/widgets/gimpviewablebutton.[ch] (gimp_viewable_button_new):
added "button_preview_size" parameter so the button and popup
preview sizes can be specified separately.
* app/widgets/gimptemplateeditor.c: changed accordingly.
* app/widgets/gimpviewablebox.[ch] (gimp_prop_*_box_new):
new functions which take additional "view_type_prop" and
"view_size_prop" parameters and sync the passed context's
properties with the resp. properties of the viewable button.
* app/paint/gimppaintoptions.[ch]
* app/tools/gimpbucketfilloptions.c
* app/tools/gimpclonetool.c
* app/tools/gimppaintoptions-gui.c
* app/tools/gimptextoptions.[ch]: added view-type and view-size
properties to the options objects and use the new viewable box
constructors so the selected view types and sizes are persistant
across sessions. Fixes bug #315443.
2005-12-16 Sven Neumann <sven@gimp.org>
* app/paint/paint-enums.[ch]: changed description of
GIMP_CLONE_ALIGN_NO enum value.
* app/tools/gimpclonetool.c (gimp_clone_options_gui): use a combo
box for the align mode.
2005-09-10 Michael Natterer <mitch@gimp.org>
* app/tools/gimpclonetool.c (gimp_clone_options_gui): moved the
"Sample merged" toggle below the "Image source" radio button.
Also fixed capitalization of "Sample merged".
2005-09-10 Michael Natterer <mitch@gimp.org>
* app/tools/gimpclonetool.c (gimp_clone_options_gui): moved the
"Sample Merged" toggle below the "Image Source" radio button.
2005-08-29 Michael Natterer <mitch@gimp.org>
The previous commit added tons of code just to completely break
clone align behavior. Reverted lots of the changes and do the
sample-merged stuff at the innermost place (gimp_clone_motion).
This change also enables changing sample-merged between paint
strokes.
* app/paint/gimpclone.[ch] (struct GimpClone): changed member
"src_pickable" back to "src_drawable".
(gimp_clone_paint): completely reverted.
(gimp_clone_motion): do the drawable/projection -> pickable
stuff and drawable offset handling here.
Fixed signal handling to connect to the drawable's "removed"
signal (not "disconnect", eek). Disconnect from the signal once
the drawable has been removed.
* app/tools/gimpclonetool.c: changed accordingly.
2005-08-28 Michael Natterer <mitch@gimp.org>
Immplement "Sample Merged" for the clone tool. Fixes bug #123627.
* app/paint/gimppaintcore.[ch] (struct GimpPaintCore): added
members "saved_proj_tiles" which stores the unmodified projection,
"orig_proj_buf" which stores the unmodified temp paint application
buf and "use_saved_proj" which controls if all the additional
stuff should be allocated and managed.
(gimp_paint_core_start): allocate the saved_proj_tiles if needed.
(gimp_paint_core_get_orig_proj): new function like
gimp_paint_core_get_orig_image() which returns unmodified
projection pixels for paint application.
(gimp_paint_core_validate_saved_proj_tiles): new function like
gimp_paint_core_validate_undo_tiles() which copies the tiles that
will be dirtied to saved_proj_tiles.
(gimp_paint_core_paste): call above save_proj_tiles() so
projection tiles are saved before dirtying them.
* app/paint/gimpclone.[ch]: replaced member src_drawable by
src_pickable and use the image's projection if sample_merged it
TRUE. Adjust src offsets accordingly and use GimpPaintCore's new
get_orig_proj() API to get the src pixels.
* app/paint/gimpcloneoptions.[ch]: added boolean "sample_merged"
property.
* app/tools/gimpclonetool.c: follow GimpClone's src_drawable ->
src_pickable change.
(gimp_clone_tool_button_press): set the paint_core's
"use_saved_proj" boolean before chaining up.
(gimp_clone_options_gui): add a "Sample Merged" toggle button.
2005-03-04 Michael Natterer <mitch@gimp.org>
* app/tools/gimptoolcontrol.[ch]: in the spirit of the fix for bug
#165618 below, allow tools to specify up to two "object actions"
(actions which select brushes, patterns, ...).
* app/tools/gimpblendtool.c
* app/tools/gimpbucketfilltool.c
* app/tools/gimpclonetool.c
* app/tools/gimppainttool.c
* app/tools/gimptexttool.c: set actions where appropriate.
* app/actions/actions.c (action_select_object): allow objects to
be selected by index.
* app/actions/context-actions.c: added actions which select
objects by index. Not really used but the same actions can be used
to generically pass any GimpActionSelectType enum value to the
action callbacks.
* app/actions/tools-actions.c
* app/actions/tools-commands.[ch]: added actions and callbacks
for the new generic tool objects.
Also fixed and cleaned up the new generic tool value code.
2004-06-28 Michael Natterer <mitch@gimp.org>
* app/tools/gimpclonetool.c (gimp_clone_tool_button_release):
removed again (tools must not draw outside GimpDrawTool::draw()).
(gimp_clone_tool_draw): removed check for gimp_draw_tool_is_active()
because the draw function would not be called if the draw tool was
inactive. Simplified check for whether or not to draw the src
location.
* app/tools/gimppainttool.c (gimp_paint_tool_button_release):
pause/resume the draw tool across all button_release actions so
tools (clone) have a chance to draw different things depending on
gimp_tool_control_is_active(tool->control). Fixes bug #145022.
2004-06-22 Michael Natterer <mitch@gimp.org>
* app/tools/gimpclonetool.c (gimp_clone_tool_draw): chain up
unconditionally now that we draw the brush outline while
painting. Fixes brush outline artefacts on button_press and
button_release. Spotted by sjburges.
2004-06-14 Michael Natterer <mitch@gimp.org>
* app/paint/gimppaintcore.[ch]: removed PRETRACE_PAINT and
POSTTRACE_PAINT from the GimpPaintCoreState enum. Removed
"gboolean traces_on_window" from GimpPaintCoreClass.
* app/paint/gimpclone.[ch]
* app/paint/gimpink.c
* app/tools/gimpclonetool.c: changed accordingly.
* app/tools/gimppainttool.c: ditto. Show the brush outline
while painting. Fixes bug #118348.
2004-06-14 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell.[ch]: remember the last used
GimpCursorFormat so changing the format in prefs applies
instantly, and not after the next tool change.
* app/display/gimpdisplayshell-cursor.[ch]
* app/tools/gimptool.[ch]
* app/tools/gimptoolcontrol.[ch]
* app/tools/gimpclonetool.c
* app/tools/gimpcolortool.c
* app/tools/gimpcroptool.c
* app/tools/gimpcurvestool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimpmovetool.c
* app/tools/gimptransformtool.c: s/GdkCursorType/GimpCursorType/g