2006-10-09 Michael Natterer <mitch@gimp.org>
Added message severities and make sure all messages are routed
through a central function, so redirecting to the error console or
stderr work again:
* app/core/core-enums.[ch]: added enum GimpMessageSeverity { INFO,
WARNING, ERROR }.
* app/core/gimp.[ch] (gimp_message)
(gimp_message_valist): added severity parameter. Changed
"GimpProgress *progress" parameter to "GObject *handler", where
"handler" can be either a GimpProgress, a GtkWidget or NULL.
* app/core/gimp-gui.[ch] (gimp_show_message): ditto. Honor
--console-messages again. Always dispatch to the GUI message
handler first if it exists.
* app/gui/gui-message.[ch]: pass severity parameters around.
(gui_message_error_dialog): if "handler" is a progress, dispatch
the message to it first. If it is a widget (and *not* a progress),
use a GtkMessageDialog on top of that widget's toplevel. Fall
back to the usual GimpErrorDialog otherwise.
* app/core/gimpprogress.[ch] (gimp_progress_message): added
severity parameter. Also added boolean return value to the virtual
function so it can decide to fail if it can't handle the message.
* app/display/gimpdisplay.c: implement GimpProgress::message() and
redirect the message to GimpDisplayShell.
* app/display/gimpdisplayshell-progress.c: implement
GimpProgress::message() and redirect the message to GimpStatusbar
if it is not an error and if the status bar is visible.
* app/display/gimpstatusbar.[ch]: implement GimpProgress::message(),
but fail on messages that contain a newline. Show the right icons
for the message severities (work in progress).
* app/display/gimpdisplayshell.[ch]: removed
gimp_display_shell_message() and its _valist() variant.
* app/widgets/gimperrorconsole.[ch]: show the right icons for the
message severities.
* app/widgets/gimpthumbbox.c (gimp_thumb_box_progress_message):
return TRUE to swallow all messages.
* app/widgets/gimpwidgets-utils.[ch]: removed
gimp_show_message_dialog(). Added gimp_get_message_stock_id().
* app/errors.c
* app/actions/edit-commands.c
* app/actions/error-console-commands.c
* app/actions/file-commands.c
* app/actions/select-commands.c
* app/actions/text-editor-commands.c
* app/actions/vectors-commands.c
* app/core/gimpimage-convert.c
* app/core/gimpimagefile.c
* app/dialogs/convert-dialog.c
* app/dialogs/file-open-dialog.c
* app/dialogs/file-open-location-dialog.c
* app/dialogs/file-save-dialog.c
* app/dialogs/palette-import-dialog.c
* app/dialogs/stroke-dialog.c
* app/display/gimpdisplayshell-dnd.c
* app/pdb/gimppdb.c
* app/plug-in/gimpplugin.c
* app/tools/gimpimagemaptool.c
* app/tools/gimptool.c
* app/tools/gimpvectortool.c
* app/widgets/gimpactionview.c
* app/widgets/gimpcontrollerlist.c
* app/widgets/gimppdbdialog.c
* app/widgets/gimpvectorstreeview.c
* app/xcf/xcf-load.c
* app/xcf/xcf-save.c
* app/xcf/xcf.c
* tools/pdbgen/pdb/brush.pdb
* tools/pdbgen/pdb/gradient.pdb
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/message.pdb
* tools/pdbgen/pdb/palette.pdb: added severity parameter to
gimp_message() calls. Convert all calls to
gimp_show_message_dialog() and gimp_display_shell_message() to
gimp_message(). Also converted some more g_message() calls.
* app/pdb/brush_cmds.c
* app/pdb/gradient_cmds.c
* app/pdb/image_cmds.c
* app/pdb/message_cmds.c
* app/pdb/palette_cmds.c: regenerated.
2006-09-28 Sven Neumann <sven@gimp.org>
* app/display/gimpdisplayshell.[ch]: added
gimp_display_shell_message() and a valist variant and decide here
where the message is shown.
* app/actions/edit-commands.c (edit_paste)
* app/tools/gimptool.c (gimp_tool_message): use the new message API.
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 Sven Neumann <sven@gimp.org>
* app/core/gimp.h: formatting.
* app/tools/gimptool.c (gimp_tool_message): use gimp_message() if
the statusbar is not visible.
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-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.
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-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-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-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-01-18 Michael Natterer <mitch@gimp.org>
* app/config/config-types.c: define GIMP_PARAM_STATIC_STRINGS
which is G_PARAM_STATIC_NAME|NICK|BLURB. Also define
GIMP_PARAM_READABLE, _WRITABLE and _READWRITE which include
GIMP_PARAM_STATIC_STRINGS.
* app/*/*.c: use them for all object properties so their
strings are not copied.
2005-07-30 Sven Neumann <sven@gimp.org>
* app/tools/gimptoolcontrol.[ch]: transparently handle cursor
vs. toggle cursor in the cursor accessor functions.
* app/tools/gimpconvolvetool.c
* app/tools/gimperasertool.c
* app/tools/gimpmagnifytool.c
* app/tools/gimptool.c: simplifies things here.
* app/tools/gimpforegroundselecttool.c: set a toggle cursor and
toggle the tool if a mask is set.
2004-11-10 Michael Natterer <mitch@gimp.org>
* app/display/gimpstatusbar.[ch]: added new function
gimp_statusbar_push_length(), which works exactly like
push_coords() but takes only one value plus a GimpOrientationType
for specifying the value's axis.
* app/tools/gimptool.[ch]: added the corresponding
gimp_tool_push_status_length().
* app/tools/gimpmovetool.c: use gimp_tool_push_status_length()
so the guide position is shown in the selected display unit.
Cleaned up the status message code a bit.
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-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
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-01-21 Michael Natterer <mitch@gimp.org>
* app/tools/gimptool.[ch]: added boolean return value to
GimpTool::initialize(). Returning FALSE means the tool could not
be initialized and doesn't want to receive button events.
Return TRUE from the default implementation.
* app/tools/tool_manager.[ch]: added boolean return value to
tool_manager_initialize_active(). Don't set the tool's display or
drawable if initialize() returns FALSE.
* app/display/gimpdisplayshell-callbacks.c: don't send button
events to the tool if initialize() returns FALSE.
* app/tools/gimpbrightnesscontrasttool.c
* app/tools/gimpcolorbalancetool.c
* app/tools/gimpcolorizetool.c
* app/tools/gimpcurvestool.c
* app/tools/gimphuesaturationtool.c
* app/tools/gimplevelstool.c
* app/tools/gimpposterizetool.c
* app/tools/gimpthresholdtool.c: return FALSE for NULL and indexed
drawables.
* app/tools/gimpimagemaptool.c: always return TRUE because our
subclasses already checked if the active drawable is OK.
* app/tools/gimptransformtool.c: return FALSE for layers with
masks. Fixes bug #132089. Some random cleanups.
2003-10-14 Michael Natterer <mitch@gimp.org>
Refactored modifier handling of displays and tools. Hopefully
finally fixes bug #124135.
* app/tools/gimptool.[ch] (struct GimpTool): added private members
"focus_display" and "modifier_state" so tools are aware of their
modifier state.
* app/tools/gimptool.[ch]
* app/tools/tool_manager.[ch]: removed all public modifier_key()
API and added set_focus_display() and set_modifier_state()
instead.
* app/tools/tool_manager.c (tool_manager_select_tool)
* app/display/gimpdisplay.c (gimp_display_delete): set the
active_tool's focus_display to NULL.
* app/display/gimpdisplayshell.[ch] (struct GimpDisplayShell):
added almost the whole stuff that used to be static variables of
gimp_display_shell_tool_events(). Cleaned up the struct a bit.
* app/display/gimpdisplayshell-callbacks.c: removed utility
function gimp_display_shell_update_tool_modifiers().
(gimp_display_shell_tool_events):
- Replaced all calls to gimp_display_shell_update_tool_modifiers()
and tool_manager_modifier_key_active() by
tool_manager_modifier_state_active().
- Call tool_manager_focus_display_active() before setting the
tool's modifier_state. Set the tool's focus_display to NULL when
we get a focus_out event.
- Don't grab/ungrab the keyboard twice when <space>-selecting the
move tool.
- Removed most static variables and use the new members of
GimpDisplayShell. Don't remember any old modifier states since
GimpTool does that by itself now.
2003-08-30 Michael Natterer <mitch@gimp.org>
* app/tools/gimptool.c: made "tool-info" a G_PARAM_CONSTRUCT_ONLY
property.
* app/tools/tool_manager.c (tool_manager_tool_changed): pass it to
g_object_new() instead of setting it after tool creation.
* app/tools/gimppainttool.[ch]
* app/tools/gimptransformtool.[ch]: removed ugly
"gboolean notify_connected" hacks and connect to the signals in
GObject::constructor().
* app/tools/gimppainttool.c (gimp_paint_tool_contstructor): create
paint_tool->core here from tool->tool_info->paint_info->paint_type.
* app/tools/gimpairbrushtool.c
* app/tools/gimpclonetool.c
* app/tools/gimpconvolvetool.c
* app/tools/gimpdodgeburntool.c
* app/tools/gimperasertool.c
* app/tools/gimppaintbrushtool.c
* app/tools/gimppenciltool.c
* app/tools/gimpsmudgetool.c: changed accordingly. Removed lots of
useless class_init functions. Converted tabs to spaces. Cleanup.
2003-05-02 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdialogfactory.[ch]: added new function
gimp_dialog_factory_add_foreign() which adds a dialog that was not
created by the factory itself. Its identifier however must be
registered with the factory. Connect to all toplevel dialogs'
"configure_event" and remember the resulting window geometry so we
get session management for *all* dialogs, not only for those which
were open on exit.
* app/gui/dialogs.c: added the "File New" dialog. Added foreign
entries (without constructor) for all dialogs opened by tools.
* app/gui/dialogs-constructors.[ch]: added a constructor for
the file_new dialog.
* app/gui/file-new-dialog.[ch]: renamed file_new_dialog_create()
to file_new_dialog_new() and removed the gimage and template
paramaters. Adder new function file_new_dialog_set() to set
gimage and template after creation.
* app/gui/file-commands.c
* app/gui/templates-commands.c: changed accordingly.
* app/tools/gimpimagemaptool.[ch]
* app/tools/gimptransformtool.[ch]: added
"const gchar *shell_identifier" to the tool structs. Register the
tool dialogs using gimp_dialog_factory_add_foreign().
* app/tools/gimpbrightnesscontrasttool.c
* app/tools/gimpcolorbalancetool.c
* app/tools/gimpcurvestool.c
* app/tools/gimphuesaturationtool.c
* app/tools/gimplevelstool.c
* app/tools/gimpperspectivetool.c
* app/tools/gimpposterizetool.c
* app/tools/gimprotatetool.c
* app/tools/gimpscaletool.c
* app/tools/gimpsheartool.c
* app/tools/gimpthresholdtool.c: set "shell_identifier" so the
dialogs become session managed. Fixes bug #61091.
* app/tools/gimpcroptool.c: register the crop dialog with the
dialog factory. Fixes bug #52849.
* app/tools/gimpcolorpickertool.c: ditto.
Unrelated:
* app/tools/gimptool.c: no need to cast the return value of
g_object_new().
2003-01-03 Sven Neumann <sven@gimp.org>
* configure.in: bumped the version number to 1.3.12.
* app/display/Makefile.am
* app/display/gimpdisplayshell-cursor.[ch]
* app/display/gimpdisplayshell-title.[ch]
* app/display/gimpdisplayshell-transform.[ch]: new files with code
that used to live in gimpdisplayshell.c.
* app/display/gimpdisplay-foreach.c
* app/display/gimpdisplay.c
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-handlers.c
* app/display/gimpdisplayshell-selection.c
* app/display/gimpdisplayshell.[ch]
* app/tools/gimpbezierselecttool.c
* app/tools/gimpcroptool.c
* app/tools/gimpdrawtool.c
* app/tools/gimpeditselectiontool.c
* app/tools/gimpfuzzyselecttool.c
* app/tools/gimpmovetool.c
* app/tools/gimptool.c: changed accordingly.
2002-05-03 Sven Neumann <sven@gimp.org>
* app/tools/gimpairbrushtool.[ch]
* app/tools/gimpbezierselecttool.[ch]
* app/tools/gimpblendtool.[ch]
* app/tools/gimpbrightnesscontrasttool.[ch]
* app/tools/gimpbucketfilltool[.ch]
* app/tools/gimpbycolorselecttool[.ch]
* app/tools/gimpclonetool[.ch]
* app/tools/gimpcolorbalancetool[.ch]
* app/tools/gimpcolorpickertool[.ch]
* app/tools/gimpconvolvetool[.ch]
* app/tools/gimpcroptool[.ch]
* app/tools/gimpcurvestool[.ch]
* app/tools/gimpdodgeburntool[.ch]
* app/tools/gimpeditselectiontool.c
* app/tools/gimpellipseselecttool[.ch]
* app/tools/gimperasertool[.ch]
* app/tools/gimpfliptool[.ch]
* app/tools/gimpfreeselecttool[.ch]
* app/tools/gimpfuzzyselecttool[.ch]
* app/tools/gimphistogramtool[.ch]
* app/tools/gimphuesaturationtool[.ch]
* app/tools/gimpinktool[.ch]
* app/tools/gimpiscissorstool[.ch]
* app/tools/gimplevelstool[.ch]
* app/tools/gimpmagnifytool[.ch]
* app/tools/gimpmeasuretool[.ch]
* app/tools/gimpmovetool[.ch]
* app/tools/gimppaintbrushtool[.ch]
* app/tools/gimppainttool.c
* app/tools/gimppathtool[.ch]
* app/tools/gimppenciltool[.ch]
* app/tools/gimpperspectivetool[.ch]
* app/tools/gimpposterizetool[.ch]
* app/tools/gimprectselecttool[.ch]
* app/tools/gimprotatetool[.ch]
* app/tools/gimpscaletool[.ch]
* app/tools/gimpselectiontool.c
* app/tools/gimpsheartool[.ch]
* app/tools/gimpsmudgetool[.ch]
* app/tools/gimptexttool[.ch]
* app/tools/gimpthresholdtool[.ch]
* app/tools/gimptool.c
* app/tools/gimptoolcontrol.h
* app/tools/gimptoolmodule[.ch]
* app/tools/gimptransformtool.c
* app/tools/gimpvectortool[.ch]
* app/tools/path_tool.c
* app/tools/tool_manager[.ch]
* app/tools/tools.c
* libgimptool/gimptool.c
* libgimptool/gimptoolcontrol.h
* libgimptool/gimptoolmodule.h: removed tons of warnings. Do we need
to add -Werror to the CFLAGS to avoid such a mess in the future ?!
Also had to enforce the GIMP coding style in lots of places :-(
* libgimp/gimppixelrgn.c: got sick and tired of debugging plug-ins,
so I've added checks for most parameters passed to the GimpPixelRgn
functions. This will slow down plug-in execution a little bit but
should help to find bugs early.
2002-03-19 Michael Natterer <mitch@gimp.org>
* app/tools/tools-types.h: added enum GimpMotionMode which can be
one of { EXACT, HINT, COMPRESS }.
* app/tools/gimptool.[ch]: removed tool->perfectmouse and added
tool->motion_mode. Default to GIMP_MOTION_MODE_HINT.
* app/tools/gimpinktool.c
* app/tools/gimppainttool.c: set GIMP_MOTION_MODE_EXACT.
* app/tools/gimpfuzzyselecttool.c: set GIMP_MOTION_MODE_COMPRESS.
* app/tools/gimpeditselectiontool.[ch]: ditto. Removed
gtkutil_compress_motion().
* app/display/gimpdisplayshell-callbacks.c: look at
active_tool->motion_mode and perform pointer grabbing and motion
compression accordingly. Also, don't request motion hints from
XInput devices because the wacom driver sends crap (fixes#6901).
This change also brings hints and ordinary motions back in sync
albeit compression, so IMHO it also fixes#68542 and #22375, but
this needs further investigation.
2002-02-18 Michael Natterer <mitch@gimp.org>
* app/tools/tools-types.h
* app/tools/*.[ch]: chain up unconditionally in control(),
s/ToolAction/GimpToolAction/g, s/ToolState/GimpToolState/g.
* app/tools/gimpbezierselecttool.c
* app/tools/gimpinktool.c
* app/tools/gimppainttool.c: don't touch tool->paused_count
(setting it to 0 was a hack which should no longer be needed).
* app/tools/gimpdrawtool.c: check if the draw tool has actually
been started (draw_tool->gdisp != NULL) before calling it's
draw() function.
* app/tools/tool_manager.c: simplified tool_manager_control_active():
simply call gimp_tool_control() if gdisp == tool->gdisp.
* app/tools/gimptool.[ch]: gimp_tool_control(): do all the PAUSE,
RESUME and HALT voodoo here.
* app/tools/gimppainttool.c: implemented #9902 (Drawing straight
lines does not work between different views). It's an evil hack,
but clearly marked in the source.
2002-02-06 Michael Natterer <mitch@gimp.org>
* app/core/gimpobject.c: made the gimp_object_get_memsize()
debugging output configurable by a global "gimp_debug_memsize"
boolean.
* app/display/gimpdisplay.c: removed duplicated prototype.
* app/display/gimpdisplayshell.[ch]: renamed the various cursor
functions to be more consistent and shorter. Compress window title
updates by adding a "gboolean title_dirty" and updating the title
in gimp_display_shell_flush(). Added "%m" (memory size) to the
possible title string substitutions.
* app/display/gimpdisplay-foreach.c
* app/display/gimpdisplayshell-handlers.c
* app/tools/gimpfuzzyselecttool.c
* app/tools/gimptool.c: changed accordingly.
* app/display/gimpdisplayshell-callbacks.c: forgot to grab the
pointer when dragging guides from the rulers. Coincidentially,
this also fixes the buggy offset between guide and mouse
pointer...
Cleaned up the main tool event callback a but more.
* app/widgets/gimppreview.c
* app/gui/commands.c: set the new global "gimp_debug_memsize"
toggle to TRUE while calling gimp_object_get_memsize().
* app/gui/preferences-dialog.c: added a image title example
containing the new "%m" feature.
* docs/gimprc-1.3.5.in: document "%m" in the manpage.
* app/tools/gimpbezierselecttool.c: reordered some statements.
* app/tools/gimpdrawtool.[ch]: store the GimpDisplay passed to
gimp_draw_tool_start() in draw_tool->gdisp and use it for
coordinate transfomration. This way we can paint on a display
which is not tool->gdisp.
* app/tools/gimppainttool.c: changed the gimp_draw_tool_foo()
calls needed to make the straight_line preview work in a way
that does not interfere with paint_tool subclasses which want
to do their own drawing (like the clone tool).
Also changed the paint_tools PRETRACE_PAINT and POSTTRACE_PAINT
flags usage in a way that subclasses can use them without major
hackery: don't simply wrap gimp_display_flush_now() with
PRETRACE/POSTTRACE calls, but wrap the actual painting calls, so
subclasses are able to do useful things with paint_tool->*_coords.
* app/tools/gimpclonetool.c: removed poking around in draw_tool
internals and simply suspend()/resume() it in
PRETRACE_PAINT/POSTTRACE_PAINT to get the clone_src indicator
drawn correctly.
2002-02-05 Michael Natterer <mitch@gimp.org>
Removed pointer grabbing from all tools:
* app/tools/gimptool.[ch]: added "gboolean perfectmouse" which
defaults to FALSE but can be set to TRUE in a tool's instance_init
function.
* app/display/gimpdisplayshell-callbacks.c: look at
active_tool->perfectmouse and gimprc.perfectmouse and do the
pointer grab/ungrab here. The pointer is now grabbed right before
dispatching the button_press to the tool and ungrabbed after
the tool's button_release has returned. It is also grabbed
*always*, not only if tool->state got ACTIVE by button_press,
which makes it all much simpler...
* app/tools/gimpbezierselecttool.c
* app/tools/gimpblendtool.c
* app/tools/gimpbucketfilltool.c
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpclonetool.c
* app/tools/gimpcolorpickertool.c
* app/tools/gimpcroptool.c
* app/tools/gimpeditselectiontool.c
* app/tools/gimpfliptool.c
* app/tools/gimpfreeselecttool.c
* app/tools/gimpfuzzyselecttool.c
* app/tools/gimpinktool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimpmagnifytool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.c
* app/tools/gimppathtool.c
* app/tools/gimprectselecttool.c
* app/tools/gimpselectiontool.c
* app/tools/gimptexttool.c
* app/tools/gimptransformtool.c: removed
gdk_pointer_grab()/ungrab() calls all over the place. Also removed
inclusion of "display/gimpdisplayshell.h" from most of them.
2002-02-04 Michael Natterer <mitch@gimp.org>
* app/tools/gimptool.[ch]: added fields for both the tool's
toggled and untoggled GdkCursorType, GimpToolCursorType and
GimpCursorModifier. Added a default implementation of
gimp_tool_cursor_update() which uses the new fields. Added
gimp_tool_set_cursor() as simple wrapper around the resp.
GimpDisplayShell functions so tools don't need to know them.
Tool implementations can either set the new fields in their
cursor_update() function and chain up or call the new wrapper.
* app/tools/gimpbezierselecttool.c
* app/tools/gimpblendtool.c
* app/tools/gimpbucketfilltool.c
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpclonetool.c
* app/tools/gimpcolorpickertool.c
* app/tools/gimpconvolvetool.c
* app/tools/gimpcroptool.c
* app/tools/gimpdodgeburntool.c
* app/tools/gimperasertool.c
* app/tools/gimpfliptool.c
* app/tools/gimpinktool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimpmagnifytool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.[ch]
* app/tools/gimppathtool.c
* app/tools/gimpselectiontool.c
* app/tools/gimpsmudgetool.c
* app/tools/gimptexttool.c
* app/tools/gimptransformtool.c: changed accordingly:
- set default values in the tools' instance_init functions.
- changed the cursor_update() stuff.
- removed inclusion of subclasses in gimppainttool.c
- the cursor_update() functions are better than before but still evil.
- i probably broke some of them...
2002-02-03 Michael Natterer <mitch@gimp.org>
* app/display/Makefile.am
* app/display/display-types.h
* app/display/gimpstatusbar.[ch]: new widget derived from
GtkStatusbar. Contains the coordinates display, a progress bar
which is also used for status message display and a cancel button.
Added a simplified API for pushing/popping messages which takes a
string as context_id and does the conversion to guint internally
on each call.
* app/display/gimpdisplayshell.[ch]: removed the status bar code.
* app/display/gimpdisplayshell-callbacks.c
* app/display/gimpdisplayshell-handlers.c
* app/display/gimpdisplayshell-scale.c
* app/gui/view-commands.c
* app/gimpprogress.c: changed accordingly.
Removed knowledge about GimpDisplayShell from tools:
* app/tools/gimptool.[ch]: added gimp_tool_push_status() and
gimp_tool_pop_status() so tools don't need to fiddle with
display details.
* app/tools/gimpdrawtool.[ch]: pass a GimpDisplay instead of
a GdkWindow to gimp_draw_tool_start() (the window passed was
always gdisp->shell->canvas->window).
* app/tools/gimpbezierselecttool.c
* app/tools/gimpblendtool.[ch]
* app/tools/gimpclonetool.c
* app/tools/gimpcolorpickertool.c
* app/tools/gimpcroptool.[ch]
* app/tools/gimpeditselectiontool.c
* app/tools/gimpfreeselecttool.c
* app/tools/gimpfuzzyselecttool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimpmagnifytool.c
* app/tools/gimpmeasuretool.[ch]
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.[ch]
* app/tools/gimppathtool.c
* app/tools/gimprectselecttool.[ch]
* app/tools/gimptransformtool.c: changed accordingly:
- pass GimpDisplay to gimp_draw_tool_start().
- use GimpTool's new status push/pop functions.
- removed the statusbar context_id from all tool structs.
* app/gui/dialogs-constructors.[ch]: a bit cleanup in preparation
of dockable editor dialogs.
2001-11-29 Michael Natterer <mitch@gimp.org>
* app/display/gimpdisplayshell.[ch]: replaced the QMask radio
buttons ba a single check button. Still needs some tuning.
* app/display/gimpdisplayshell-handlers.c
* app/display/gimpdisplayshell-qmask.[ch]: changed accordingly.
* app/tools/gimptool.[ch]: added "gboolean handle_empty_image" to
the GimpTool structure.
* app/tools/gimpmovetool.c: set it to TRUE.
* app/tools/gimpfuzzyselecttool.c: don't gimp_[set|unset]_busy()
while calculating the selection but set the busy cursor on the
display manually (we have the pointer grabbed anyway).
* app/display/gimpdisplayshell-callbacks.c: don't check for
GIMP_IS_MODE_TOOL(active_tool) but look at
active_tool->handle_empty_image. Removed the checks for
GIMP_IS_FUZZY_SELECT_TOOL(active_tool) because fuzzy_select
doesn't set GIMP busy while it's active any more.
* app/tools/transform_options.[ch]
* app/tools/gimptransformtool.c
* app/tools/gimprotatetool.c
* app/tools/gimpscaletool.c: added widgets for the transform tools'
constraints (one more #51108 issue fixed).
* app/tools/gimperasertool.c: cosmetic.
* app/widgets/gimpdockbook.c: don't hardcode GtkNotebook's
tab_border to 0 but add a style property for it...
* themes/Default/gtkrc: ...and set it to 0 here.
2001-11-20 Michael Natterer <mitch@gimp.org>
* app/tools/gimpdrawtool.[ch]
* app/tools/gimppainttool.[ch]
* app/tools/gimprectselecttool.[ch]
* app/tools/gimptool.[ch]
* app/tools/gimptransformtool.[ch]: use simple virtual functions
instead of signals for all tools because they are much faster and
don't need to be signals at all.
2001-11-08 Michael Natterer <mitch@gimp.org>
* app/Makefile.am: build display/ before tools/.
* app/devices.c: devices_check_change(): added all events
which have a GdkDevice pointer.
* app/gimpprogress.c: include "display-types.h" instead of
"core-types.h".
* app/core/Makefile.am
* app/core/gimpdrawable-bucket-fill.[ch]: new files: the bucket_fill
stuff taken from tools/gimpbucketfilltool.[ch].
* app/core/core-types.h: added "BucketFillMode".
* app/core/gimpimage-mask-select.[ch]: cleanup.
* app/core/gimpmarshal.list: added more marshallers for GimpTool's
new signal signatures.
* app/core/gimpmarshal.[ch]: regenerated.
* app/display/Makefile.am
* app/display/gimpdisplayshell-dnd.[ch]
* app/display/gimpdisplayshell-layer-select.[ch]: new files: the
canvas drop callbacks from gimpdisplayshell-callbacks.[ch] and
the stuff formerly knows as gui/layer-select.[ch].
* app/display/gimpdisplay.h: don't include "gui/gui-types.h".
* app/display/gximage.c: include "display-types.h".
* app/display/gimpdisplay-foreach.c
* app/display/gimpdisplayshell.[ch]: call gdsplay_delete(), don't
destroy the shell widget.
* app/gui/Makefile.am
* app/gui/layer-select.[ch]: removed.
* app/gui/gradients-commands.c: fixed "Save as POV" fprintf()s.
* app/gui/preferences-dialog.c: removed the layer_select stuff
because it is useless with the new preview system.
* app/gui/tool-options-dialog.c: send the correct data to the
close_callback.
* app/gui/tools-commands.c: changed to follow the new
gimp_tool_initialize() semantics (see below).
Tool & canvas event handling chainsawing:
* app/tools/tools-types.h: new struct GimpCoords which contains
x, y, pressure, tilt etc.
* app/display/gimpdisplayshell-callbacks.[ch]: added utility
functions which transparently retreive the current event's
GimpCoords or take it from the device directly if the event has
none. Pass GimpCoords _in_image_coordinates_ to all tool
functions.
Most important: don't pass GdkEvents and display coordinates to
tools any more.
* app/tools/gimptool.[ch]: changed virtual functions to take
GimpCoords, time and state separately instead of GdkEvents.
* app/tools/gimpbezierselecttool.c
* app/tools/gimpblendtool.c
* app/tools/gimpbucketfilltool.[ch]
* app/tools/gimpbycolorselecttool.c
* app/tools/gimpclonetool.c
* app/tools/gimpcolorpickertool.c
* app/tools/gimpconvolvetool.c
* app/tools/gimpcroptool.[ch]
* app/tools/gimpcurvestool.c
* app/tools/gimpdodgeburntool.c
* app/tools/gimpdrawtool.c
* app/tools/gimpeditselectiontool.[ch]
* app/tools/gimperasertool.c
* app/tools/gimpfliptool.c
* app/tools/gimpfreeselecttool.[ch]
* app/tools/gimpfuzzyselecttool.c
* app/tools/gimpinktool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimpmagnifytool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimpmovetool.c
* app/tools/gimppainttool.c
* app/tools/gimppathtool.[ch]
* app/tools/gimprectselecttool.c
* app/tools/gimprotatetool.c
* app/tools/gimpselectiontool.[ch]
* app/tools/gimpsmudgetool.c
* app/tools/gimptexttool.c
* app/tools/gimptransformtool.[ch]
* app/tools/path_tool.[ch]
* app/tools/selection_options.c: tons and tons of changes:
- changed to use the new virtual function parameters.
- removed zillions of gdisplay_untransform_coords().
- get the active drawable's offsets manually in many cases.
(questionable, but IMHO ok because it's obvious and not simply a
"TRUE" passed to some function)
- reordered some functions to be consistent across tools.
- some tools had to be changed to work on image coords, not
display ones (esp. crop).
- fixed strange rotate tool behaviour which should be backported
to stable.
- some stuff i came across.
- indentation and other paranoia.
- rounding of coordinated may be broken in some tools.
- new bugs guaranteed.
* app/tools/tool_manager.[ch]: new semantic of
tool_manager_initialize_active() (looked at the places where it
was used from and put common code together). Should be a bit
better now :)
* app/tools/gimpblendtool.c
* app/tools/transform_options.c: use the new GTK+ feature that a
widget (toggle button) can be a frame's title for this tools' tool
options.
* app/widgets/widgets-types.h: stuff.
* themes/Default/gtkrc: s/GtkDialog/GimpDialog/.
* tools/pdbgen/Makefile.am: don't scan tools/gimpbucketfilltool.h
any more.
* tools/pdbgen/enums.pl: regenerated.
* tools/pdbgen/pdb/tools.pdb: changed bucket_fill wrapper.
* app/pdb/tools_cmds.c: regenerated.