2000-04-26 Michael Natterer <mitch@gimp.org>
* app/free_select.c: fill empty "default" with a "break" (#9431).
* libgimp/gimpenv.c: g_path_is_absolute wants a parameter (#9400).
2000-04-22 Garry R. Osgood <gosgood@idt.net>
* app/bezier_select.c
Closes the most recent bezier segfault report;
about plotting anchor points on- and off-image.
unable to cite because bugs.gnome.org is not
well. Andrew Thomas handled the only other
buglet I'm aware of at this time.
Sat Apr 22 14:01:06 BST 2000 <alt@gimp.org>
* app/bezier_select.c
Fixed problem pointed out by Garry R. Osgood (manipulating
control points where curve is closed). Thanks
again Garry for pointing it out.
2000-04-20 Michael Natterer <mitch@gimp.org>
* app/fuzzy_select.c
* app/selection_options.h
* app/tool_options.c: moved the "Threshold" scale from the fuzzy
select options to the selection options structure, so none of the
selection tools needs it's own tools options structure.
* app/bucket_fill.c: moved "Threshold" after "Sample Merged" as in
the fuzzy select options.
2000-04-19 Michael Natterer <mitch@gimp.org>
* app/bucket_fill.c
* app/by_color_select.c
* app/fuzzy_select.c
* app/preferences_dialog.c: made the "default_threshold" gimprc
variable work as advertized:
- initialize the thresholds with it.
- use it for "Reset".
- added a widget to the "Tool Options" preferences page.
- noticed that the "Reset" button of "By Color Select" doesn't
behave like all the other "Reset" buttons and changed it to
reset the ui, not the selection.
(There is now a "None" button and because it was so trivial, I
couldn't resist to add "All" and "Invert" buttons, too)
* libgimp/Makefile.am
* libgimp/gimpui.c: new file.
* libgimp/gimpui.h: new function gimp_ui_init() which will be
called by all plugins which have a ui (not only by those with a
preview because plugins should always follow gimp's colormap
installation policy).
Could someone please check if the FIXME stuff in the function
is the right thing to do (TM). Does GdkRGB allocate the correct
colors for the widgets in all cases or do we have to find another
way to ensure this across processes (gtk instances)?
* plug-ins/common/gif.c: use GIMP_HAVE_PARASITES instead of
_PARASITES_H, which wasn't defined anymore. Makes comment
parasites work with GIFs again.
* app/measure.c: pressing ALT anywhere outside the handles allows
to move the measure lines.
--Sven
* app/app_procs.c: if we cannot load the font we'd like to use,
use the gtk+ default font. Fixes bug #8359.
* app/about_dialog.c
* app/install.c: properly ref/unref fonts
* app/text_tool.[ch]: code cleanup (do not rely on TRUE being 1)
* app/tips_dialog.c: code cleanup and less resizing
--Sven
2000-04-03 Michael Natterer <mitch@gimp.org>
* app/color_panel.[ch]
* app/color_picker.c
* app/qmask.c: removed the public function color_panel_free() and
fake a real widget's behaviour by connecting to the panel widget's
"destroy" signal.
* app/channels_dialog.c
* app/layers_dialog.c: cleaned up and sync'ed the code where
possible (without changing the logic).
* app/bezier_select.c
Curves/Path tool
Fixed propblem with deleting points. You can now delete the first
and last point on any open curve (as well as mid-points).
Also fixed some problems where some points would leave the markers
on screen after they had been deleted.
Note you have always been able to delete whole curves by pressing
the "shift" key when over a point to be deleted in "remove mode".
2000-04-01 Garry R. Osgood <gosgood@idt.net>
* gimp/app/bezier_select.c
No fooling, #6903 was not that hard to close;
in bezier_edit_point_on_curve(),when point
deletion reduces a curve below the minimum
with which the implementation can cope (2
anchors, four controls) we put it out of its
misery with an invocation of delete_whole_curve().
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.
* app/fileops.c
* app/gdisplay.[ch]: when reverting an image, reconnect all
affected views to the reverted version. This fixes one of the
bugs Tigert pointed out at GUADEC.
* app/gimage_mask.[ch]
* app/flip_tool.c: cleanups
--Sven & Mitch
* app/gimpdrawable.c: gimp_drawable_get_color_at() now silently
returns NULL again if the coordinates are out of range. A lot of
code using this function relies on this feature and correctly
checks the return value. No need to emit critical warnings here.
The GTK_CHECK_TYPE macro test for obj != NULL, no need to do this
check twice. Removed lots of unnecessary calls to g_return_if_fail().
* app/color_picker.c: with the old behaviour of
gimp_drawable_get_color_at() the code is a bit simpler.
* app/fuzzy_select.c: fuzzy_select relied on drawable_offsets()
returning off_x = off_y = 0 if drawable == NULL. Decided to change
this here, fixes bug #7077.
* app/gimpimage.[ch]: Even though we made bad experiences with the
changes in gimpdrawable.c, I have introduced similar argument checks
here.
* app/image_map.c: indentation
--Sven
2000-03-08 Tor Lillqvist <tml@iki.fi>
* app/cursorutil.c (gtkutil_compress_motion)
* app/edit_selection.c (process_event_queue_keys): Guard against
gdk_event_get returning NULL (which can happen at least on Win32).
* libgimp/gimp.def: Add a couple of new entry points.
* plug-ins/makefile.{cygwin,msc}: Update according to the source
file changes. Fix some typos in the .msc file.
Fixes by Hans Breuer:
* app/resize.c: Add some more includes.
* libgimp/gimpenv.c
* plug-ins/gflare/gflare.c: Win32 header lossage fixup.
2000-03-07 Michael Natterer <mitch@gimp.org>
* app/by_color_select.c: immediate cursor_update feedback on
modifier events.
* libgimp/gimpwidgets.c: one more s/private_tip/help_data/
2000-03-04 Michael Natterer <mitch@gimp.org>
* Makefile.am
* cursors/selection_move.xbm
* cursors/selection_move_mask.xbm
* app/cursorutil.[ch]: new cursor for moving the selection
mask. Looks imho nicer than the ugly GDK_DIAMOND_CROSS.
* app/move.c
* app/rect_select.c: use the new cursor.
* app/paint_core.c: check for the statusbar's context_id in the
cursor_update function. Fixes gdk_criticals with the line preview
(which doesn't need a mouse click). Minor cleanups.
* app/tool_options.c: put the paint_pressure options in a
GtkHWrapBox instead of a GtkHBox. Makes the size of the dialog a
bit less locale-dependent.
* plug-ins/common/xbm.c: use accessor functions instead of using
the parasite's fields directly.
2000-03-03 Michael Natterer <mitch@gimp.org>
* app/crop.c: s/"Only"/"only"/
* app/iscissors.c: one more cursor_update fix. This time I don't
claim that it's _really_ correct.
* app/tool_options.c: don't add a separator after
opacity/paint_mode if a paint pressure options box follows.
* cursors/bad.xbm
* cursors/bad_mask.xbm: made it FAT (no need to use thin lines
which show as much as possible of the image below because the
cursor indicates that no operation is possible).
* libgimp/gimpprotocol.[ch]: s/int/gboolean/ where appopriate,
indentation paranoia.
_gp_*_read(): free the already allocated parts of the message if
reading a subsequent part fails. These cleanups will probably occur
shortly before the process crashes, but at least they make the
search for real leaks easier.
* plug-ins/common/uniteditor.c: some more tooltips.
* plug-ins/common/xbm.c: store the image comment in the
"gimp-comment" parasite and the hot spot in the new "hot-spot"
parasite. Added ui for entering the hot spot.
* docs/parasites.txt: documented the new "hot-spot" parasite.
2000-03-03 Michael Natterer <mitch@gimp.org>
* app/iscissors.c: this time cursor_update feedback is _really_
correct: for closed curves, show the "point" cursor if a mouse
click will modify the curve and the "bad" cursor if a mouse click
will do nothing. Seems it was not too hard to understand how it
works...
* plug-ins/common/uniteditor.c: for consistency, did a
s/"Delete","Undelete"/"Don't Save","Save"/.
2000-03-02 Michael Natterer <mitch@gimp.org>
* app/iscissors.c: Iscissors was using rect_select_cursor_update
which is totally wrong since the oper_update_func tool method was
introduced (in fact it didn't even give correct feedback before).
Added oper_update_func, modifier_key_func, cursor_update_func for
Iscissors which give correct cursor_update feedback now. The only
remaining inconsistency occurs when a curve is closed: There's no
way to find out if the mouse is over a control point/line or
outside (without touching the Iscissors engine, which I didn't
want to do because I don't understand how it works ;-).
2000-03-02 Michael Natterer <mitch@gimp.org>
* app/rect_select.[ch]: added a modifier_key_func which gives
immediate cursor_update feedback on modifier key events.
* app/ellipse_select.c
* app/free_select.c
* app/fuzzy_select.c
* app/rect_selectP.h: call the new function.
Added current_[x|y] fields to the tools' structures which get
updated from the "motion" functions. They have to appear in the
same order in all structures because the modifier_key_func treats
them all as rectangular selection tools.
This is ugly and cries for a object hierarchy of tools.
2000-03-01 Michael Natterer <mitch@gimp.org>
* Makefile.am
* cursors/*: a proper naming scheme for all cursor files. Added
zoom_in and zoom_out cursors.
* app/bezier_select.c
* app/by_color_select.c
* app/cursorutil.[ch]
* app/rect_select.c
* app/scale.[ch]: changed according to the new cursor names. Some
minor fixes.
* app/magnify.[ch]: made the zoom_in/zoom_out toggle a proper
tool_toggle and show cursors for the two modes.
* plug-ins/print/print-util.c: patch from Robert Kravitz which
fixes printing layers with alpha.
* app/gimpcontextpreview.c: return without warning if popup_timeout
is already set. Suppresses warning that occured on double-click.
* app/layers_dialog.[ch]
* app/menus.c: added "Delete Mask" menu entry and removed dialog
asking if mask is to applied or discarded on "Apply Mask".
* app/tools.c: Magnify is not a transform tool
--Sven
Mon Feb 28 19:11:39 GMT 2000 Adam D. Moss <adam@gimp.org>
* app/cursorutil.c app/cursorutil.h:
added gtkutil_compress_motion() utility function to seek and
destroy outstanding pointer motion events from the gdk event queue
for a given widget.
* app/edit_selection.c:305: Use gtkutil_compress_motion() to
do a more thorough job of tracking motion (something recently
started interleaving our motion events with others, largely
nullifying the effectiveness of GDK_POINTER_MOTION_HINT_MASK).
* app/edit_selection.c:704: Yikes, the key-press snooping code
was turning part of the event queue back-to-front with each
compressed key-press. (Still looks a bit bogus overall; looks
as though it could transplant a whole chunk of the start of
the event queue right onto the end. I'll probably disable it
unless someone points out that I'm a doofus.)
2000-02-27 Garry R. Osgood <gosgood@idt.net>
* gimp/app/by_color_select.c
* gimp/app/color_picker.c
* gimp/app/gimpdrawable.c
* gimp/app/image_map.c
* gimp/app/paint_core.c
Inadvertent logic error in g_return_val_if_fail()
style sanity checks implemented in
gimp_drawable_get_color_at() gave rise to
segment violation reported in #6624;
error admitted out-of-bounds x&y that
do not map to tiles. Closes#6624.
GTK-critical warnings which result from
this new sanity check require that
gimp_drawable_get_color_at() clients
perform initial culling of out-of-bounds
x & y coordinates.
2000-02-22 Michael Natterer <mitch@gimp.org>
* app/gimpcontext.[ch]: it's more intelligent to implement the
parent_context stuff with gtk_signal_connect_object() instead of
having internal callbacks for each context attribute.
Exported the existing gimp_context_*_changed() functions and
changed them to do nothing but emitting the signal.
* app/app_procs.c
* app/tools.c
* app/transform_tool.c: use gimp_context_tool_changed() instead of
gtk_signal_emit_by_name().