2006-09-28 Michael Natterer <mitch@gimp.org>
* app/display/gimpstatusbar.[ch]: added _valist() variants
of all printf-style functions.
* app/tools/gimptool.[ch] (gimp_tool_push_status)
(gimp_tool_replace_status)
(gimp_tool_message): take printf-style ... arguments and use the
new valist() variants of the statusbar API to avoid additional
strdups. Revert previous commit from Sven, he will add back that
feature differently right away :)
* app/tools/gimpmeasuretool.c
* app/tools/gimppainttool.c: use the new printf-style status API
where possible.
* app/tools/gimptransformtool.c: accidentially removed
"core/gimp.h", added it back.
2006-09-28 Michael Natterer <mitch@gimp.org>
* app/tools/gimptool.[ch]: added gimp_tool_message() which uses
the new statusbar messages.
* app/tools/gimptool.c
* app/tools/gimppainttool.c: use it instead of accessing the
statusbar directly.
* app/tools/gimptransformtool.c: use it instead of gimp_message().
2006-09-26 Michael Natterer <mitch@gimp.org>
* app/paint/gimppaintcore.[ch]: added GError** parameter to
GimpPaintCore::start().
* app/tools/gimppainttool.c (button_press): display the error in
the statusbar.
* app/paint/gimppaintcore-stroke.c: pass a NULL error, effectively
swallowing mssages. Will fix that later.
* app/paint/gimpbrushcore.c
* app/paint/gimpclone.c
* app/paint/gimpsourcecore.c: changed accordingly. Set the error
instead of calling g_message().
* app/paint/gimpheal.c
* app/paint/gimpperspectiveclone.c: implement start() and bail out
early on indexed drawables instead of showing a g_message() in
other functions that are called later.
* app/tools/gimptool.[ch]: added GError** to GimpTool::initialize().
* app/tools/gimptool.c (gimp_tool_initialize): display the error
in the statusbar. Keep the external API GError-free.
* app/tools/gimprectangletool.[ch]: added GError** to
gimp_rectangle_tool_initialize().
* app/tools/gimpbrightnesscontrasttool.c
* app/tools/gimpcolorbalancetool.c
* app/tools/gimpcolorizetool.c
* app/tools/gimpcroptool.c
* app/tools/gimpcurvestool.c
* app/tools/gimphuesaturationtool.c
* app/tools/gimpimagemaptool.c
* app/tools/gimplevelstool.c
* app/tools/gimpperspectiveclonetool.c
* app/tools/gimpposterizetool.c
* app/tools/gimpthresholdtool.c
* app/tools/gimptransformtool.c: changed accordingly. Set the
errors in initialize() instead of using gimp_message().
* app/tools/gimpblendtool.c: implement initialize() and bail out
early on indexed images instead of showing a gimp_message() in
button_press().
2006-09-12 Michael Natterer <mitch@gimp.org>
* app/tools/gimpcolortool.c (gimp_color_tool_button_press)
(gimp_color_tool_button_release): chain up to activate/halt the tool.
* app/tools/gimppainttool.c (gimp_paint_tool_button_press)
(gimp_paint_tool_button_release)
(gimp_paint_tool_motion): if the color tool is enabled, chain up
early and return. Fixes selection PAUSE/RESUME mismatch that was
hiding this display's selection forever when moving sample points.
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-08 Sven Neumann <sven@gimp.org>
* app/core/gimp.[ch]: added function gimp_get_tool_info().
* app/actions/tools-commands.c
* app/actions/vectors-commands.c
* app/tools/gimppainttool.c
* app/widgets/gimpdrawabletreeview.c
* app/widgets/gimpselectioneditor.c
* app/widgets/gimptoolbox.c: use the new function instead of poking
into gimp->tool_info_list.
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell.[ch]: moved code that deals with
the space key into separate functions. Added space_shaded_tool
to GimpDisplayShell instead of using a static variable for it.
* app/tools/tool_manager.c: removed unused include.
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-03 Sven Neumann <sven@gimp.org>
* app/paint/gimppaintcore.[ch]: added construct-only property
"undo-desc". Use this when pushing an undo instead of attempting
an unsuccessful lookup of the GimpPaintInfo object.
* tools/pdbgen/pdb/paint_tools.pdb
* app/tools/gimppainttool.c: use paint_info->blurb as undo
description when constructing the paint core.
* app/pdb/paint_tools_cmds.c: regenerated.
* 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-02 Raphael Quinet <raphael@gimp.org>
* app/tools/gimppainttool.c (gimp_paint_tool_oper_update): Allow
some paint tools to not suggest using the Ctrl modifier.
* app/tools/gimpvectortool.c (gimp_vector_tool_status_update):
slightly more elegant way to free the status string.
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-07-30 Raphael Quinet <raphael@gimp.org>
* app/tools/gimppainttool.c
* app/tools/gimpvectortool.c
* app/tools/gimpselectiontool.c: Update the status bar messages.
Work in progress, partial fix for bug #124040.
2006-05-28 Michael Natterer <mitch@gimp.org>
* app/tools/gimpcolorpickertool.c (gimp_color_picker_tool_picked):
removed all code except info dialog updating and chain up instead.
* app/tools/gimpcolortool.c (gimp_color_tool_real_picked): newly
added default implementation. Also updates the colormap dialog and
picks into a palette.
* app/tools/gimppainttool.c (gimp_paint_tool_color_picked):
removed. The default impl. does this and much more now. Hopefully
fixes bug #320660.
2006-05-06 Michael Natterer <mitch@gimp.org>
* app/tools/gimppainttool.c: connect to the context's
"brush-changed" signal and update the brush core's brush
accordingly. Fixes inconsistent brush preview when not moving
the mouse while the brush changes (bug #323404).
2005-09-03 Michael Natterer <mitch@gimp.org>
* app/base/pixel-region.[ch]: some general cleanup.
(pixel_region_init_temp_buf)
(pixel_region_init_data): new functions which initialize pixel
regions on TempBufs and on raw contiguous arrays of pixel data.
(pixel_region_configure): fixed a bug that has probably been there
forever: when processing contiguous (non-tiled) data, interpret
the original x and y coordinates of the region as offsets into
the data. Before this fix, the initial x and y were simply ignored
(by using them in a broken way), thus always forcing the upper
left corner of the region being the beginning of the passed data.
Lots of code was working around this problem by setting the
pixel_region's data pointer to the proper starting pixel of the
region in the middle the buffer.
* libgimp/gimppixelrgn.c: some general cleanup.
(gimp_pixel_rgn_configure): same fix as above. Fortunately, nobody
seems to know that libgimp pixel regions can be used on arrays of
data, just as core ones. Only two plug-ins were using this
feature, and they are antique and written by spencer and federico,
respectively. They both don't use offsets into the buffers and are
not affected by this change. It's highly unlikely that anybody out
there knows/uses this feature, so it can IMHO be safely changed.
* app/base/temp-buf.c
* app/core/gimpbuffer.c
* app/core/gimpdrawable-combine.c
* app/core/gimpdrawable-preview.c
* app/core/gimpimage-preview.c
* app/core/gimplayer.c
* app/paint/gimpbrushcore.c
* app/paint/gimpclone.c
* app/paint/gimpconvolve.c
* app/paint/gimpdodgeburn.c
* app/paint/gimppaintcore.c
* app/paint/gimpsmudge.c
* app/tools/gimpiscissorstool.c
* app/tools/gimppainttool.c: use the pixel_region_init_foo()
functions instead of initializing regions of TempBufs and raw data
manually. Removed lots of workarounds for the broken offset
handling. The changed places of code are much more readable now.
2005-08-20 Michael Natterer <mitch@gimp.org>
* app/base/boundary.[ch]: renamed puclic functions, defines and
enums to live in a proper "boundary" namespace. Cleaned up and
simplified internal code even more.
* app/core/gimpchannel.c
* app/core/gimpdrawable-stroke.c
* app/core/gimplayer-floating-sel.c
* app/paint/gimppaintcore-stroke.c
* app/tools/gimpeditselectiontool.c
* app/tools/gimpfuzzyselecttool.c
* app/tools/gimppainttool.c: changed accordingly.
2005-07-18 Sven Neumann <sven@gimp.org>
* app/tools/gimpeditselectiontool.c (gimp_edit_selection_tool_start):
need to sort the boundary here since gimp_draw_tool_draw_boundary()
expects a sorted boundary now. Fixes bug #310432.
* app/tools/gimppainttool.c: formatting.
2005-06-26 Tor Lillqvist <tml@novell.com>
* app/tools/gimppainttool.c (gimp_paint_tool_draw): Store the
GimpBrushCore::brush_bound_segs as sorted (the result of
sort_boundary), as the only place where it is used
(gimp_draw_tool_draw_boundary()) would sort it each time it is
called anyway.
* app/tools/gimpdrawtool.c (gimp_draw_tool_draw_boundary):
Correspondingly we now don't have to sort the boundary here.
2005-04-13 Sven Neumann <sven@gimp.org>
* app/app_procs.c: register handler for the "GimpPaint" log domain.
* app/core/gimpdatafactory.c (gimp_data_factory_init): don't load
any data if TRUE is passed for no_data.
* app/tools/gimppainttool.c (gimp_paint_tool_draw): handle a NULL
brush gracefully.
2005-04-01 Sven Neumann <sven@gimp.org>
* app/display/gimpstatusbar.c (gimp_statusbar_push): do nothing if
this message is at the top of the stack already.
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.
2005-03-04 Michael Natterer <mitch@gimp.org>
Fixed bug #165618:
* app/tools/gimptoolcontrol.[ch]: added new functions
gimp_tool_control_set/get_action_value_1/2/3/4() which allow tools
to specify their primary, secondary etc. "values" using
action-identifying strings like "context/context-brush-radius-set".
* app/tools/gimpblendtool.c
* app/tools/gimpbucketfilltool.c
* app/tools/gimpcolortool.c
* app/tools/gimpinktool.c
* app/tools/gimppainttool.c: set actions where appropriate. Still
needs some way to document the mapping in a user-visible way.
* app/tools/gimpblendtool.c
* app/tools/gimpbucketfilltool.c: tab removal and minor cleanups.
* app/actions/actions.[ch]: added utility function
action_select_property().
* app/actions/tools-actions.c
* app/actions/tools-commands.[ch]: added actions and callbacks for
setting the ink blob size, aspect and angle. Also added actions
and callbacks for the new generic tool values.
2004-07-04 Simon Budig <simon@gimp.org>
* app/actions/dialogs-commands.c
* app/display/gimpdisplayshell-dnd.c
* app/gui/preferences-dialog.c
* app/tools/gimppainttool.c
* app/widgets/gimpdeviceinfo.c
* app/widgets/gimpitemtreeview.c
* plug-ins/imagemap/imap_selection.c
* tools/pdbgen/pdb/gradients.pdb: Small changes to make GIMP
CVS compile with gcc 2.95 again. Mostly double semicolons and
variable declarations after other stuff. Spotted by Martin
Renold.
* app/pdb/gradients_cmds.c: regenerated.
(there is one issue left, see his patch at
http://old.homeip.net/martin/gcc-2.95.diff, I did not
copy the #define va_copy __va_copy, since I don't know
what happens here.)
2004-07-03 Michael Natterer <mitch@gimp.org>
* app/tools/gimppainttool.c (gimp_paint_tool_cursor_update): if
the color tool is enabled, skip cursor hiding entirely.
2004-06-30 Philip Lafleur <plafleur@cvs.gnome.org>
* app/tools/gimppainttool.c (gimp_paint_tool_cursor_update):
Chain up if the color tool is enabled. This fixes the problem of
the color picker cursor not appearing when using a paint tool
in color picking mode while "Show Paint Tool Cursor" is off.
2004-06-30 Michael Natterer <mitch@gimp.org>
Fixed a 1.2 -> 2.0 regression that was forgotten:
* app/widgets/widgets-enums.[ch]: added enum GimpColorPickState
which can be one of { NEW, UPDATE }.
* app/widgets/gimppaletteeditor.[ch]: changed #if 0'ed function
gimp_palette_editor_update_color() to
gimp_palette_editor_pick_color() and restored the functionality of
creating/updating colors via this API
Changed button_press handler to only edit the color on double
click if it's really a double click on the same color.
Fixes bug #141381.
* app/tools/gimpcolorpickeroptions.[ch]: added boolean property
"add-to-palette" and a GUI for it.
* app/core/gimpmarshal.list
* app/tools/gimpcolortool.[ch]: added a GimpColorPickState
parameter to the "color_picked" signal. Pass NEW on button_press
and UPDATE on motion.
* app/tools/gimpcurvestool.c (gimp_curves_tool_color_picked)
* app/tools/gimplevelstool.c (gimp_levels_tool_color_picked)
* app/tools/gimppainttool.c (gimp_paint_tool_color_picked):
changed accordingly
* app/tools/gimpcolorpickertool.c (gimp_color_picker_tool_picked):
If "add-to-palette" is TRUE, get the palette editor and call
gimp_palette_editor_pick_color().
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-24 Michael Natterer <mitch@gimp.org>
* app/tools/gimptool.[ch]
* app/tools/tool_manager.[ch]: added boolean return value to
GimpTool::key_press() which indicates if the event was handled.
* app/tools/gimpcroptool.c
* app/tools/gimpeditselectiontool.[ch]
* app/tools/gimptransformtool.c
* app/tools/gimpvectortool.c: return TRUE if the key event was handled.
* app/tools/gimppainttool.c: removed key_press() implementation.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpcontrollerkeyboard.[ch]: new controller class
which takes GdkEventKey and emits controller events for all
combinations of modifiers and cursor keys.
* app/widgets/gimpcontrollers.[ch]: added new function
gimp_controllers_get_keyboard().
* app/display/gimpdisplayshell-callbacks.c: if a key event was not
handled by the active tool, dispatch it to the keyboard controller.
* etc/controllerrc: add a keyboard controller which is configured
to do the same as the removed gimp_paint_tool_key_press().
2004-06-23 Michael Natterer <mitch@gimp.org>
* app/paint/gimpbrushcore.[ch]: added signal "set-brush" which is
G_SIGNAL_RUN_LAST so we can connect before and after the default
implementation. Moved the brush setting and outline invalidation
stuff to its default implementation. Also remember the outline's
width and height. Call gimp_brush_core_set_brush() from
gimp_brush_core_invalidate_cache() so "set-brush" is emitted
whenever a generated brush becomes dirty.
* app/tools/gimppainttool.c (gimp_paint_tool_button_press): don't
pause/resume but rather stop/start the draw_tool. Fixes straight
line preview aretefacts.
(gimp_paint_tool_oper_update): set the brush_core's brush before
starting the draw_tool.
(gimp_paint_tool_draw): never free the brush_core's cached brush
outline because the brush_core does that by itself now.
(gimp_paint_tool_set_brush)
(gimp_paint_tool_set_brush_after): new callbacks which pause and
resume the draw_tool. Fixes brush outline artefacts when modifying
the current brush e.g. by using the mouse wheel.
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/paint/gimppaintcore.[ch]: added new virtual function
GimpPaintCore::post_paint() and call it after calling
GimpPaintCore::paint().
* app/paint/gimpbrushcore.[ch]: renamed brush_core->grr_brush
to brush_core->main_brush and reset brush_core->brush
to brush_core->main_brush in GimpPaintCore::post_paint().
* app/paint/gimpbrushcore.c
* app/paint/gimppaintcore-stroke.c
* app/tools/gimppainttool.c: removed all code which restores
the brush_core's old brush after painting since post_paint()
does this automatically now.
* app/paint/gimpclone.[ch]: moved static variables to the
GimpClone struct.
2004-06-12 Simon Budig <simon@gimp.org>
* app/tools/gimptool.[ch]: renamed the "arrow_key" member
to "key_press", since it is now no longer about just the arrow
keys.
* app/tools/gimpcroptool.c
* app/tools/gimpeditselectiontool.c
* app/tools/gimpeditselectiontool.h
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.c
* app/tools/gimpselectiontool.c
* app/tools/gimptexttool.c
* app/tools/gimpvectortool.c
* app/tools/tool_manager.c: Changed accordingly.
2004-06-05 Michael Natterer <mitch@gimp.org>
* cursors/Makefile.am
* cursors/cursor-none.png
* cursors/xbm/cursor-none.xbm: new empty cursor images.
* app/config/gimpdisplayconfig.[ch]
* app/config/gimprc-blurbs.h
* app/widgets/widgets-enums.h
* app/widgets/gimpcursor.c
* app/display/gimpdisplayshell-cursor.c
* app/tools/gimppainttool.[ch]
* app/tools/gimpinktool.c
* app/gui/preferences-dialog.c: applied patches from Philip
Lafleur which implement hiding the cursor completely for paint
tools. Changed the name of the config option from
"hide-paint-tool-cursor" to "show-paint-tool-cursor" and default
to TRUE because this needs the brush outline being visible while
painting to be really usable. Fixes bug #132163.
* app/widgets/widgets-enums.h: renamed all GimpCursorType and
GimpToolCursorType enum values to GIMP_CURSOR_* and
GIMP_TOOL_CURSOR_*.
* app/widgets/gimpcursor.c
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-cursor.c
* app/tools/gimp*tool.c; changed accordingly.