Commit graph

56 commits

Author SHA1 Message Date
Bruno Lopes
7ce3ed457e app, libgimp*, modules: More type <> casting fixes 2026-03-31 16:27:25 -03:00
Michael Natterer
6eae69d2a4 app, pdb: rename gimp_container_get_children_type() to get_child_type() 2025-07-18 08:19:13 +02:00
Michael Natterer
bee7b8713b app, pdb: a lot of vectors -> path renaming 2025-07-07 13:18:02 +02:00
Jehan
2bf25d8487 app: fix not-finding correct container when dnd across images. 2025-02-28 12:05:06 +01:00
cheesequake
5c646830a5 Fixes #11338: Layers do not teleport to the bottom of the list if dragged onto the headers 2024-04-24 00:23:40 +05:30
Jehan
bab9ed18c4 app: color drag'n drop is now space-invaded.
We can now drop any color model and encoding with any space. The exact
color information is passed with.
2024-02-11 23:28:04 +01:00
Jehan
28457ce337 app: display the floating mask over the layer mask.
It would make using floating masks a lot easier as it is visually understandable
that it applies to the layer mask.
2022-11-09 02:15:41 +01:00
Jehan
d774a8ff9d app: add multi-vectors drag'n drop ability. 2021-12-23 12:55:11 +01:00
Jehan
45e18f696c app: add multi-channel drag'n drop ability. 2021-12-23 12:55:11 +01:00
Jehan
de6a57d5c2 app: fix coordinate conversion.
I was doing it the wrong way, and it became impossible to drop layers
into a layer folder (unless it already had some layers in it).
2021-12-23 12:47:28 +01:00
Jehan
9b7c868f4d app: more coordinate conversion in GimpContainerTreeView. 2021-12-23 12:47:28 +01:00
Jehan
78d9f9799f app: fix dragging color boxes into item dockables.
Commit 83b3d9e5 broke dragging color widgets into channels dockables or
other item dockables.
Thanks to Massimo for raising that these lines were needed for this.
2021-09-26 17:06:57 +02:00
Jehan
a10bb056ed app: fix 2 possible leaks.
In some cases, the `src_viewables` and `drop_path` variables may leak.
Thanks to Massimo for the report on `src_viewables`!
2021-08-14 19:57:00 +02:00
Jehan
83b3d9e52e app: make drag'n drop multi-drawable selection aware.
This whole drag'n drop code is quite overwhelming, I'm pretty sure this
commit introduced various bugs, and there are already several areas of
improvements I noticed. But at some point, I need to split at a not-too
broken code state or I'll just make things worse.
2020-05-17 18:32:15 +02:00
Ell
20747e365c app: add hierarchical dnd support to GimpContainerTreeView
In the default implementation of
GimpContainerTreeView::drop_viewable(), handle the case where the
source and/or destination viewables are not direct descendants of
the tree-view's container, but rather of one of its subcontainers.
2020-01-30 02:51:56 +02:00
Michael Natterer
5f700549e7 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
Michael Natterer
23e3ae8fbe app: use the new GtkScrollable API instead of deprecated tree view API 2018-05-20 21:06:27 +02:00
Jehan
3e082b356c Bug 681709 - GimpContainer continuously scrolls on dnd failure on Windows.
The scroll timeout is looping forever if the drag ends by a failure
event. For instance when hitting the Esc button during scrolling.
2013-10-02 21:18:10 +13:00
Michael Natterer
3ef2baea67 Bug 676940 - Group children prevent droping layer at bottom of stack
...and don't forget to return the drop_path from
gimp_container_tree_view_drop_status().
2012-11-12 01:29:22 +01:00
Michael Natterer
05e12b88bc Bug 676940 - Group children prevent droping layer at bottom of stack
Treat dropping on the empty space at the bottom like dropping after
the last toplevel item.
2012-11-12 01:24:58 +01:00
Michael Natterer
85bd6b0dd9 app: pass a format, not bpp, to gimp_viewable_get_dummy_pixbuf()
and add tons of <gegl.h> includes.
2012-05-02 17:51:08 +02:00
Massimo Valentini
c34348a2cd app: silence a harmless Gimp-Core-CRITICAL
Dragging a channel preview (not RGBA) over a layer preview
GIMP used to print:

