app/gimpbrushpipe.c
Double frees due to dangling pointers [gimpbrushpipe.c
CVS-1.27 Lines 396 ff]. Upon failure to load an n-th
pixmap, a GPattern holding the dangling pointers would
be released first, also releasing n-1 pixmap's name and
RGB mask. These would again be freed in pipe and GTK
deconstruction.
2000-10-28 Michael Natterer <mitch@gimp.org>
* app/gimpdrawable.[ch]
* libgimp/gimpsizeentry.c: did some code review: s/0/NULL/,
s/sprintf/g_snprintf/, spacing.
2000-10-26 Sven Neumann <sven@gimp.org>
* app/channel_ops.c (offset_ok_callback): avoid modulo operation on
negative values.
* app/channel_ops.c
* app/crop.c
* app/file_new_dialog.c
* app/layers_dialog.c
* app/preferences_dialog.c
* app/rotate_tool.c
* app/scale_tool.c: use RINT() when assigning the result of
gimp_size_entry_get_refval() to an integer.
2000-10-22 Sven Neumann <sven@gimp.org>
* app/edit_selection.[ch]: plugged memleak (similar to the one that
was present in gtkutil_compress_motion()) in the key snooper.
Round moves to nearest integer instead of truncating the value.
This seems to fix the reported redraw problems when moving
selections at low zoom levels.
Cleaned up the code a little and converted enum values to uppercase.
* app/bezier_select.c
* app/free_select.c
* app/fuzzy_select.c
* app/move.c
* app/rect_select.c
* app/text_tool.c: updated to use the new EditType enum values.
* app/gimprc.c: minor optimization in the GList handling.
* app/layer.[ch]: removed unused functions.
* app/menus.c: removed "Dump Items (Debug)" menu entry.
2000-10-01 Michael Natterer <mitch@gimp.org>
* app/gimpbrush.c
* app/gimpbrushpipe.c
* app/pattern_header.h
* app/patterns.c: (Hopefully) fixed#8150.
- If something goes wrong during loading, free the resp. object
immediately and close it's FD.
- When destroying, check each pointer before freeing it.
- Never use if (!gimp_brush_load_brush() || !pattern_load())
but check the return values of both calls separately.
(the original code tried to free an already destroyed temp_buf).
- stuff like below (s/sz_PatternHeader/sizeof(PatternHeader)/g etc.)
2000-09-29 Michael Natterer <mitch@gimp.org>
* app/brush_edit.[ch]
* app/brush_header.h
* app/gimpbrush.[ch]
* app/gimpbrushgenerated.[ch]
* app/gimpbrushlist.[ch]
* app/gimpbrushpipe.[ch]
* app/gimpcontext.h
* app/gimplist.[ch]
* app/gimpobject.[ch]
* app/gimpset.[ch]
* app/gimpsignal.[ch]
* app/parasitelist.h: Lotsa fixes in the brush referencing code
and cleanups in many GtkObjects:
- Reference brushes correctly (call gtk_object_sink() after adding
them to the brush list). Don't crash when renaming a brush
multiple times.
- Replaced all gtk_object_destroy() with gtk_object_unref|sink().
- Removed the "Fake Gimp object system" (gimp_object_destroy() et.al.)
all over the place (while it's a good idea to have a common Gimp
base object, it's totally useless to try to imitate Gtk's object
system).
- s/sz_BrushHeader/sizeof(BrushHeader)/g
- And of course various indentation and coding style paranoia changes
in all files I visited.
2000-08-23 Garry R. Osgood <gosgood@idt.net>
* app/image_map.c
A bit of refresh drawable code was misplaced
these many years ago, leading to the persistence
of color tool effects, as reported in Mihail
Milushev's nicely composed bug report. Closes#7626
which has the gory details.
2000-08-23 Sven Neumann <sven@gimp.org>
* app/fileops.c: make the file_save dialog sensitive again if the
user clicked "No" when asked if he wishes to overwrite a file.
* app/gimpimage.c: when saving an undoable parasite, just do it
without calling undo_push_cantundo(). Undoable parasites are used
by many save plug-ins to attach a comment, but this operation
shouldn't prevent the user from using the undo_stack afterwards.
The JPEG plug-in has an additional bug that I couldn't solve, so
undoing after a Save As JPEG is still impossible.
* app/undo_history.c: lame attempt to draw the clean symbol at the
correct undo step. Not perfect but much better as before...
2000-08-16 Garry R. Osgood <gosgood@idt.net>
* app/gdisplay.c
* app/image_map.c
Addresses Bug Report #14704, and an
undisclosed undo system bug. Freezes
undo stack before interactive tools
commence idle rendering; thaws stack
on cleanup and immediately sets menu
sensitivity.
Not an image lock, but Yet Another UI
Lock. Oh well; merrilly we patch along...
See http://bugs.gnome.org/db/14/14704.html
for gory details. Closes#14704.
Tue Jul 18 23:34:34 BST 2000 Austin Donnelly <austin@gimp.org>
* plugs-ins/common/gif.c: The gif save plugin normally asks the
user if it's ok to crop the image if there are layers larger
than the image size. This isn't a good idea if we're running
with run_mode == NON_INTERACTIVE. Fix similar to that
suggested by Bryan Livingston <bryan@cooltext.com> on
gimp-developer mailing list.
* app/layer.c: Fix for Bug#17347: Scale Layer leaves artifacts.
Basic problem is that scaling a layer when there's a selection
active (eg there's a floating selection) doesn't invalidate
the layer bounds. Same problem with resizing a layer,
although the bug report didn't mention that. Fixed by changing
layer_resize() and layer_scale_lowlevel() to call
layer_invalidate_boundary() once done changing the layer.
2000-06-14 Michael Natterer <mitch@gimp.org>
* Makefile.am
* app/cursorutil.[ch]
* app/tools.c
* cursors/*: added lots of new cursors and removed old ones.
* app/gdisplay.[ch]: enabled the cursor setting parameters in
gdisplay_install_tool_cursor().
* app/bezier_select.c
* app/blend.c
* app/bucket_fill.c
* app/by_color_select.c
* app/clone.c
* app/color_picker.c
* app/crop.c
* app/disp_callbacks.c
* app/edit_selection.c
* app/eraser.c
* app/flip_tool.c
* app/ink.c
* app/iscissors.c
* app/magnify.c
* app/measure.c
* app/move.c
* app/paint_core.c
* app/rect_select.c
* app/text_tool.c
* app/transform_core.c: use the new cursors. Only the transform
tools are still using old cursors.
* app/layers_dialog.c: a tooltip for "Keep Trans."
* app/user_install.c: set the ctree's selection mode to BROWSE.
2000-06-09 Michael Natterer <mitch@gimp.org>
Cursor patch II:
This is only the logic inside the cursor system and not yet used.
* app/cursorutil.[ch]: [gimp]_change_win_cursor() take lots of
parameters now and compose cursors from up to three cursor
bitmaps/masks.
* app/gdisplay.[ch]: As a test, create a hardcoded example cursor
if "Cursor Mode" is set to "Tool Icon with Crosshair" in prefs.
* app/curves.c
* app/dialog_handler.c
* app/scroll.c: changed the calls to the win_cursor function.
* app/tools.[ch]: added a cursor and a toggle cursor to the ToolInfo
structure of all tools.
* app/toolsF.h: new ToolType TOOL_TYPE_NONE.
* app/gimpdnd.c
* app/interface.c: check for silly filenames in the file dnd
callback. Closes#13733.
* Makefile.am
* cursors/bucket_fill_small.xbm
* cursors/bucket_fill_small_mask.xbm
* cursors/crop_small.xbm
* cursors/crop_small_mask.xbm
* cursors/crosshair_small.xbm
* cursors/crosshair_small_mask.xbm
* cursors/ellipse_select_small.xbm
* cursors/ellipse_select_small_mask.xbm
* cursors/eraser_small.xbm
* cursors/eraser_small_mask.xbm
* cursors/free_select_small.xbm
* cursors/free_select_small_mask.xbm
* cursors/fuzzy_select_small.xbm
* cursors/fuzzy_select_small_mask.xbm
* cursors/intersect.xbm
* cursors/intersect_mask.xbm
* cursors/minus.xbm
* cursors/minus_mask.xbm
* cursors/move.xbm
* cursors/move_mask.xbm
* cursors/paintbrush_small.xbm
* cursors/paintbrush_small_mask.xbm
* cursors/pencil_small.xbm
* cursors/pencil_small_mask.xbm
* cursors/plus.xbm
* cursors/plus_mask.xbm
* cursors/rect_select_small.xbm
* cursors/rect_select_small_mask.xbm
* cursors/resize_small.xbm
* cursors/resize_small_mask.xbm
* cursors/zoom.xbm
* cursors/zoom_mask.xbm
* cursors/zoom_small.xbm
* cursors/zoom_small_mask.xbm: new files extracted from Tigert's
gimp-tool-cursors.xcf created at GimpCon.
Tigert, I'll commit the xcf as soon as I've added empty layers
with the names of the cursors that are missing.
* cursors/mouse.xbm
* cursors/mouse_mask.xbm: made it 32x32 to allow for cursor
composition.
2000-06-08 Sven Neumann <sven@gimp.org>
* app/qmask.c: call undo_push_qmask() before removing the
channel since the callback will set the qmask_state
incorrectly otherwise. Fixes bug #13472.
* app/undo.[ch]: code cleanup
* plug-ins/common/gif.c: put save_comment into the values
that are stored between calls to the GIF plug-in, so it
remembers if the user wants to save the comment. Fixes
bug #12755.
* app/layers_dialog.c: Disable the "Add Layermask" menuentry
for indexed images.
* app/gimpimage.c: Leave gimp_image_add_layer_mask(...) after
spitting out messages when trying to add a layermask to an
indexed image.
-Yosh
2000-06-06 Michael Natterer <mitch@gimp.org>
* Makefile.am
* cursors/crosshair.xbm
* cursors/crosshair_mask.xbm: new files.
* app/cursorutil.[ch]
* app/gdisplay.[ch]
* app/gimprc.[ch]
* app/preferences_dialog.c: Started to add the new set of
consistent tool cursors. The crosshair one is the easy part
but I wanted to see a result :) The other two options in
the pref's cursor menu are still dummys.
2000-05-31 Michael Natterer <mitch@gimp.org>
* app/gimpunit.c
* libgimp/*: all libgimp headers are included via gimp.h or
gimpui.h, so include <gtk/gtk.h> there and in the *.c files.
Various cleanups.
2000-05-29 Sven Neumann <sven@gimp.org>
* app/Makefile.am
* app/paint_core.c
* app/paint_core_kernels.h: moved brush subsampling kernels
into its own header file and generated a slightly different
kernel (using the new kernelgen tool, see below). The new
kernel simulates a circular brush instead of a rectangular
one and gives slightly different (lighter) results.
* app/gimage_mask.c: when stroking a selection, offset the
points by 0.5 to align the brushes with the pixel grid. This
lets you create 1-pixel wide rectangles and ellipses.
* tools/Makefile.am
* tools/kernelgen.c: simple hack to generate subsampling
kernels.
* app/gimpimage.c
--Fixed Fujita Yuji's bug (reported 27May2000 to
gimp-developer) -larger than 64x64 brush and
selection mask crashes smudge/dodgeburn/convolve
This was a rowstrides bug in gimp_image_replace_image.
2000-05-21 Michael Natterer <mitch@gimp.org>
These changes enable help support for 3rd party plug-ins which
install their help files outside GIMP's main help dir.
Instead of calling gimp_help(), gimp_plugin_help_func() etc.,
all help callbacks now have to call gimp_standard_help_func()
which has different implementations in the app and in libgimp.
There is a new function gimp_plugin_help_register() which can
be called during plug-in query. plug_in.c keeps a list of
executable_name/help_path pairs. Plug-ins have to pass their
exec. name to gimp_help() which uses the list to find the plug-in's
help directory.
* app/gimphelp.[ch]: gimp_help() now takes a help_path parameter.
help_path == NULL means the standard help directory. Various
changes to pass the help_path to the help browser.
* app/gimprc.c: save the plug-in's help_path in the pluginrc file.
* app/menus.c: ugly hack to enable help_paths in the "F1" callback.
* app/plug_in.[ch]: many help_path related changes. Use g_basename()
instead of strrchr(str,G_DIR_SEPARATOR), cosmetic cleanups.
* app/internal_procs.c
* app/gimphelp_cmds.c
* tools/pdbgen/pdb/gimphelp.pdb: new procedure
gimp_plugin_help_register(). gimp_help() takes a second parameter
which is the executable name (not the help_path).
* app/color_notebook.c
* app/commands.c
* app/lc_dialog.c
* app/preferences_dialog.c
* app/tools.c: call gimp_standard_help_func() instead of gimp_help().
* libgimp/gimp.c: new function gimp_get_progname() which returns
the full path of the plug-in's executable.
* libgimp/gimp.h: export the new function,
removed gimp_plugin_help_func(), gimp_help() takes the executable
name as second parameter.
* libgimp/gimpcompat.h: added gimp_plugin_help_func().
* libgimp/gimphelp.c: a wrapper for gimp_plugin_help_register(),
changed the calls to gimp_help.
* libgimp/gimphelpui.[ch]: call gimp_standard_help_func() instead
of gimp_help().
* plug-ins/helpbrowser/helpbrowser.c: now called with an additional
help_path parameter. Various changes to enable
help_path != gimp_standard_help_path.
Unrelated stuff:
* app/batch.h: added missing GPL header.
* app/gimpunit.c: had a LGPL header, merged some fprintf's into
one call.
* app/procedural_db.[ch]: cosmetic: g* types, s/g_malloc/g_new/,
prototypes, indentation.
* app/resize.c: use less packing widgets. didn't find the "offset"
redraw bug :(
2000-05-12 Sven Neumann <sven@gimp.org>
* gimpdrawable.c: enabled the (commented out) signal
"invalidate_preview".
* app/layers_dialog.c: connect to the "invalidate_preview"
signal to catch changes that need to be shown in the layer
previews. Synthetize an expose event when a layer changes.
Expose events are optimzed away by GTK+ if the widget is not
visible. Therefore, previews not visible in the layers_dialog
are not redrawn when they invalidate. Later the preview gets
validated by the image_preview in lc_dialog but is never
propagated to the layer_pixmap. We work around this by using an
additional flag "layer_pixmap_valid" so that the pixmap gets
updated once the preview scrolls into sight.
Fixes bugs #10549, #10300 and #8787.
* app/channel.[ch]
* app/layer.[ch]: code review and indentation
--Sven
* app/image_map.[ch]: new function image_map_clear that removes
the preview without freeing the image_map.
* app/brightness_contrast.c
* app/color_balance.c
* app/curves.c
* app/hue_saturation.c
* app/levels.c
* app/posterize.c
* app/threshold.c: Add a call to image_map_clear in the
preview toggle button callback. This makes the preview toggle
button behave as expected.
* app/histogram_tool: remove an unnecessary include.
2000-05-08 Michael Natterer <mitch@gimp.org>
* app/errors.c (gimp_fatal_error): oops, forgot a debugging
g_print().
* app/gdisplay.c (gdisplay_set_menu_sensitivity): there _can_ be
an active drawable even if there is no layer. Also reordered
the rest if the checks.
2000-05-08 Michael Natterer <mitch@gimp.org>
* app/fileops.c
* app/gdisplay.c: return silently from save/save_as and grey out
the menu entries if there is no active drawable. Fixes#10239.
2000-04-30 Michael Natterer <mitch@gimp.org>
* gimprc.in
* app/gimprc.[ch]: replaced "color-cube" by "min-colors".
* app/app_procs.c: read unitrc/gimprc before displaying the splash.
* app/colormaps.c: set min_colors and install_cmap before
initializing GdkRGB.
* app/gimprc.[ch]
* app/gimpunit.c: don't call the splash's progress_update function.
* app/plug_in.c: pass min_colors instead of color_cube to plugins.
* app/preferences_dialog.c: widget for min_colors.
* libgimp/gimp.[ch]: s/color_cube/min_colors/ but left
gimp_color_cube() there for source level compatibility.
* libgimp/gimpprotocol.[ch]: changed the GPConfig message
accordinly and increased the gimp protocol version number because
the change breaks binary compatibility. Also actually pass the
use_xshm variable over the wire (was only in the GPConfig struct
before).
Was it the right thing to do to increase the version number??
* libgimp/gimpui.c (gimp_ui_init): use the same code as the app
for initializing GdkRGB. Never explicitly activate Gdk's SHM
usage (only switch it off).
* app/main.c
* libgimp/gimp.c: reverted the handling of all signals except
SIGCHLD back to plain old signal() because those signals are
fatal anyway and sigaction() as used by gimp_signal_*() made
debugging (stacktrace) impossible.
* plug-ins/AlienMap/AlienMap.c
* plug-ins/AlienMap2/AlienMap2.c
* plug-ins/FractalExplorer/Dialogs.c
* plug-ins/bmp/bmp.c
* plug-ins/borderaverage/borderaverage.c
* plug-ins/dbbrowser/dbbrowser.c
* plug-ins/faxg3/faxg3.c
* plug-ins/fits/fits.c
* plug-ins/flame/flame.c
* plug-ins/fp/fp.c
* plug-ins/fp/fp_gtk.c
* plug-ins/gdyntext/Makefile.am
* plug-ins/gdyntext/gdyntext_ui.c
* plug-ins/gfig/gfig.c
* plug-ins/gflare/gflare.c
* plug-ins/gfli/gfli.c
* plug-ins/gimpressionist/gimpressionist.c
* plug-ins/helpbrowser/helpbrowser.c
* plug-ins/ifscompose/ifscompose.c
* plug-ins/imagemap/Makefile.am
* plug-ins/imagemap/imap_main.c
* plug-ins/maze/maze_face.c
* plug-ins/mosaic/mosaic.c
* plug-ins/pagecurl/pagecurl.c
* plug-ins/print/print.c
* plug-ins/rcm/rcm_dialog.c
* plug-ins/script-fu/script-fu-console.c
* plug-ins/script-fu/script-fu-scripts.c
* plug-ins/script-fu/script-fu-server.c
* plug-ins/sel2path/Makefile.am
* plug-ins/sel2path/sel2path.c
* plug-ins/sgi/sgi.c
* plug-ins/sinus/sinus.c
* plug-ins/struc/struc.c
* plug-ins/webbrowser/webbrowser.c
* plug-ins/winsnap/winsnap.c
* plug-ins/xjt/xjt.c: use gimp_ui_init().
* plug-ins/Lighting/lighting_ui.c
* plug-ins/MapObject/mapobject_ui.c: only switch Gdk SHM usage off,
never on. Don't use gimp_ui_init() here because of libgck.
2000-04-26 Michael Natterer <mitch@gimp.org>
* app/color_select.c
* app/colormaps.[ch]
* app/context_manager.c: removed unused global variables
[foreground|background]_pixel and [old|new]_color_pixel.
Initialize the colormap and visual stuff with GdkRGB instead of
GtkPreview functions (which are deprecated).
* app/[62 files]: removed #include's (started with colormaps.h and
couldn't stop). Also ordered them consistently and did some small
unrelated cleanups.
Removed variuos <stdlib.h> et.al. but checked the files carefully
before doing so. If I was too radical and you get warnings on your
platform, please flame me or just put them back :)
2000-04-26 Michael Natterer <mitch@gimp.org>
* app/gdisplay.[ch]
* app/gdisplay_ops.c: made the warning_dialog a per-display
variable. The old behaviour of having only one global variable
can easily result in loss of work and should IMHO be considered
a bug.
2000-04-23 Tor Lillqvist <tml@iki.fi>
* libgimp/gimpui.def: Add gimp_ui_init.
* libgimp/makefile.{cygwin,msc} (gimpui_OBJECTS): Add gimpui.
* app/makefile.{cygwin,msc}
* plug-ins/makefile.{cygwin,msc}: New installation directory.
* app/datafiles.c (is_script): Must not g_free() value returned by
g_getenv().
* plug-ins/gdyntext/font_selection.c: Don't include gdkx.h with
GTk+ 1.3.
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-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).
2000-04-03 Michael Natterer <mitch@gimp.org>
* app/gimpdnd.[ch]
* app/channels_dialog.c
* app/layers_dialog.c: removed the GdkGC parameter from
gimp_dnd_set_drawable_preview_icon() since it's no longer used.
* app/gimpimage.c: dirty the view correctly after applying the
layer mask. Don't gdisplays_flush() because it's the job of the
caller.
* app/layers_dialog.c: when applying a layer mask, flush either
the display or just the layer_widget, depending on the previous
visibility state of the mask. Cleanups.
* plug-ins/print/gimp_color_window.c
* plug-ins/print/gimp_main_window.c: including config.h re-enables
i18n.
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.