2006-09-24 Michael Natterer <mitch@gimp.org>
* app/core/gimpimagemap.c (gimp_image_map_apply): don't restore
the entire affected area of the drawable here (it can take *long*
on large selections).
(gimp_image_map_do): do it here instead, as we idle-process the
chunks. Slightly reduces overall speed but improves responsiveness
*massively*
(gimp_image_map_get_color_at): fixed to honor undo tiles offset
and be readable.
(gimp_image_map_commit)
(gimp_image_map_clear)
(gimp_image_map_clear): don't unref the image_map here. Objects
don't memory manage themselves.
Cleaned up the entire file and got rid of all sorts of uglyness.
* app/tools/gimpimagemaptool.c: unref the image_map here.
* app/tools/gimpcurvestool.c (curves_graph_events): update the
preview on button_press when we are dragging a free curve.
2006-09-24 Michael Natterer <mitch@gimp.org>
* app/tools/gimpcurvestool.c (curves_graph_events): jikes, update
the preview only if we actually drag the curve, not on any mouse
movement.
* app/tools/gimpcroptool.c
* app/tools/gimprectangleselecttool.c
* app/tools/gimprectangletool.[ch]: put back code for responding
to modifiers pressed after mouse1-down, at mitch's request.
* app/tools/gimprectangleoptions.[ch]
* app/tools/gimprectangleselecttool.c
* app/tools/gimprectangletool.c
* app/tools/gimpselectionoptions.c: move "auto-shrink"
and "shrink-merged" from selection options to
rectangle options where they belong; now shown
for crop tool as well as rect select.
* app/actions/tools-actions.c
* app/actions/tools-commands.[ch]: add new actions for
toggling "fixed-aspect" and "fixed-center" options of
rectangle tools.
* app/tools/gimprectangletool.[ch]
* app/tools/gimprectangleselecttool.c
* app/tools/gimpcroptool.c: rely on new actions for
keyboard control, not on modifiers pressed after
mouse1-down.
2006-09-22 Michael Natterer <mitch@gimp.org>
* app/display/gimpstatusbar.[ch]: changed all message setting
functions to use printf-style argument lists. Added new API to
show a temporary message that stays on top regardless of any other
message activity and disappears after 3 seconds.
* app/actions/edit-commands.c: show a statusbar message when
pasting fails because the clipboard contains no image data. Pop a
dialog when "Paste as New" fails. Addresses bug #357059 for
internal functions.
* app/display/gimpdisplayshell-title.c
* app/gui/gui.c
* app/tools/gimptool.c: changed accordingly.
* app/widgets/gimppropwidgets.c (gimp_prop_aspect_ratio_new):
some small bug-fixes.
* app/tools/gimprectangleoptions.[ch]: major revision. Got
rid of lots of unneeded getter/setter-clutter, simplified
set of options and appearance of gui. Still work in progress.
* app/tools/gimprectangleselectoptions.c
* app/tools/gimprectangletool.c: corresponding changes.
* app/display/gimpcanvas.[ch]
* app/tools/gimpdrawtool.[ch]: remove recently added code relating
to stippled xor drawing -- not handled well by some display
drivers.
* app/tools/gimprectangletool.c: improve drawing of handles.
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).
Trying to implement some usability recommendations from
Peter Sikking: bigger handles, more feedback to user.
* app/display/gimpcanvas.[ch]: add
GIMP_CANVAS_STYLE_XOR_STIPPLED to set of styles.
* app/tools/gimpdrawtool.[ch]
(gimp_draw_tool_draw_rectangle_stippled): new function.
Needs a better stipple pattern, though.
* app/tools/gimprectangletool.c: bigger handles in corners,
and highlight thing that user is currently moving.
* app/widgets/gimprectangletool.c: even if constraining to boundaries,
keep updating rectangel when pointer goes outside boundaries.
Fixes bug #355740.
* app/widgets/gimppropwidgets.[ch]: add prop widget specially
for controlling aspect ratio.
* app/tools/gimprectangleoptions.ch]: use "aspect-numerator"
and "aspect-denominator" properties instead of "aspect",
and use new prop widget in gui to set and display them.
* app/tools/gimprectangletool.c: calculate aspect from
numerator and denominator.
2006-09-14 Michael Natterer <mitch@gimp.org>
* app/tools/gimpcurvestool.c (curves_graph_events): when editing a
"smooth" curve, update the image while dragging instead of on
button_release. Suggested by Joel Becker.
2006-09-13 Michael Natterer <mitch@gimp.org>
Need to be more careful with setting a tool's focus_dislay now
that tools can receive modifier events in more circumstances
(fixes warnings with GimpEditSelectionTool)
* app/tools/gimptool.c (gimp_tool_button_release): ref the tool
around the function's body (GimpEditSelectionTool unrefs itself in
button_release()), don't reset the active_modifier_state if it is 0.
(gimp_tool_set_focus_display): reset the active_modifier_state if
it is != 0 and the tool had an old focus_display.
* app/tools/tool_manager.c (tool_manager_push,pop_tool): set the
old active_tool's focus_display on the new one.
2006-09-13 Michael Natterer <mitch@gimp.org>
* app/tools/gimpperspectiveclonetool.h: added macro
GIMP_PERSPECTIVE_CLONE_TOOL_GET_OPTIONS()
* app/tools/gimpperspectiveclonetool.c: use it. Some minor
cleanups, removed unused includes.
2006-09-13 Michael Natterer <mitch@gimp.org>
* app/tools/gimpbrushtool.c: simplified by calling
gimp_draw_tool_pause/resume() unconditionally (it does no harm,
regardless of whether the tool is in color picking mode or not).
Return early in gimp_brush_tool_draw() if color picking is
enabled.
* app/tools/gimpsmudgetool.c (gimp_smudge_tool_init): don't enable
color picking, the tool doesn't use FG or BG.
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-13 Sven Neumann <sven@gimp.org>
* app/tools/gimpmeasuretool.c
(gimp_measure_tool_active_modifier_key):
update status bar and optional dialog window.
2006-09-12 Michael Natterer <mitch@gimp.org>
* app/tools/gimpmeasuretool.[ch]: implement active_modifier_key()
and give immediate feedback when Control (constrain to 15 degrees)
is toggled. Did a s/mtool/measure/g.
2006-09-12 Michael Natterer <mitch@gimp.org>
* app/tools/gimptool.c (gimp_tool_button_release): reset the
active_modifier_state *after* invoking the tool's button_release().
* app/tools/gimpblendtool.[ch]: implement active_modifier_key()
and give immediate feedback when Control (constrain to 15 degrees)
is toggled.
2006-09-12 Michael Natterer <mitch@gimp.org>
Added new tool API for modifier key events while the tool
is active and implement it in the rect select and crop tools.
Fixes bug #316156 and bug #355302.
* app/tools/gimptool.[ch]: added GimpTool::active_modifier_key()
and public function gimp_tool_set_active_motifier_state(). Remember
the active_state at button_press and reset it on button_release.
Ignore releases of modifiers that were pressed at button_press (but
only ignore them once).
* app/tools/tool_manager.[ch]: added wrapper
tool_manager_active_modifier_state_active().
* app/display/gimpdisplayshell-callbacks.c
(gimp_display_shell_events): return FALSE for all modifiers even
when mouse button 1 is pressed.
(gimp_display_shell_canvas_tool_events): when bouse button 1 is
pressed *and* the tool is active, dispatch the new active_modifier
events to tools.
* app/tools/gimpcroptool.c
* app/tools/gimprectangleselecttool.c
* app/tools/gimprectangletool.[ch]: implement active_modifier_key()
instead of modifier_key().
2006-09-12 Sven Neumann <sven@gimp.org>
* app/tools/gimpbrushtool.c (gimp_brush_tool_cursor_update): if
the "bad" cursor modifier is set, show the cursor regardless of
the gimprc "show-paint-tool-cursor" setting.
2006-09-12 Michael Natterer <mitch@gimp.org>
* app/paint/gimpsourcecore.[ch]: made gimp_source_core_motion() a
public function for the time being, pending further refactoring.
* app/paint/gimpperspectiveclone.[ch]: derive from GimpClone and
remove everything that is already imeplemented in the parent
classes. Particullarly, removed motion() implementation in favor
of a get_source() implementation and simply use GimpClone's
motion(). Also refuse to work on indexed drawables.
* app/paint/gimpperspectivecloneoptions.[ch]: derive from
GimpCloneOptions and remove everything that is already done by the
parent classes.
* app/tools/gimpperspectiveclonetool.c: changed
accordingly. Doesn't derive from GimpSourceTool yet since there is
some virtual function refactoring in GimpSourceTool missing.
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-08 Michael Natterer <mitch@gimp.org>
* app/tools/gimpperspectiveclonetool.c
(gimp_perspective_clone_tool_register): fix the tool's menu path
and accelerator.
2006-09-07 Michael Natterer <mitch@gimp.org>
Merged the "soc-2006-perspective-clone" branch. That branch is
now officially closed and all further fixes and changes have to
be applied to HEAD.
Did some minor adjustments, mostly small indentation and spacing
fixes. Derive the tool from GimpBrushTool and renamed the enum
added to paint-enums.h and it values, added stock icon and menu
entry.
Thanks a lot to Pedro Alonso Ferrer!
* app/paint/paint-enums.[ch]: new enum GimpPerspectiveCloneMode.
* app/paint/Makefile.am
* app/paint/gimpperspectiveclone.[ch]
* app/paint/gimpperspectivecloneoptions.[ch]: the perspective
clone core and its options.
* app/paint/gimp-paint.c: register it.
* app/tools/Makefile.am
* app/tools/gimpperspectiveclonetool.[ch]: the perspective clone tool.
* app/tools/gimp-tools.c: register it.
* app/tools/gimppaintoptions-gui.c: show the widgets that are used
by perspective clone.
* app/widgets/gimphelp-ids.h: the help ID.
* themes/Default/images/Makefile.am
* themes/Default/images/tools/stock-tool-perspective-clone-16.png
* themes/Default/images/tools/stock-tool-perspective-clone-22.png
* libgimpwidgets/gimpstock.[ch]: its stock ID and icons.
* menus/image-menu.xml.in: added it to the menu.
* app/tools/tools-enums.[ch]: add GimpRectangleConstraint
enum.
* app/tools/gimprectangletool.[ch]: replace "constrain"
boolean with "constraint" enum property. Implement
constraints in motion handler -- the implementation
is rather elegant but pretty tricky.
* app/tools/gimpcroptool.c: constrain to image bounds,
or to active drawable bounds if "current layer only"
option is checked.
* app/tools/gimpellipseselecttool.c
* app/tools/gimprectangleselecttool.c: no constraint.
This addresses bug #353936 -- I would say fixes it, but it
probably needs some fine-tuning. Also perhaps fixes
bug #329817 a bit better than before.
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/paint/paint-enums.[ch]: removed enum GimpHealAlignMode, we
use the GimpSourceAlignMode now and can always disable REGISTERED
in the GUI should it turn out to be really totally pointless.
* app/paint/Makefile.am
* app/paint/gimphealoptions.[ch]: removed. Its properties are
completely covered by GimpSourceOptions.
* app/paint/gimpheal.[ch]: derive from GimpSourceCore.
* app/tools/gimphealtool.[ch]: derive from GimpSourceTool.