2000-03-29 Michael Natterer <mitch@gimp.org>
* app/bezier_select.h
* app/bezier_selectP.h
* app/by_color_select.[ch]
* app/ellipse_select.[ch]
* app/free_select.[ch]
* app/move.[ch]
* app/rect_select.[ch]: kindof selection tools code review:
- use SelectOps instead of int.
- removed some unused prototyped and callbacks.
- don't show the SELECTION_MOVE_MASK cursor if there is no
selection and don't try to move the mask in that case.
- re(?)-enabled moving the selection mask even if there is a
floating selection.
- usual bunch of cleanups.
2000-03-27 Michael Natterer <mitch@gimp.org>
* app/transform_core.c: the button_press and cursor_update
functions were still doing checks on the active layer instead of
the active drawable.
Fixing this automatically made the layers mask transformable.
2000-03-26 Garry R. Osgood <gosgood@idt.net>
* gimp/app/bezier_select.c
in bezier_add_point(), when a BEZIER_MOVE type
point is being added to a path with at least
one extant segment, the point is re-typed
to a BEZIER_ANCHOR (which is old behavior)
and designated as the current anchor
(which is new behaviour). With this change,
motion events move the (second) control point
and indicia are properly updated. This closes
#6225.
2000-03-26 Michael Natterer <mitch@gimp.org>
* app/gimage_mask.[ch] (gimage_mask_extract): add an "add_alpha"
parameter to allow selected regions to be extracted without having
an alpha channel added.
* app/global_edit.c: pass add_alpha = TRUE.
* app/transform_core.[ch]: made the transform core work on
non-layer drawables even if no selection is present. Fixes#7485
and #7555.
- transform_core_cut(): extract the mask without alpha if
operating on a non-layer without having a selection.
- transform_core_paste(): return a boolean indicating success
instead of a layer and handle channels correctly.
- transform_core_do(): if the "floating_tiles" passed to the
function are from an un-floated non-layer, treat the whole
non-layer as alpha channel and never enter the loop which
transforms the (not present) color channels.
Also clip the result to ensure that the channel never grows
larger then the image.
* app/tools_cmds.c
* tools/pdbgen/pdb/tools.pdb: transform_core_paste() returns a
gboolean now.
2000-03-25 Michael Natterer <mitch@gimp.org>
* app/cursorutil.[ch]: new global variable "gimp_busy" which gets
set/unset whenever busy cursors are added/removed.
* app/info_dialog.c: register the info dialogs with the dialog
handler.
* app/fuzzy_select.[ch]: cleanups.
Here starts the ugly workaround which simulates something like
locking. If it works, it will close lots of bugs, if not, it's
easy to remove again.
So far, I didn't find strange side effects but Gimp is told to be
a complex program :-) Please test this.
* app/context_manager.c: don't allow tool changes if gimp_busy
is TRUE.
* app/disp_callbacks.c: don't allow mouse and key events in the
display_canvas if gimp_busy is TRUE.
(except if the current tool is FUZZY_SELECT and it is ACTIVE,
which is very ugly)
Also block other stuff like dropping colors/patterns etc.
* app/gdisplay_ops.c: don't close any display while Gimp is
busy. This is not really what we want but at least it prevents
crashes.