2005-06-14 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.c (gimp_image_raise_layer)
(gimp_image_raise_layer_to_top): allow to raise a layer w/o an
alpha channel.
2005-05-25 Michael Natterer <mitch@gimp.org>
* app/core/gimpviewable.[ch]: added virtual function
GimpViewable::get_size() and public API gimp_viewable_get_size()
which return width and height and a boolean indicating if the
viewable has a size at all.
Added default implementation of GimpViewable::get_popup_size()
using the new get_size() API.
* app/core/gimpbrush.c
* app/core/gimpbuffer.c
* app/core/gimpdrawable.c
* app/core/gimpimage.c
* app/core/gimppattern.c: implement GimpViewable::get_size().
* app/core/gimpbrush.c
* app/core/gimppattern.c: removed GimpViewable::get_popup_size()
implementations, the default one is good enough.
* app/core/gimpbrushpipe.c (gimp_brush_pipe_get_popup_size):
redirect to gimp_viewable_get_size() instead of duplicating its
return values.
* app/widgets/gimpcontainertreeview.c
* app/widgets/gimpview.c: allow pixbuf dragging out of any
viewable that has a size.
* app/widgets/gimpdrawabletreeview.c: removed pixbuf dragging code
here.
* app/widgets/gimpdnd.c: set gimp busy around encoding/decoding
pixbufs into/from GtkSelectionData, because it can be a time
consuming operation.
2005-05-06 Sven Neumann <sven@gimp.org>
* app/actions/layers-actions.c
* app/core/gimpimage.c (gimp_image_position_layer)
* app/widgets/gimplayertreeview.c (gimp_layer_tree_view_drop_possible):
drop the limitation that layers not at the bottom of the stack
have to have an alpha channel. Allow the user to move the
background layer up in the stack or reposition it using DND.
* tips/gimp-tips.xml.in: changed the relevant tip and some more.
2005-04-05 Sven Neumann <sven@gimp.org>
* app/core/core-enums.[ch]
* app/core/gimpimage.c
(gimp_image_remove_layer, gimp_image_remove_channel): handle a
floating selection attached to the layer or channel that is being
removed. Fixes bug #168582 but doesn't handle floating selections
attached to layer masks.
2005-04-03 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.[ch]: added new signals "sample-point-added"
and "sample-point-removed" and public functions to emit them.
* app/core/gimpimage-sample-points.c (gimp_image_add_sample_point)
(gimp_image_remove_sample_point): emit them accordingly.
* app/core/gimpimage-undo-push.c (undo_pop_image_sample_point):
ditto.
(undo_pop_image_guide)
(undo_pop_image_sample_point): added comments why we add/remove
stuff manually instead of using the GimpImage APIs.
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpcursorview.[ch]
* app/widgets/gimpsamplepointeditor.[ch]: new widgets.
GimpCursorView is a replacement for the info window's "Cursor"
page, GimpSamplePointEditor is a view on an image's sample points.
The sample point editor does nothing yet except keeping a 2x2 grid
of GimpColorFrames. Addresses bug #137776.
* app/dialogs/dialogs.c
* app/dialogs/dialogs-constructors.[ch]: register the new widgets
as dockable dialogs.
* app/actions/dialogs-actions.c (dialogs_dockable_actions)
* menus/dialogs-menuitems.xml: added actions and menu items for
the new dialogs.
* app/display/gimpdisplayshell-cursor.c
(gimp_display_shell_update_cursor)
(gimp_display_shell_clear_cursor): update the new cursor view.
* app/widgets/gimphelp-ids.h: help IDs for the new dialogs.
* app/widgets/widgets-enums.[ch] (enum GimpColorFrameMode):
changed description "Pixel values" to "Pixel" because the former
was too long.
2004-10-12 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.[ch]: renamed struct member "unit" to
"resolution_unit".
* app/actions/image-commands.c
* app/core/gimp-edit.c
* app/core/gimpimage-duplicate.c
* app/core/gimpimage-undo-push.c
* app/dialogs/info-window.c
* app/vectors/gimpvectors-export.c
* app/widgets/gimptoolbox-dnd.c:
* app/xcf/xcf-load.c
* app/xcf/xcf-save.c: changed accordingly. Use gimp_image_get_unit()
where appropriate.
* app/core/gimptemplate.c (gimp_template_set_from_image): fixed
unit handling. Don't touch the template unit, it is used as the
initial display unit. This will need further changes...
2004-10-06 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.[ch]: store the time when the image is first
dirtied.
* app/display/gimpdisplayshell-close.c: tell the user what time
period of changes will be lost when the image is not saved.
2004-07-29 Michael Natterer <mitch@gimp.org>
Replaced the concept of having a boolean indicating if an undo
step dirties the image by a bitfield indicating which parts
of the image are dirtied:
* app/core/core-enums.[ch]: reordered two values in enum
GimpUndoType, added GIMP_DIRTY_IMAGE_SIZE to enum GimpDirtyMask.
The values of GimpDirtyMask are still questionable and will
probably change...
* app/core/gimpimage.[ch]: removed signal "undo_start" and added
a GimpDirtyMask parameter to the "dirty" and "clean" signals.
* app/core/gimpimage-undo.[ch] (gimp_image_undo_push): replaced
"gboolean dirties_image" by "GimpDirtyMask dirty_mask" and pass
it to gimp_image_dirty().
(gimp_image_undo_group_start): added *ugly* code which tries to
figure GimpDirtyMask from the group's GimpUndoType and store it in
the GimpUndoGroup. Call gimp_image_dirty() instead of the removed
gimp_image_undo_start(). This means the undo group now dirties the
image just like one of its undo steps, but that's no problem since
undoing cleans it in the same way.
* app/core/gimpundo.[ch]: s/dirties_image/dirty_mask/g
(gimp_undo_pop): emit clean/dirty signals *before* performing the
actual undo step so listeners can detach from the image before it
is changed by undo.
* app/core/gimpimage-undo-push.c (gimp_image_undo_push_*): pass a
GimpDirtyMask instead of TRUE/FALSE to gimp_image_undo_push().
* app/core/gimpimagemap.[ch]: removed "gboolean interactive"
because it makes no sense to use GimpImageMap noninteractively.
Don't freeze()/thaw() undo while the image_map is active which
fixes many ways of trashing the image's undo state but probably
introduces new ways of doing evil things.
* app/display/gimpdisplay-foreach.c
* app/display/gimpdisplayshell-handlers.c: changed according
to the GimpImage::clean()/dirty() signal changes. Small fixes
in the quit dialog's dirty image container.
* app/tools/gimptoolcontrol.[ch]: added member and API to
set/get the dirty_mask.
* app/tools/gimpcroptool.c
* app/tools/gimpimagemaptool.c
* app/tools/gimpiscissorstool.c
* app/tools/gimptexttool.c
* app/tools/gimptransformtool.c: whenever setting "preserve" to
FALSE, also set a "dirty_mask" which specifies on which image
changes the tool wants to be canceled.
* app/tools/tool_manager.c: removed "undo_start" connection and
connect to both "dirty" *and* "clean" to check if the active_tool
needs to be canceled. Cancel the tool only if the dirty_mask
passed in the signal has common bits with the tool's dirty_mask.
Fixes bug #109561 and probably opens some new ones...
2004-07-27 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c (gimp_image_finalize): remove the image
from the image hash table and set its "gimp" pointer to NULL
*after* all layers, channels, vectors and the selection are
finalized; otherwise these items have no chance of removing
themselves from the item hash table (because image->gimp is
already NULL). Spotted by pgimeno and nomis.
(should be backported after it got some testing)
2004-07-14 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c: added properties "gimp", "id", "width",
"height" and "base-type". Moved all code from gimp_image_new()
to GObject::constructor().
* app/core/gimpimage-convert.c
* app/core/gimpimage-crop.c
* app/core/gimpimage-resize.c
* app/core/gimpimage-rotate.c
* app/core/gimpimage-scale.c
* app/core/gimpimage-undo-push.c: set "width", "height" and
"base-type" with g_object_set() so "notify" is emitted on the
properties.
* app/core/gimpimage-undo.c (gimp_image_undo_pop_stack):
freeze/thaw property notifications around undoing/redoing so they
are not emitted in the middle of the undo operation.
2004-07-05 Michael Natterer <mitch@gimp.org>
* app/core/gimpchannel.[ch]: added signal "color-changed" and emit
it in gimp_channel_set_color() and gimp_channel_set_opacity().
* app/core/gimpimage-qmask.[ch]: added new functions
gimp_image_set,get_qmask_color().
* app/core/gimpimage.[ch]: install a "color-changed" handler on
gimage->channels and update gimage->qmask_color when the qmask's
color changes. Fixes bug #145361.
* app/actions/qmask-commands.c: use the new qmask color API.
2004-06-01 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/image.pdb
* app/pdb/image_cmds.c
* app/core/gimpimage.[ch]: reverted changes I did to the image
unit earlier. As in 2.0, it will continue to not accept pixels.
This makes the PDB API and the XCF format compatible again and
fixes bug #142961 (and to some extent bug #137704).
* app/core/Makefile.am
* app/core/gimpimage-unit.[ch]: removed these files. The
convenience accessors defined here aren't commonly used any
longer.
* app/display/gimpdisplay.[ch]
* app/display/gimpdisplayshell.[ch]: added a unit parameter to
gimp_display_new(). Made "unit" and "scale" properties of
GimpDisplayShell.
* app/actions/image-commands.c
* app/actions/images-commands.c
* app/actions/layers-commands.c
* app/actions/select-commands.c
* app/actions/view-commands.c
* app/core/gimp-edit.c
* app/core/gimp.[ch]
* app/core/gimptemplate.c
* app/display/gimpdisplayshell-handlers.c
* app/display/gimpdisplayshell-scale.c
* app/display/gimpdisplayshell-title.c
* app/display/gimpstatusbar.c
* app/file/file-open.c
* app/gui/gui-vtable.c
* app/gui/info-window.c
* app/gui/offset-dialog.c
* app/gui/resize-dialog.[ch]
* app/pdb/display_cmds.c
* app/tools/gimpcroptool.c
* app/tools/gimpmeasuretool.c
* app/tools/gimppainttool.c
* app/tools/gimprectselecttool.c
* app/tools/gimprotatetool.c
* app/tools/gimpscaletool.c
* app/vectors/gimpvectors-export.c
* app/widgets/gimptoolbox-dnd.c
* tools/pdbgen/pdb/display.pdb: changed accordingly. Use the
display unit where the image unit was used before.
2004-05-24 Michael Natterer <mitch@gimp.org>
Long overdue core container cleanup:
* app/core/gimplist.[ch]: added "unique-names" and "sort-func"
properties and merged the resp. code from GimpDataList into
GimpList. Removed "policy" parameters from gimp_list_new() and
added "unique_names". Added new constructor gimp_list_new_weak().
Made public function gimp_list_uniquefy_name() private.
* app/core/Makefile.am
* app/core/core-types.h
* app/core/gimpdatalist.[ch]: removed. Its functionality is
entirely in GimpList now.
* app/core/gimpdata.[ch]: added gimp_data_name_compare() which
used to live in GimpDataList.
* app/core/gimp.c
* app/core/gimpdatafactory.c
* app/core/gimpimage.c
* app/core/gimptoolinfo.c
* app/core/gimpundostack.c
* app/paint/gimp-paint.c
* app/tools/gimp-tools.c
* app/widgets/gimpdevices.c
* app/widgets/gimptemplateeditor.c
* app/widgets/gimpundoeditor.c: changed list creation accordingly.
Made gimp->templates, gimp->named_buffers, tool_info->presets and
the image's lists of layers, channels and vectors automatically
ensure unique names.
* app/widgets/gimptemplateview.c
* app/actions/file-commands.c
* app/actions/templates-commands.c
* app/actions/tool-options-commands.c: removed calls to
gimp_list_uniquefy_name().
* app/core/gimpitem.c: removed major insanity where the items
themselves where ensuring their unique names. Bah!
* app/core/gimplayer.c (gimp_layer_name_changed): chain up
conditionally.
* app/core/gimplayermask.c (gimp_layer_mask_name_changed): removed
because there is no need any more to keep the parent
implementation from being invoked.
2004-05-17 Sven Neumann <sven@gimp.org>
* app/core/gimpimage.c (gimp_image_init): initialize the image
unit to GIMP_UNIT_PIXEL.
* app/pdb/image_cmds.c
* tools/pdbgen/pdb/image.pdb: allow GIMP_UNIT_PIXEL to be used
in the gimp_image_set_unit() PDB call.
2004-05-04 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c (gimp_image_undo_freeze,thaw): emit the
"undo-freeze" and "undo-thaw" signals only on the first freeze and
last thaw, not on any of them.
* app/widgets/gimphelp-ids.h: added GIMP_HELP_EDIT_UNDO_CLEAR.
* app/widgets/gimpundoeditor.[ch]: added a "Clear Undo History"
button. Fixes bug #136300.
Also don't attach to the image's undo stack if the image's undo is
disabled and set the buttons' sensitivity accordingly. Should fix
all kinds of unpredictable undo history brokenness.
2004-04-19 Michael Natterer <mitch@gimp.org>
More GtkAction stuff (still unused):
* configure.in: added new directories menus/ and app/actions/
* Makefile.am: build menus/
* menus/.cvsignore
* menus/Makefile.am
* menus/*-menu.xml: new files: XML menu descriptions for each menu
which is now defined in gui/*-menu.c.
* app/widgets/widgets-types.h: some typedefs for GimpActionGroup.
* app/widgets/gimpactiongroup.[ch]: added a "Gimp" construct-only
property. Added APIs to set actions visible/sensitive/active
and an unimplemented stub for setting the action's color.
* app/Makefile.am: build actions/ and link libappactions.a
* app/actions/.cvsignore
* app/actions/Makefile.am
* app/actions/*-actions.[ch]: new files: GtkActions for each
*-commands.c file in gui/. Ported all "update" functions from the
*-menu.c files.
(everything completely unused, untested and partly #if 0'ed)
* app/core/gimpimage.[ch]: for reasons of (action-) symmetry, added
API to raise/lower channels/vectors to top/bottom.
* app/gui/channels-commands.[ch]
* app/gui/vectors-commands.[ch]: added callbacks for the new
to top/bottom functions.
* app/gui/Makefile.am
* app/gui/dockable-commands.[ch]: new files split out of
dialogs-commands.[ch].
* app/gui/dialogs-commands.[ch]
* app/gui/dialogs-menu.c: changed accordingly.
* app/gui/edit-commands.[ch]: added edit_paste_into_cmd_callback()
and remove usage of "guint action".
* app/gui/image-menu.c: changed accordingly.
* app/gui/palette-editor-commands.[ch]: split
+palette_editor_new_color_cmd_callback() into separate callbacks
for adding from FG and BG.
* app/gui/palette-editor-menu.c: changed accordingly.
2004-03-23 Michael Natterer <mitch@gimp.org>
The floating_sel code is really from the stone age:
* app/core/gimplayer-floating-sel.c (floating_sel_attach): call
gimp_image_floating_sel() once and work on the return value
instead of accessing gimage->floating_sel directly twice and
calling gimp_image_floating_sel() for the thrid access.
* app/core/gimpimage.c (gimp_image_floating_sel): no need to
return NULL if gimage->floating_sel is NULL, just always return
gimage->floating_sel.
2004-03-15 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.[ch]: added "gboolean alpha_changed" to
GimpImageFlushAccumulator. Install an "alpha_changed" handler
on gimage->layers and set flush_accum.alpha_changed = TRUE
whenever the image's *only* layer changed its alpha.
* app/core/gimpimage-undo-push.c (undo_pop_layer_mod)
* app/core/gimplayer.c (gimp_layer_add_alpha): removed
explicit calls to gimp_image_alpha_changed().
2004-03-15 Simon Budig <simon@gimp.org>
* app/core/gimpimage.[ch]
* app/core/gimpimage-undo.c: renamed gimage->freeze_count
to gimage->undo_freeze_count (more explicit).
* app/file/file-open.c: Ensure that the undo system is enabled
after loading an image (to protect against broken loaders).
2004-03-14 Simon Budig <simon@gimp.org>
* app/core/gimpimage.[ch]
* app/core/gimpimage-undo.c: introduced a freeze counter, so
that undo_freeze(); undo_freeze(); undo_thaw(); no longer
results in an thawed undo stack.
Fixes Bug #124176.
This might reveal other places in the code where
gimp_image_undo_freeze/thaw or gimp_image_undo_disable/enable
were used in an inconsistent (not-paired) manner.
* app/file/file-open.c: e.g. here, where _enable was called on
the new image. The intention was to free a potential undo stack,
so now call gimp_image_undo_free() instead.
2004-02-19 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-qmask.c (gimp_image_get_qmask): new function
which returns the image's QMask.
* app/core/gimpimage.c (gimp_image_channel_name_changed)
* app/gui/qmask-commands.c (qmask_query_response): use it.
2004-02-17 Sven Neumann <sven@gimp.org>
* libgimpbase/gimpprotocol.[ch]: changed wm_name to app_name in
the GimpConfig struct; increased GIMP_PROTOCOL_VERSION.
* app/plug-in/plug-in-run.c (plug_in_run): pass the return value
of g_get_application_name() to the plug-ins.
* libgimp/gimp.[ch]: removed function gimp_wm_name(). Set the
plug-in's application name if an app_name is passed in the config
message.
* libgimp/gimpui.c: removed usage of gimp_wm_name(); it was wrong
to do it this way and caused all plug-ins claim to be the gimp-1.3
executable in their error messages.
* libgimp/gimp.def: removed symbol gimp_wm_name.
* configure.in: reset gimp_binary_age and gimp_interface_age.
* app/core/gimpimage.c (gimp_image_name_changed): removed unused
variable.
2004-02-17 Michael Natterer <mitch@gimp.org>
Make sure each GimpItem emits "removed" when it is removed from
the image so dialogs have a chance to close themselves:
* app/core/gimplayer.c (gimp_layer_apply_mask): emit "removed"
from the mask.
(gimp_layer_removed): new function which emits "removed" from
the layer's mask when the layer gets removed from the image.
* app/core/gimpimage.c (gimp_image_dispose): emit "removed"
from all layers, channels and vectors.
* app/gui/layers-commands.c (layers_scale_layer_query)
(layers_resize_layer_query): removed recently added connections to
"removed" because GimpViewableDialog does this automatically.
2004-02-14 Michael Natterer <mitch@gimp.org>
Fixed lots of QuickMask brokenness by letting the image adjust
its qmask_state automatically:
* app/core/gimpimage-qmask.h: #define GIMP_IMAGE_QMASK_NAME "Qmask".
Use the define in all files below.
* app/core/gimpimage.[ch]: split gimp_image_drawable_add,_remove()
into separate handlers for layers and channels. Added a
"name_changed" handler for all channels. In the channel "add",
"remove" and "name_changed" handlers, check if it was a channel
named "Qmask" that was added, removed or renamed and call
gimp_image_set_qmask_state() accordingly.
* app/core/core-enums.[ch]
* app/core/gimpimage-undo-push.[ch]
* app/core/gimpundo.c: removed all Qmask undo code because the image
does the right thing without undo interaction now.
* app/core/gimpimage-qmask.c (gimp_image_set_qmask_state): set
gimage->qmask_state early so we can return early when called
recursively. Removed calls to gimp_image_undo_push_image_qmask().
Returned "removed" callback (it was utterly broken the way it was
implemented).
* app/display/gimpdisplayshell-callbacks.c
(gimp_display_shell_qmask_toggled): check if the image's
qmask state needs to be changed before changing it.
* app/xcf/xcf-load.c (xcf_load_channel): removed code which
recognized the qmask. GimpImage does this automatically now.
* app/gui/qmask-commands.c: cleanup.
* app/widgets/gimpimagedock.c (gimp_image_dock_constructor):
destroy the "/Select/By Color" and "/Select/Toggle QuickMask" menu
items.
* app/widgets/image-menu.c (image_menu_update): changed accordingly.
2004-01-26 Michael Natterer <mitch@gimp.org>
* plug-ins/script-fu/scripts/unsharp-mask.scm: add the layer to
the image before pasting to it. Fixes bug #132504.
Fixed the underlying problem: make it impossible to attach
floating selections to drawables which are not currently part of
the image's layer or channel stacks.
Also cleaned up image <-> floating_sel interaction:
* app/core/gimplayer-floating-sel.[ch] (floating_sel_attach):
added assertion that the drawable is part of the image (see below).
Don't call gimp_image_floating_selection_changed(), it's emitted
by gimp_image_add_layer() now.
(floating_sel_remove)
(floating_sel_anchor): don't emit "floating_selection_changed",
it's emitted by gimp_image_remove_layer() now.
(floating_sel_anchor): removed the fix for bug #132162 because
gimp_image_remove_layer() behaves correctly now (see below).
Renamed floating_sel_reset() to floating_sel_activate_drawable().
Added g_return_if_fail() all over the place.
* app/core/gimpimage.[ch]: added new function gimp_image_owns_item()
which return TRUE if the passed item is part of the image.
(gimp_image_add_layer): emit "floating_selection_changed" here if
needed.
(gimp_image_remove_layer): emit "floating_selection_changed" if
needed, don't try to activate a layer if we called
floating_sel_activate_drawable().
This is the real fix for bug #132162.
* app/core/gimpimage-undo-push.c (undo_pop_layer): apply the same
fixes as to gimp_image_add,remove_layer(). Don't call
gimp_drawable_invalidate_preview() on the previously active layer
because that's done by gimp_image_set_active_layer() now.
* app/xcf/xcf-load.c: remember the "floating_sel_drawable" in the
XcfInfo struct and attach it *after* all layers and channels are
loaded to avoid attaching the floating selection to an
out-of-image drawable.
* app/core/gimp-edit.c (gimp_edit_paste)
* app/core/gimpdrawable-transform.c (gimp_drawable_transform_affine,
gimp_drawable_transform_flip, gimp_drawable_transform_rotate)
* app/core/gimpselection.c (gimp_selection_float)
* app/text/gimptext-compat.c (text_render): added checks for
gimp_image_owns_item() in all functions which can produce
floating selections.
* tools/pdbgen/pdb/edit.pdb
* tools/pdbgen/pdb/floating_sel.pdb
* tools/pdbgen/pdb/selection.pdb
* tools/pdbgen/pdb/text_tool.pdb
* tools/pdbgen/pdb/transform_tools.pdb: added checks for
gimp_item_owns_image() and return an execution error if invoked
with a drawable which is not part of the image.
* app/pdb/edit_cmds.c
* app/pdb/floating_sel_cmds.c
* app/pdb/selection_cmds.c
* app/pdb/text_tool_cmds.c
* app/pdb/transform_tools_cmds.c: regenerated.
2004-01-18 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c (gimp_image_add_layer,remove_layer): in the
spirit of the fix for bug #131721 below, don't try to figure
manually if "alpha_changed" needs to be emitted but simply compare
the old and new values of gimp_image_has_alpha().
* app/gui/preferences-dialog.c (prefs_dialog_new): follow
"foo-window-type" -> "foo-window-hint" change.
2004-01-18 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.[ch] (gimp_image_get_color): also return the
color's alpha byte if it has alpha, not only the converted RGB
values. Return OPAQUE_OPACITY for drawables without alpha.
Fixes bug #131706.
* app/core/gimpdrawable.c (gimp_drawable_get_color_at)
* app/core/gimpimage-contiguous-region.c
(gimp_image_contiguous_region_by_color)
* app/core/gimpimage-projection.c (gimp_image_projection_get_color_at)
* app/core/gimpimagemap.c (gimp_image_map_get_color_at)
* app/paint/gimpclone.c (gimp_clone_line_image): removed separate
handling of the alpha byte from all users of gimp_image_get_color().
2004-01-18 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c (gimp_image_set_active_layer): don't allow
to select anything but the floating selection. Fixes bug #128025.
(gimp_image_set_active_layer,channel,vectors): allow to pass NULL
to unselect the active item. Removed the silly feature that
passing some random item of another image would select the first
item in the list (was unused anyway).
(gimp_image_unset_active_channel): use gimp_image_set_active_channel()
now that it accepts NULL.
(gimp_image_add_layer,channel,vectors): cleaned up / simplified.
(gimp_image_remove_layer,channel,vectors): cleanup,
simplification, use gimp_image_set_active_layer,channel,vectors()
now that they accept NULL, make sure the item next to the removed
item becomes the active one (and not the first in the list, which
was a severe usability problem in the dialogs).
* app/core/gimpimage-undo-push.c (undo_pop_layer,channel): pass
NULL to the set_active functions, cleanup.
* app/core/gimpimage-duplicate.c: attach the floating selection
before setting the active layer. Code relied on broken
gimp_image_set_active_layer() behaviour before.
* app/core/gimplayer-floating-sel.c: no need to set
gimage->floating_sel before calling gimp_image_add_layer(). The
weird GUI mentioned in the comment existed in 1.2 only.
* app/display/gimpdisplayshell-layer-select.c (layer_select_advance):
don't assume that setting the active_layer always succeeds.
* tools/pdbgen/pdb/image.pdb: behave as the documentation says
and return an execution error if setting the active layer or
channel failed.
Unrelated:
* tools/pdbgen/pdb/image.pdb
* tools/pdbgen/pdb/layer.pdb: removed leftover cruft from the old
guchar based color API.
* tools/pdbgen/pdb/channel.pdb: simplified code which handles the
channel's color.
* app/pdb/channel_cmds.c
* app/pdb/image_cmds.c: regenerated.
2004-01-15 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage.c: moved initialization of the
gimage->visible[] and gimage->active[] arrays from
gimp_image_new() to gimp_image_init(). Use gimp_rgba_set()
to initialize gimage->qmask_color.
2004-01-14 Dave Neary <bolsh@gimp.org>
* app/core/gimpimage.c: get the type of the drawable, not the
image, when transforming a TempBuf, making dragging & dropping
patterns on layer masks work correctly. Fixes bug #131146.
2004-01-14 Michael Natterer <mitch@gimp.org>
Some code review:
* app/core/gimpimage.c: named the gint paramater in all
colormap_changed related functions to "color_index", fixed typo in
parasite undo description, moved some variables to local scopes,
changed the layer raise/lower functions to look like the channel
and vector ones, cosmetics.
* app/core/gimpimage-colorhash.c: removed trailing whitespace,
initialize / reset more stuff to 0, cosmetics.
2003-12-09 Michael Natterer <mitch@gimp.org>
Fixed memory management of layers and channels which were created
using the PDB:
* app/core/gimpitem.[ch]: added "gboolean floating" flag to
GimpItem. Items are created with floating == TRUE. Added
gimp_item_sink() which resets the floating flag and unrefs the
item if it was TRUE. Added gimp_item_is_floating() accessor.
* app/core/gimpimage.c (gimp_image_add_layer,channel,vectors):
g_object_ref()/gimp_item_sink() added items to take ownership of
them.
* app/core/gimplayer.c (gimp_layer_add_mask):
g_object_ref()/gimp_item_sink() the mask.
* app/gui/layers-commands.c
* app/xcf/xcf-load.c: don't unref layer masks after adding them to
the layer.
* tools/pdbgen/pdb/drawable.pdb (drawable_delete):
gimp_item_sink() the drawable if it's floating and fail if it's
not. Fixes bug #128881.
* tools/pdbgen/pdb/layer.pdb (layer_create_mask): fixed docs.
* app/pdb/drawable_cmds.c
* app/pdb/layer_cmds.c
* libgimp/gimplayer_pdb.c: regenerated.
2003-12-04 Michael Natterer <mitch@gimp.org>
* app/core/gimpimage-projection.c (gimp_image_projection_allocate):
optimized to reallocate the projection TileManager only if it does
not match the required width, height and depth.
* app/core/gimpimage.c (gimp_image_size_changed): call
gimp_image_projection_allocate().
* app/core/gimpimage-crop.c
* app/core/gimpimage-resize.c
* app/core/gimpimage-rotate.c
* app/core/gimpimage-scale.c
* app/core/gimpimage-undo-push.c: removed calls to
gimp_image_projection_allocate(), since "size_changed" does it
automatically now.