Gimp-Core-CRITICAL **: gimp_container_get_child_index: ...
           assertion `GIMP_IS_CONTAINER (container)' failed
2011-11-18 18:36:20 +01:00
Michael Natterer
fcfb7cf160 Use the new g_[s]list_free_full() instead of foreach() and free() 2011-03-07 17:11:28 +01:00
Michael Natterer
e3b5c55ca2 Bug 597117 - impossible to drop a group as a sibling inside a group
Properly distinguish between dropping after a group and into it, by
having three drop areas on a collapsed row. Still handle expanded rows
as before, but indicate dropping into visually just as on a collapsed
row.
2011-02-08 09:35:38 +01:00
Michael Natterer
e1a88379d0 app: remove the model column enum from gimpcontainertreeview.h
and use the right enum from gimpcontainertreestore.h all over the
place instead.
2010-05-17 21:28:17 +02:00
Michael Natterer
bb852184e1 app: pass the drop_path to GimpContainerTreeView::drop_possible()
Together with some more refactoring, this will soon enable smarter
layer group dnd behavior.
2009-12-28 21:10:04 +01:00
Michael Natterer
1a23b9ecf2 Build with GSEAL_ENABLE and #undef it where accessors are missing 2009-10-17 20:20:39 +02:00
Michael Natterer
4e9f198831 Fix dropping an item into an empty group item immediately above it 2009-08-07 09:46:16 +02:00
Michael Natterer
b2c7c4f61b Add infrastructure for dragging things between branches of a tree
* app/widgets/gimpcontainertreeview-dnd.c
  (gimp_container_tree_view_real_drop_possible): support DND within a
  tree and make sure a group item is not dropped into itself.

* app/widgets/gimpitemtreeview.c (gimp_item_tree_view_drop_viewable):
  implement intra-container reordering within all branches; print a
  message for inter-container reordering because that's not yet
  implemented in the core.
2009-08-05 18:57:08 +02:00
Michael Natterer
a89e8d59e9 use GtkAdjustment's accessors.
2009-03-23  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpcontainertreeview-dnd.c: use GtkAdjustment's
	accessors.


svn path=/trunk/; revision=28208
2009-03-22 23:13:15 +00:00
Michael Natterer
d9b5207aa2 Change licence to GPLv3 (and to LGPLv3 for libgimp).
2009-01-17  Michael Natterer  <mitch@gimp.org>

	* all files with a GPL header and all COPYING files:

	Change licence to GPLv3 (and to LGPLv3 for libgimp).

	Cleaned up some copyright headers and regenerated the parsers in
	the ImageMap plugin.


svn path=/trunk/; revision=27913
2009-01-17 22:28:01 +00:00
Martin Nordholts
2f25fb132f Use GimpContainer getters instead of poking into the class
instance struct.

* app/actions/context-commands.c
* app/actions/data-commands.c
* app/actions/plug-in-commands.c
* app/actions/templates-commands.c
* app/core/gimp-utils.c
* app/core/gimpdrawablestack.c
* app/core/gimpitemstack.c
* app/core/gimplist.c
* app/gui/gui-vtable.c
* app/widgets/gimpcontainerbox.c
* app/widgets/gimpcontainercombobox.c
* app/widgets/gimpcontainereditor.c
* app/widgets/gimpcontainerentry.c
* app/widgets/gimpcontainergridview.c
* app/widgets/gimpcontainerpopup.c
* app/widgets/gimpcontainertreeview-dnd.c
* app/widgets/gimpcontainertreeview.c
* app/widgets/gimpcontainerview-utils.c
* app/widgets/gimpcontainerview.c
* app/widgets/gimpdataeditor.c
* app/widgets/gimpdatafactoryview.c
* app/widgets/gimpsettingsbox.c
* app/widgets/gimpviewablebutton.c

svn path=/trunk/; revision=27693
2008-11-20 23:43:58 +00:00
Martin Nordholts
9eda1bb7c8 New setter function so that we can make the "gboolean dnd_drop_to_empty"
* app/widgets/gimpcontainertreeview.[ch]
(gimp_container_tree_view_set_dnd_drop_to_empty): New setter
function so that we can make the "gboolean dnd_drop_to_empty"
class instance member private.

* app/widgets/gimpcontainertreeview-private.h: Move member here.

* app/widgets/gimpcontainertreeview-dnd.c: Go through priv pointer.

* app/widgets/gimpitemtreeview.c (gimp_item_tree_view_init): Use
the new function.

svn path=/trunk/; revision=27671
2008-11-16 19:48:54 +00:00
Martin Nordholts
137734aaed Put the GimpContainerTreeView enums here instead of exposing them through
* app/widgets/widgets-enums.h: Put the GimpContainerTreeView enums
here instead of exposing them through silly class instance
members.

* app/widgets/gimpcontainertreeview.c: 
* app/widgets/gimpcontainertreeview-dnd.c
* app/widgets/gimpdatafactoryview.c
* app/widgets/gimpitemtreeview.c
* app/widgets/gimplayertreeview.c
* app/widgets/gimpsettingseditor.c
* app/widgets/gimptemplateview.c
* app/widgets/gimptoolview.c: Clean up and use new enum names.

svn path=/trunk/; revision=27666
2008-11-15 20:01:55 +00:00
Martin Nordholts
e9153bf52d Don't expose class instance struct members that is currently only used
* app/widgets/gimpcontainertreeview.[ch]: Don't expose class
instance struct members that is currently only used within the
GimpContainerTreeView implementation.

* app/widgets/gimpcontainertreeview-private.h: New file containing
the definition of the private struct.

* app/widgets/gimpcontainertreeview-dnd.c: Change accordingly.

* app/widgets/Makefile.am: Add new file.

svn path=/trunk/; revision=27662
2008-11-15 18:08:50 +00:00
Michael Natterer
6aa62a907b app/dialogs/channel-options-dialog.c app/dialogs/palette-import-dialog.c
2008-06-29  Michael Natterer  <mitch@gimp.org>

	* app/dialogs/channel-options-dialog.c
	* app/dialogs/palette-import-dialog.c
	* app/display/gimpdisplayshell-callbacks.c
	* app/display/gimpnavigationeditor.c
	* app/tools/gimpbrightnesscontrasttool.c
	* app/tools/gimpcolorbalancetool.c
	* app/tools/gimpcolorizetool.c
	* app/tools/gimphuesaturationtool.c
	* app/tools/gimplevelstool.c
	* app/tools/gimpposterizetool.c
	* app/widgets/gimpbrusheditor.c
	* app/widgets/gimpbrushfactoryview.c
	* app/widgets/gimpbrushselect.c
	* app/widgets/gimpcolormapeditor.c
	* app/widgets/gimpcontainertreeview-dnd.c
	* app/widgets/gimpgradienteditor.c
	* app/widgets/gimphistogrambox.c
	* app/widgets/gimppaletteeditor.c
	* app/widgets/gimpscalebutton.c: replace adjustment->value by
	gtk_adjustment_get_value (adjustment).


svn path=/trunk/; revision=26019
2008-06-29 13:41:24 +00:00
Martin Nordholts
16f4a5d5e0 Make all code paths result in a call to gtk_drag_finish() if we return
2008-03-30  Martin Nordholts  <martinn@svn.gnome.org>

	* app/widgets/gimpcontainertreeview-dnd.c
	(gimp_container_tree_view_drag_drop): Make all code paths result
	in a call to gtk_drag_finish() if we return TRUE. Fixes bug
	#317992.

svn path=/trunk/; revision=25320
2008-03-30 18:26:44 +00:00
Sven Neumann
41237259c9 In all files, changed the standard copyright notice to say "GIMP - The GNU
2006-12-09  Sven Neumann  <sven@gimp.org>

        * In all files, changed the standard copyright notice to say
        "GIMP - The GNU Image Manipulation Program".
2006-12-09 21:33:38 +00:00
Michael Natterer
2abc723efe use the correct API to unset the tree view's drop indicator. Apparently
2006-04-04  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpcontainertreeview-dnd.c
	(gimp_container_tree_view_drag_leave)
	(gimp_container_tree_view_drag_motion): use the correct API to
	unset the tree view's drop indicator. Apparently using the wrong
	API has stopped working due to changes in GtkTreeView...
2006-04-04 15:29:18 +00:00
Michael Natterer
5dd7b6443b bail out early if the view has no container (instead of crashing).
2005-06-04  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpcontainertreeview-dnd.c
	(gimp_container_tree_view_drop_status): bail out early if the view
	has no container (instead of crashing).
2005-06-03 23:53:48 +00:00
Michael Natterer
7609645970 Implement dragging and dropping in any GdkPixbuf supported format. Fixes
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-04-09 17:56:04 +00:00
Michael Natterer
0429d04908 Allow to drop stuff onto empty layers, channels and paths dialogs to
2005-01-17  Michael Natterer  <mitch@gimp.org>

	Allow to drop stuff onto empty layers, channels and paths dialogs
	to create new items:

	* app/widgets/gimpcontainertreeview.h (struct GimpContainerTreeView):
	added "gboolean dnd_drop_to_empty".

	* app/widgets/gimpcontainertreeview-dnd.c: if "dnd_drop_to_empty"
	is TRUE, dispatch drops to empty views and to the empty area below
	all items.

	* app/widgets/gimpitemtreeview.c (gimp_item_tree_view_init): set
	"dnd_drop_to_empty" to TRUE.

	* app/widgets/gimpitemtreeview.c
	* app/widgets/gimpchanneltreeview.c
	* app/widgets/gimpdrawabletreeview.c
	* app/widgets/gimplayertreeview.c
	* app/widgets/gimpvectorstreeview.c: made all drop functions work
	with "dest_viewable" being NULL and changed drop_possible()
	implementations accordingly. Cleaned up the whole DND code a bit.

	* app/widgets/gimplayertreeview.c: removed color and pattern
	drop code...

	* app/widgets/gimpdrawabletreeview.c: and added it here so colors
	and patterns can be dropped to the channels dialog too.
2005-01-17 15:28:08 +00:00
Michael Natterer
63c933aef7 added virtual function GimpContainerTreeView::drop_component(). Added EEKy
2005-01-15  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpcontainertreeview.[ch]: added virtual function
	GimpContainerTreeView::drop_component(). Added EEKy "dnd_gimp"
	needed for gimp_selection_data_get_component().

	* app/widgets/gimpitemtreeview.c (gimp_item_tree_view_set_context):
	set the "dnd_gimp" pointer if it is NULL.

	* app/widgets/gimpcontainertreeview-dnd.c: handle component drops
	and dispatch ::drop_component() accordingly.

	* app/widgets/gimplayertreeview.c: implement dropping of
	components as new layers. Addresses bugs #158483 and #158133.
2005-01-15 17:57:32 +00:00
Michael Natterer
4b553f186c always call gdk_drag_status() before returning FALSE.
2004-09-10  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpcontainertreeview-dnd.c
	(gimp_container_tree_view_drop_status): always call
	gdk_drag_status() before returning FALSE.

	(gimp_container_tree_view_drag_motion): never return FALSE, an
	impossible drop location is now reported by calling
	gdk_drag_status() above. Always returning TRUE makes sure
	gimp_container_tree_view_drag_leave() is called unconditionally
	and can remove the scroll_timeout set in drag_motion().

	Fixes bug #152193 and many other obscure DND crashes caused by the
	scroll_timeout being invoked after the widget is destroyed.
2004-09-10 12:20:16 +00:00
David Odin
e91187ae86 app/widgets/gimppreview-popup.c renamed these files...
* app/widgets/gimppreview-popup.c
* app/widgets/gimppreview-popup.h: renamed these files...

* app/widgets/gimpview-popup.c
* app/widgets/gimpview-popup.h: .. to these files, and changed the
  GimpPreviewPopup type to GimpViewPopup.

* app/widgets/gimppreviewrenderer.c
* app/widgets/gimppreviewrenderer.h: renamed these files...

* app/widgets/gimpviewrenderer.c
* app/widgets/gimpviewrenderer.h: .. to these files, and changed
  GimpPreviewRenderer to GimpViewRenderer.

This is the second step of the great Preview->View renaming process.

* app/display/gimpdisplayshell-layer-select.c
* app/display/gimpnavigationeditor.c

* app/widgets/Makefile.am
* app/widgets/gimpbrushfactoryview.c
* app/widgets/gimpbufferview.c
* app/widgets/gimpcellrendererviewable.c
* app/widgets/gimpcellrendererviewable.h
* app/widgets/gimpcomponenteditor.c
* app/widgets/gimpcontainerbox.c
* app/widgets/gimpcontainercombobox.c
* app/widgets/gimpcontainereditor.c
* app/widgets/gimpcontainerentry.c
* app/widgets/gimpcontainergridview.c
* app/widgets/gimpcontainerpopup.c
* app/widgets/gimpcontainertreeview-dnd.c
* app/widgets/gimpcontainertreeview.c
* app/widgets/gimpcontainerview.c
* app/widgets/gimpdatafactoryview.c
* app/widgets/gimpitemtreeview.c
* app/widgets/gimplayertreeview.c
* app/widgets/gimpnavigationpreview.c
* app/widgets/gimppatternfactoryview.c
* app/widgets/gimppreviewrenderer-utils.c
* app/widgets/gimppreviewrendererbrush.c
* app/widgets/gimppreviewrendererbrush.h
* app/widgets/gimppreviewrendererdrawable.c
* app/widgets/gimppreviewrendererdrawable.h
* app/widgets/gimppreviewrenderergradient.c
* app/widgets/gimppreviewrenderergradient.h
* app/widgets/gimppreviewrendererimage.c
* app/widgets/gimppreviewrendererimage.h
* app/widgets/gimppreviewrendererimagefile.c
* app/widgets/gimppreviewrendererimagefile.h
* app/widgets/gimppreviewrendererlayer.c
* app/widgets/gimppreviewrenderervectors.c
* app/widgets/gimpselectioneditor.c
* app/widgets/gimptemplateview.c
* app/widgets/gimptooloptionseditor.c
* app/widgets/gimptoolview.c
* app/widgets/gimpview.c
* app/widgets/gimpview.h
* app/widgets/gimpviewablebutton.c
* app/widgets/widgets-enums.h
* app/widgets/widgets-types.h: Modified accordingly.
2004-08-25 22:31:44 +00:00
Michael Natterer
cc6aa18619 app/widgets/gimpdnd.[ch] app/widgets/gimpselectiondata.[ch] changed
2004-06-30  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpdnd.[ch]
	* app/widgets/gimpselectiondata.[ch]
	* app/widgets/gimpcontainertreeview.[ch]: changed "files" and "uris"
	to "uri_list" in all function names, parameters and typedefs.

	* app/widgets/gimpcontainertreeview-dnd.c
	* app/widgets/gimpdocumentview.c
	* app/widgets/gimplayertreeview.c
	* app/widgets/gimptoolbox-dnd.c
	* app/display/gimpdisplayshell-dnd.[ch]
	* app/display/gimpdisplayshell.c: changed accordingly.
2004-06-30 14:47:23 +00:00
Sven Neumann
114f747f4c renamed the SVG related functions so that they deal with an anonymous data
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 11:57:17 +00:00
Michael Natterer
425fd699e3 changed return value from gchar* to const gchar*. Renamed parameters to be
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 23:18:18 +00:00
Michael Natterer
03b4c71d69 don't free the SVG data after dropping, it's owned by GtkSelectionData.
2004-06-29  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpcontainertreeview-dnd.c: don't free the SVG data
	after dropping, it's owned by GtkSelectionData.
2004-06-29 13:28:26 +00:00
Michael Natterer
6a5e68c9e2 Allow all sorts of things to be dropped on or in between the items of a
2004-06-28  Michael Natterer  <mitch@gimp.org>

	Allow all sorts of things to be dropped on or in between the
	items of a GimpContainerTreeView:

	* app/widgets/gimpcontainertreeview.[ch]: added more parameters to
	GimpContainerTreeView::drop_possible() to specify where ecactly
	the drop should take place (between or into items) and to support
	dropping all sorts of things.

	Renamed ::drop() to ::drop_viewable() and added ::drop_color(),
	::drop_files() and ::drop_svg(), which cover all possible drop
	types.

	* app/widgets/gimpcontainertreeview-dnd.[ch]: changed accordingly.
	Dispatch all kinds of drops to the resp. virtual functions.

	* app/widgets/gimpitemtreeview.c: changed accordingly.

	* app/widgets/gimplayertreeview.c: allow to drop URIs, colors
	and patterns to the layers dialog. Fixes bugs #119506 and #139246.
2004-06-28 22:07:12 +00:00