2005-07-25 Michael Natterer <mitch@gimp.org>
Some DND fixes / cleanup:
* app/widgets/widgets-enums.h: renamed GIMP_DND_TYPE_TOOL to
GIMP_DND_TYPE_TOOL_INFO.
* app/widgets/gimpselectiondata.[ch]: s/tool/tool_info/g. Moved
private functions to the end of the file. Include GIMP's PID in
all GtkSelectionData strings which are used to pass around stuff
by reference. For things which are referenced by name, also encode
the object's address in the GtkSelectionData so having a brush
called "Standard" or a named buffer called "Global Buffer" will
work together with DND.
* app/widgets/gimpdnd.[ch]: s/tool/tool_info/g. Renamed
gimp_dnd_get_data_data() to gimp_dnd_get_object_data() since it's
not limited to GimpData objects. Follow above selection data API
changes. Cleanup.
* libgimp/gimpbrushmenu.c
* libgimp/gimpdrawablecombobox.c
* libgimp/gimpfontselectbutton.c
* libgimp/gimpgradientmenu.c
* libgimp/gimpimagecombobox.c
* libgimp/gimppalettemenu.c
* libgimp/gimppatternmenu.c: follow GtkSelectionData format change
and check the dropped things' PID against the return value of
gimp_getpid().
2005-06-04 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_get_viewable_icon): use the
viewable's description in the drag icon. Use a larger preview.
* app/widgets/gimpdockbook.c: tweak spacing and border-width of
the tab widget if it is being used as drag icon.
2005-06-04 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_get_viewable_icon): reduced the
number of characters to show before ellipsizing the label.
* libgimpwidgets/gimpcolorarea.c: added a "draw-border" property.
* app/widgets/gimpcolorframe.c: draw a border around the color area.
2005-05-29 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_get_color_icon): pass
GIMP_COLOR_AREA_CHECKS_SMALL instead of TRUE for the type of the
GimpColorArea.
* app/widgets/gimpcoloreditor.c: added a "context" property.
* libgimpwidgets/gimpcolorarea.c (gimp_color_area_set_color):
always use gimp_rgba_distance(), regardless of the area's type.
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-04-09 Michael Natterer <mitch@gimp.org>
Implement dragging and dropping in any GdkPixbuf supported
format. Fixes bug #172794 and bug #172795.
* app/core/gimplayer.[ch] (gimp_layer_new_from_region): new
function which contains all stuff that was in
gimp_layer_new_from_tiles().
(gimp_layer_new_from_tiles): use above function.
(gimp_layer_new_from_pixbuf): new function.
* app/widgets/Makefile.am
* app/widgets/gimppixbuf.[ch]: new files containing GdkPixbuf
utility functions for clipboard and DnD.
* app/widgets/gimpselectiondata.[ch]: removed
gimp_selection_data_set,get_pixbuf(), GTK+ provides the same API.
Also removed GdkAtom parameters all over the place because it's
always the same as selection_data->target.
* app/widgets/gimpclipboard.c: use the new pixbuf utility
functions and gtk_selection_data_set,get_pixbuf().
* app/widgets/widgets-enums.h
* app/widgets/gimpdnd.[ch]: removed never-implemented
GIMP_DND_TYPE_PNG and added a generic GIMP_DND_TYPE_PIXBUF
instead. Added API to drag and drop GdkPixbufs which transparently
converts from/to and GdkPixbuf-supported image format. Removed
passing around of GdkAtoms, since they were always the same
as selection_data->target.
* app/widgets/gimpdnd-xds.[ch]: follow GdkAtom parameter removal.
* app/widgets/gimpcontainertreeview.[ch]: added virtual function
GimpContainerTreeView::drop_pixbuf().
* app/widgets/gimpcontainertreeview-dnd.c: dispatch drop_pixbuf().
* app/widgets/gimplayertreeview.c: implement drop_pixbuf().
* app/widgets/gimpdrawabletreeview.c: allow to drag all drawables
as pixbufs.
* app/display/gimpdisplayshell-dnd.c: allow dropping of pixbufs.
2005-03-26 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdnd.c: don't add the same target multiple times.
This used to happen when gimp_dnd_foo_source_add() is called
after calling gimp_dnd_drag_source_set_by_type().
2005-03-25 Sven Neumann <sven@gimp.org>
* app/widgets/gimpview.[ch]: virtualized GimpView::set_viewable.
* app/widgets/gimptoolbox-image-area.c: hook into "set_viewable"
and add an XDS drag source.
* app/widgets/gimpdnd-xds.c
* app/widgets/gimpdnd.c: unset the XdndDirectSave0 property when
the drag ends, minor cleanups.
2005-03-25 Sven Neumann <sven@gimp.org>
* app/widgets/Makefile.am
* app/widgets/gimpdnd-xds.[ch]: new files.
* app/widgets/gimpdnd.[ch]
* app/widgets/widgets-enums.h: added a basic XDS (Direct Save
Protocol) implementation.
* app/widgets/gimpimageview.c: allow to save images by dragging
them from the Images dialog to an XDS capable file manager.
2005-01-15 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.c: added gimp_dnd_get_component_icon().
* app/widgets/gimpcomponenteditor.c: allow to drag
components. They can't be dropped anywhere yet.
2005-01-15 Michael Natterer <mitch@gimp.org>
* app/widgets/widgets-enums.h (enum GimpDndType): reordered so
COMPONENT is after IMAGE.
* app/widgets/gimpdnd.[ch]
* app/widgets/gimpselectiondata.[ch]: added API for passing
components around via DND. Speaks in terms of a
(GimpImage,GimpChannelType) tuple.
2004-12-31 Michael Natterer <mitch@gimp.org>
Applied modified patch from Ben Campbell which adds drop
coordinates to the color drop callback and uses it to insert
colors in the palette editor. Extended the patch to add drop
coordinates to all drop callbacks.
* app/core/gimppalette.[ch]: added gimp_palette_insert_entry().
* app/display/gimpdisplayshell-dnd.[ch]: added drop coordinates
to all drop callbacks.
* app/dialogs/palette-import-dialog.c
* app/widgets/gimpcolormapeditor.c
* app/widgets/gimpcontainerview.c
* app/widgets/gimpdnd.[ch]
* app/widgets/gimpdrawabletreeview.c
* app/widgets/gimpfgbgeditor.c
* app/widgets/gimpgradienteditor.c
* app/widgets/gimpitemtreeview.c
* app/widgets/gimppaletteeditor.c
* app/widgets/gimppropwidgets.c
* app/widgets/gimpselectioneditor.c
* app/widgets/gimptoolbox-dnd.c
* app/widgets/gimptoolbox-image-area.c
* app/widgets/gimptoolbox-indicator-area.c
* app/widgets/gimptooloptionseditor.c
* libgimpwidgets/gimpcolorselect.c: changed accordingly. The passed
drop coordiantes are so far unused.
* app/widgets/gimppaletteeditor.c: use the drop coordinates to
insert the new color into the palette at the right place instead
of always appending. Fixes bug #150030.
2004-10-06 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_data_drag_begin): remember for
which GdkDragContext the icon_widget was made.
(gimp_dnd_data_drag_end): destroy the icon_widget only if it was
created for this GdkDragContext. Fixes broken DND icon_widgets
when dragging the same source again while the old icon_widget is
still floating back from an unsuccessful drop. Fixes bug #139337.
2004-09-16 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_uri_list_dest_add): reverse
order of DND dests so "text/uri-list" is preferred again after my
DND change of 2004-06-29. Fixes dropping of multiple files.
2004-06-30 Sven Neumann <sven@gimp.org>
* app/widgets/gimpselectiondata.[ch]: renamed the SVG related
functions so that they deal with an anonymous data stream that
could as well be a PNG image.
* app/widgets/gimpdnd.[ch]
* app/widgets/gimpcontainertreeview-dnd.c: changed accordingly.
* app/display/gimpdisplayshell-dnd.[ch]
* app/vectors/gimpvectors-import.[ch]
* app/widgets/gimpcontainertreeview-dnd.c
* app/widgets/gimpvectorstreeview.c: use gsize for the length of
the buffer.
* app/widgets/gimpdnd.[ch]
* app/widgets/widgets-enums.[ch]: added GIMP_DND_TYPE_PNG which isn't
used yet.
2004-06-30 Michael Natterer <mitch@gimp.org>
* widgets/gimpselectiondata.[ch] (gimp_selection_data_get_svg):
changed return value from gchar* to const gchar*. Renamed
parameters to be consistent with other SVG functions.
* widgets/gimpcontainertreeview-dnd.c
* widgets/gimpdnd.c: changed accordingly.
2004-06-29 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.c: use gtk_target_list_add() instead of
gtk_target_list_add_table() because the latter prepends the
targets to the internal list which screws the order (== priority)
of DND targets.
* app/widgets/gimpselectiondata.c: added some more checks for
failed drops (selection_data->length < 0).
2004-06-28 Michael Natterer <mitch@gimp.org>
* app/widgets/Makefile.am
* app/widgets/gimpselectiondata.[ch]: new files containing the
code which encodes/decodes all sorts of stuff to/from its
GtkSelectionData representation. Used to live in gimpdnd.c
* app/widgets/gimpdnd.c: use the new functions (unclutters the
file quite a bit), converted tabs to spaces.
2004-06-02 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.h: removed enum GimpDndType...
* app/widgets/widgets-enums.h: ...and added it here.
* app/widgets/gimpdnd.c: added more g_return_if_fail(). Allow
all gimp_dnd_foo_dest_add() functions to be called without
callback (just add the target if callback is NULL).
(gimp_dnd_open_files): removed the checks for validity of the
passed filenames/uris...
(gimp_dnd_set_file_data): ...and added it here so all callbacks
get an already sanitized list of strings.
2004-05-28 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_open_files): if the dropped
stuff is a local filename (no file URI), convert it to an
URI instead of forwarding it unmodified.
2004-04-15 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_data_source_add)
(gimp_dnd_data_source_remove): use the new dynamic GtkTargetList
based API for changing the widget's drag source types.
* app/widgets/gimpdocumentview.c (gimp_document_view_new): simply
call gimp_dnd_file_source_add() instead of duplicating the whole
GtkTargetEntry array insanity just for adding one source type.
2003-12-21 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.c: return a boolean indicating success from
all drop handlers.
(gimp_dnd_data_drop_handle): finish the drop correctly by calling
gtk_drag_finish() with the above success value.
2003-12-20 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.[ch]: changed unused SVG dnd API to speak in
terms of "guchar *data", "gint data_len" instead of GimpVectors.
2003-11-22 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_get_file_data): when constructing
an URI list, don't add a newline character after the last item.
2003-11-20 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.[ch]: changed drag source stuff to allow
multiple data types. Changed DND source API to speak in terms of
add()/remove() instead of set()/unset(). Added GimpDndDragFileFunc
typedef and gimp_dnd_file_source_add().
Unfortunately GTK+'s DND API lacks symmetry here (no GtkTargetList
based API for drag sources), so we cannot really change drag
sources on-the-fly and need to set GtkTargetEntry arrays manually.
* app/widgets/gimpcolormapeditor.c
* app/widgets/gimpcontainertreeview.c
* app/widgets/gimpmenuitem.c
* app/widgets/gimppaletteeditor.c
* app/widgets/gimppreview.c
* app/widgets/gimptoolbox-color-area.c: changed accordingly.
* app/widgets/gimpdocumentview.c: ditto. Additionally offer
"text/uri-list" so it's possible to drag images from the document
history to the file manager or browser.
2003-11-19 Manish Singh <yosh@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_open_files): Display an error if we
still can't convert a filename to a valid uri. Further addresses
#127424.
2003-11-19 Manish Singh <yosh@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_open_files): strstr on dnd_crap,
not filename, since filename will be NULL in that case. Also remove
doubled declaration of filename.
2003-11-04 Michael Natterer <mitch@gimp.org>
* app/widgets/gimpdnd.[ch]: added static "the_dnd_gimp" variable
and don't use the global "the_gimp" any more.
Added gimp_dnd_init() to let the DND system know about the GUI's
Gimp instance.
* app/gui/gui.c (gui_init): call gimp_dnd_init().
* app/app_procs.h: changed the #warning about including
"app_procs.h" to an #error, like the other headers in app/ do.
2003-10-17 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_file_dest_add): according to an
older mail from Owen, GDK_ACTION_DEFAULT means nothing and should
not be used.
* app/widgets/gimpcontainertreeview-dnd.c
(gimp_container_tree_view_drop_status): pass 0 to gdk_drag_status()
instead of GDK_ACTION_DEFAULT.
2003-10-17 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_file_dest_add): for file drag
destinations, set GDK_ACTION_DEFAULT and GDK_ACTION_MOVE in
addition to GDK_ACTION_COPY. Enables DND from Konqueror.
2003-10-17 Sven Neumann <sven@gimp.org>
* app/widgets/gimptooloptionseditor.c: gimp_dnd_viewable_dest_add()
calls gtk_drag_dest_set() for us so we don't need to do it here.
2003-10-17 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdnd.c: some minor code cleanup.
* libgimpcolor/gimpcolorspace.c: removed trailing whitespace.
2003-10-06 Sven Neumann <sven@gimp.org>
* app/widgets/gimpdnd.c (gimp_dnd_data_drop_handle): check for
NULL pointers in the GimpDndDataDef array before using them.
Might happen with the changed dockable DND code :(
2003-04-05 Michael Natterer <mitch@gimp.org>
* app/config/gimpconfig-utils.c (gimp_config_reset_properties):
reset object properties only if they are GIMP_PARAM_SERIALIZABLE.
* app/core/gimpcontext.[ch]: added a GimpTemplate property.
* app/gui/dialogs-constructors.[ch]
* app/gui/dialogs.c: added a template dialog.
* app/gui/dialogs-menu.c
* app/gui/image-menu.c
* app/gui/toolbox-menu.c: and menu entries to open it.
* app/widgets/gimpdnd.[ch]: added DND for GimpTemplates.
2003-03-25 Sven Neumann <sven@gimp.org>
* Makefile.am
* gimpintl.h: removed this header file.
* gimpmiscui.c: include libgimp-intl.h.
* gimp.c (gimp_main): call setlocale() and bind to the libgimp
textdomain so that plug-ins don't need to do that explicitely.
* libgimp/stdplugins-intl.h: added the functionality that used to
live in gimpintl.h and removed the libgimp related stuff. Got rid
of the INIT_I18N_UI() macro.
* plug-ins/*/*.c: removed all occurances of INIT_I18N_UI().
Plug-ins simply call INIT_I18N() once in their run() function.
* plug-ins/script-fu/script-fu-intl.h: added the functionality
that used to live in gimpintl.h and removed the libgimp related
stuff.
* app/Makefile.am
* app/gimp-intl.h: new file that defines the gettext macros for
the GIMP core.
* app/*/*.c: include gimp-intl.h instead of libgimp/gimpintl.h.
* plug-ins/script-fu/scripts/test-sphere.scm: fixed typos.
2003-03-05 Michael Natterer <mitch@gimp.org>
* app/file/file-save.[ch]: added GError reporting, removed
g_message() stuff.
* app/gui/file-commands.c
* app/gui/file-save-dialog.c: g_message() here if file_save_*()
returns an error.
* app/file/file-open.c: use the G_FILE_ERROR quark and the
GFileError enum for reporting errors. Removed g_message() if the
passed in GError** pointer is NULL (passing NULL as error return
location should never mean "show the error message yourself").
* app/app_procs.c
* app/gui/file-commands.c
* app/gui/file-open-dialog.c
* app/widgets/gimpdnd.c
* app/widgets/gimpdocumentview.c: g_message() here if file_open_*()
returns an error.
2003-02-20 Michael Natterer <mitch@gimp.org>
Reimplemented the undo history:
* app/Makefile.am
* app/undo_history.[ch]: removed.
Changes/cleanups to the undo system to enable/simplify the new
undo history implementation:
* app/core/core-types.h: removed enum undo_event_t. Removed the
GimpImage parameter from GimpUndoPopFunc and GimpUndoFreeFunc
because GimpUndo has a GimpImage pointer now (see below).
* app/core/core-enums.[ch]: added enum GimpUndoEvent. Added an
enum value for REDO_EXPIRED.
* app/core/gimpimage.[ch]: added a GimpUndo pointer to the
"undo_event" signal which needs to be passed for all events except
UNDO_FREE.
* app/display/gimpdisplayshell-handlers.c: changed accordingly.
* app/core/gimpundo.[ch]: added a GimpImage pointer to the
GimpUndo struct. Removed GimpImage parameters all over the
place. Added preview stuff. The preview creation needs to be
triggered explicitly using gimp_undo_create_preview() because the
GimpUndo can't know when it's possible to create the preview.
* app/core/gimpimage-undo-push.c
* app/paint/gimppaintcore-undo.c
* app/tools/gimptransformtool-undo.c: changed accordingly, cleanup.
* app/core/gimpundostack.[ch]: ditto. Return the freed undo from
gimp_undo_stack_free_bottom(). Removed unused container signal
handlers.
* app/core/gimpimage-undo.c: free the redo stack the same way old
undos are freed (from bottom up). Emit "undo_event" with event ==
REDO_EXPIRED for each removed redo.
* app/core/gimpmarshal.list: added new marshallers.
New undo history implementation:
* app/widgets/Makefile.am
* app/widgets/widgets-types.h
* app/widgets/gimpundoeditor.[ch]
* app/widgets/gimpundopreview.[ch]: new widgets for the undo
step previews and the history itself.
* app/widgets/gimppreview-utils.c: added GimpUndoPreview to the
list of possible preview types.
* app/gui/dialogs-constructors.[ch]
* app/gui/dialogs-menu.c
* app/gui/dialogs.c
* app/gui/image-menu.c
* app/gui/toolbox-menu.c: removed the old and added the new undo
history to the dialog factory and the various dialog menus.
* app/widgets/gimpdnd.[ch]: don't warn if a GType has no
corresponding DND type. Instead, return FALSE from the function
that failed.
* app/widgets/gimppreview.c: check the return value of gimpdnd
functions. Not only add drag sources but also remove them when no
longer needed.
* app/widgets/gimpselectioneditor.h: removed unneeded inclusion of
"gui/gui-types.h".
2003-02-18 Sven Neumann <sven@gimp.org>
* tools/pdbgen/pdb/procedural_db.pdb
* app/pdb/procedural_db_cmds.c: use regfree() to free the regex
pattern buffer.
* app/widgets/gimpdnd.c (gimp_dnd_data_dest_add): unref the
GtkTargetList after adding it to the widget.
* app/core/gimpimage.c (gimp_image_get_new_preview): initialize
all fields of the mask pixel_region.
* app/core/gimpviewable.c (gimp_viewable_get_new_preview_pixbuf):
pass a destroy notifier to gdk_pixbuf_new_from_data() so that the
pixel data is freed with the pixbuf.
* libgimptool/gimptool.c (gimp_tool_class_init): register a
finalizer that unrefs the GimpToolControl object.
* app/widgets/gimpenummenu.c (gimp_enum_stock_box_new_with_range):
free the generated stock_id.
2003-01-05 Manish Singh <yosh@gimp.org>
* many files in app, modules and libgimp*: cleanup, removed unecessary
G_OBJECT() casts. Should do the same for plug-ins, when more of them
get undeprecated.