Commit Graph

43 Commits

Author SHA1 Message Date
49e534247a app, libgimp*, pdb, plug-ins: use g_memdup2() instead of g_memdup()
Since it appeared with GLib 2.68.0, we could not change this until we
bumped the dependency which has only become possible a few days ago
(since Debian testing is our baseline for dependency bumps). Cf.
previous commit.

As this is a drop-in replacement (just a guint parameter changed to
gsize to avoid integer overflow), search-and-replace with:

> sed -i 's/g_memdup\>/g_memdup2/g' `grep -rIl 'g_memdup\>' *`

… followed by a few manual alignment tweaks when necessary.

This gets rid of the many deprecation warnings which we had lately when
building with a recent GLib version.
2021-08-26 17:32:09 +02:00
fca6371e29 app: clear the clipboard after storing its contents, upon quitting.
If we don't do this, the clipboard owner doesn't get unreffed (also the
GtkClipboardClearFunc is not called either, but we don't set any so this
was not a big problem).

The main consequence was that copying was setting the Gimp object as an
owner, which kept a reference and prevent its finalize() method to run,
hence was leaking data (and in particular some GEGL buffers for
clipboard operations, which was how the issue became more visible upon
exit).
2020-05-06 15:46:24 +02:00
85d9730936 Add some missing (nullable) annotations
Fixes https://gitlab.gnome.org/GNOME/gimp/-/issues/4750
2020-05-01 15:34:56 +02:00
5f92ced1f3 Add (nullable) if applicable
Basically this commit makes sure that all return values that are marked
as "Returns:" also have a `(nullable)` annotation if it is mentioned on
the same line that NULL can also be returned.

This will prevent a few problems in GObject-introspection.
2019-08-03 07:53:47 +00:00
1dda60154c Use "Returns:" to annotate return values
To be able to annotate return values through GObject-introspection, you
need to make sure it is tagged with `Returns:` and not something else.
2019-08-03 07:53:47 +00:00
a0263f40d0 Issue #2446 - DPI information is not stored in clipboard
Set the "x-dpi" and "y-dpi" options on the GdkPixbuf set on the
clipboard. There is not much more we can do, getting that value across
the clipboard is out of our control, but at least we set the vlaues
now.
2019-01-04 18:11:12 +01:00
5f700549e7 Change the license URL from http://www.gnu.org/licenses/ to https:// 2018-07-11 23:29:46 +02:00
e0f46d1dc9 app: cleanup in GimpClipboard
Mostly formatting and thortening variables. Only real change is adding
gimp_clipboard_new() and moving most init() code there.
2018-06-18 01:47:35 +02:00
7d3a129ddd Issue #1441 - Copy paste issue, internal clipboard blocks global clipboard
Never return an internal image/buffer/svg/curve from any
gimp_clipboard function if we are not the owner of the display's
clipboard. The clipboard is supposed to be a global thing, and we must
only offer to ourselves what would be pasted in any other app.
2018-06-08 11:39:53 +02:00
0cb3e75f79 app: use a lot of g_clear_object() and g_clear_pointer()
More than 2000 lines of code less in app/, instead of

if (instance->member)
  {
    g_object_unref/g_free/g_whatever (instance->member);
    instance->member = NULL;
  }

we now simply use

g_clear_object/pointer (&instance->member);
2017-07-15 18:42:44 +02:00
35588d79c8 app: add utility functions to get a generic paste GimpObject
to Gimp and GimpClipboard. The object is either an image or a buffer
or NULL.
2016-09-21 00:11:15 +02:00
1f00b5e70f app: add setting/getting and sending/recieving images via GimpClipboard
The new functionality is not used yet.
2016-09-18 22:01:13 +02:00
e060da8278 Bug 680795 - GIMP segfaults in gimp_clipboard_set_buffer when...
Fix segfault in gimp_clipboard_set_buffer when n_target_entries is 0.
2012-07-30 16:43:37 +02:00
d771249466 app: completely port GimpBuffer to using GeglBuffer not TileManager 2012-05-02 17:45:47 +02:00
bc8d5f84d6 app: remove the "offset" API from TileManager
It made the transform code hard to read and never belonged into the
tile manager anyway. It's a simple pixel buffer that should not know
about any position in an image. Instead, pass around the offsets of
tile managers explicitly, so everything is less obscure for the price
of having more parameters. This will also help replacing TileManagers
with GeglBuffers.
2011-03-26 08:30:15 +01:00
4b729086a9 app: cast GtkTargetEntry.target to gchar* when freeing it
because it was made const in GTK+.
2010-11-29 15:41:38 +01:00
fdde593fc5 app: enable copy and paste for curves
Add GimpCurve support to the clipboard and handle ctrl-x, ctrl-c and
ctrl-v in GimpCurveView.
2010-02-16 19:58:51 +01:00
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
17f8ab01e6 app/widgets/gimpclipboard.c app/widgets/gimpcontainerview.c allocate
2007-05-22  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpclipboard.c
	* app/widgets/gimpcontainerview.c
	* app/widgets/gimpdialogfactory.c: allocate structs using 
GSlice.


svn path=/trunk/; revision=22582
2007-05-22 18:08:42 +00:00
efb221acc7 app/widgets/gimpclipboard.c app/widgets/gimpdnd-xds.c use
2007-04-28  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpclipboard.c
	* app/widgets/gimpdnd-xds.c
	* plug-ins/helpbrowser/dialog.c: use 
gdk_atom_intern_static_string().


svn path=/trunk/; revision=22360
2007-04-28 10:11:37 +00:00
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
b53aa45a76 Changed GimpViewable preview rendering to have a context to get
2006-08-29  Michael Natterer  <mitch@gimp.org>

	Changed GimpViewable preview rendering to have a context to get
	FG/BG/whatever from. Use the context to enable dynamic FG/BG
	colors in gradients. Fixes bug #127676 and bug #352214. Addresses
	bug #128367 (doesn't fix it because there's no loading/saving and
	no GUI yet).

	* app/core/core-enums.[ch]: added enum GimpGradientColor to enable
	specifying gradient colors in terms of foreground and background.

	* app/core/gimpgradient.[ch]: added color_type members to the
	GimpGradientSegment struct and honor them in
	gimp_gradient_get_color_at(). Added GimpContext parameters to all
	functions which finally call get_color_at().

	* app/core/gimp-gradients.c: use the new method to implement the
	builtin gradients.

	* app/core/gimpviewable.[ch]: added GimpContext parameters to all
	get_preview() and get_pixbuf() functions.

	* app/core/gimpbrush.c
	* app/core/gimpbuffer.c
	* app/core/gimpdrawable-preview.[ch]
	* app/core/gimpgradient.c
	* app/core/gimpimage-preview.[ch]
	* app/core/gimpimagefile.c
	* app/core/gimppalette.c
	* app/core/gimppattern.c
	* app/core/gimpundo.[ch]
	* app/text/gimpfont.c
	* app/vectors/gimpvectors-preview.[ch]: changed ::get_preview()
	and ::get_pixbuf() implementations accordingly.

	* app/core/gimpdrawable-blend.c
	* app/core/gimppalette-import.[ch]
	* app/dialogs/dialogs-constructors.c
	* app/dialogs/palette-import-dialog.c
	* app/dialogs/resize-dialog.c
	* app/display/gimpdisplayshell-layer-select.c
	* app/display/gimpdisplayshell.c
	* app/display/gimpnavigationeditor.c
	* app/paint/gimppaintoptions.c
	* app/tools/gimpeditselectiontool.c
	* app/tools/gimptexttool.c
	* app/actions/gradient-editor-commands.c
	* app/widgets/gimpaction.c
	* app/widgets/gimpbrusheditor.[ch]
	* app/widgets/gimpbufferview.c
	* app/widgets/gimpcellrendererviewable.c
	* app/widgets/gimpchanneltreeview.c
	* app/widgets/gimpclipboard.c
	* app/widgets/gimpcoloreditor.c
	* 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/gimpcontainertreeview.[ch]
	* app/widgets/gimpdataeditor.[ch]
	* app/widgets/gimpdevicestatus.c
	* app/widgets/gimpdnd.[ch]
	* app/widgets/gimpdrawabletreeview.c
	* app/widgets/gimpfiledialog.c
	* app/widgets/gimpgradienteditor.[ch]
	* app/widgets/gimpgradientselect.c
	* app/widgets/gimpitemtreeview.c
	* app/widgets/gimplayertreeview.c
	* app/widgets/gimppaletteeditor.[ch]
	* app/widgets/gimppropwidgets.[ch]
	* app/widgets/gimpselectioneditor.c
	* app/widgets/gimpthumbbox.[ch]
	* app/widgets/gimptoolbox-image-area.c
	* app/widgets/gimptoolbox-indicator-area.c
	* app/widgets/gimptooloptionseditor.c
	* app/widgets/gimpundoeditor.c
	* app/widgets/gimpvectorstreeview.c
	* app/widgets/gimpview-popup.[ch]
	* app/widgets/gimpview.[ch]
	* app/widgets/gimpviewablebutton.c
	* app/widgets/gimpviewabledialog.c
	* app/widgets/gimpviewrenderer.[ch]
	* app/widgets/gimpviewrenderer-frame.c
	* app/widgets/gimpviewrendererbrush.c
	* app/widgets/gimpviewrendererbuffer.c
	* app/widgets/gimpviewrendererdrawable.c
	* app/widgets/gimpviewrenderergradient.c
	* app/widgets/gimpviewrendererimage.c
	* tools/pdbgen/pdb/drawable.pdb
	* tools/pdbgen/pdb/gradient.pdb
	* tools/pdbgen/pdb/gradients.pdb
	* tools/pdbgen/pdb/image.pdb: added tons of GimpContext members
	and parameters, implement GimpDocked::set_context() in many
	widgets. Pass these locally remembered contexts to GimpViewable
	functions. Did some minor cleanups on the way. There are still
	some minor FIXMEs around where the code uses a NULL context (which
	is allowed by the APIs)

	* app/pdb/drawable_cmds.c
	* app/pdb/gradient_cmds.c
	* app/pdb/gradients_cmds.c
	* app/pdb/image_cmds.c: regenerated.
2006-08-29 21:44:51 +00:00
3fac0dd74f fix parameter name in API docs.
2006-04-15  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpclipboard.c (gimp_clipboard_set_buffer): fix
	parameter name in API docs.
2006-04-15 16:49:59 +00:00
82282ea86c added g_return_if_fail (GIMP_IS_GIMP (gimp)).
2005-11-02  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpclipboard.c (gimp_clipboard_set_text): added
	g_return_if_fail (GIMP_IS_GIMP (gimp)).
2005-11-02 19:52:47 +00:00
afde82bb8f clear the GIMP clipboard. Suppress debug output unless gimp is started
2005-11-02  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpclipboard.[ch] (gimp_clipboard_set_text): clear
	the GIMP clipboard. Suppress debug output unless gimp is started
	with the --verbose command-line option.

	* app/actions/data-commands.c
	* app/actions/documents-commands.c: adapt to clipboard API change.
2005-11-02 12:03:37 +00:00
6ad8c74080 app/actions/data-commands.c app/actions/documents-commands.c moved text
2005-11-01  Sven Neumann  <sven@gimp.org>

	* app/actions/data-commands.c
	* app/actions/documents-commands.c
	* app/widgets/gimpclipboard.[ch]: moved text clipboard handling to
	utility function to avoid code duplication.
2005-11-01 11:01:44 +00:00
ae4d65ac04 Separated the global buffer logic from the clipboard implementation:
2005-09-21  Michael Natterer  <mitch@gimp.org>

	Separated the global buffer logic from the clipboard
	implementation:

	* app/widgets/gimpclipboard.[ch]: removed all knowledge about
	gimp->global_buffer. Removed the Gimp::buffer-changed callback.
	Made gimp_clipboard_set_buffer() public and remember the set
	buffer in the GimpClipboard struct. Fixed the has_buffer() and
	has_svg() functions.

	* app/gui/gui.c: connect to Gimp::buffer-changed here and call
	gimp_clipboard_set_buffer() from the callback.
2005-09-21 14:35:51 +00:00
c7998a1855 added new public function gimp_clipboard_set_svg() and internal stuff to
2005-09-19  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpclipboard.[ch]: added new public function
	gimp_clipboard_set_svg() and internal stuff to offer and transfer
	the svg data to the clipboard.

	* app/actions/vectors-commands.c (vectors_copy_cmd_callback)
	(vectors_paste_cmd_callback): implement copy/paste of vectors as
	SVG. Fixes bug #316547.

	* app/widgets/gimpvectorstreeview.c
	(gimp_vectors_tree_view_drag_svg): don't add the terminating
	nul-byte of the svg string to svg_data_length, it confuses the XML
	parser.

	* app/actions/vectors-actions.c
	* app/actions/vectors-commands.[ch]
	* menus/vectors-menu.xml: reordered export/import so they are in
	the same order as copy/paste.
2005-09-19 21:33:03 +00:00
b8fc8e6050 themes/Default/images/Makefile.am
2005-07-29  Sven Neumann  <sven@gimp.org>

	* themes/Default/images/Makefile.am
	* themes/Default/images/tools/stock-tool-foreground-select-16.png
	* themes/Default/images/tools/stock-tool-foreground-select-22.png:
	added placeholder for yet-to-be-drawn tool icon.

	* libgimpwidgets/gimpstock.[ch]: register it.

	* app/tools/gimpforegroundselecttool.c: use it.

	* app/widgets/gimpclipboard.[ch] (gimp_clipboard_get_svg): return
	a signed char pointer.

	* app/actions/edit-commands.c
	* app/tools/gimpinkoptions-gui.c: fixed signedness issues.
2005-07-29 18:04:59 +00:00
93eab43eef Use the canonical form for signal names.
2005-05-27  Sven Neumann  <sven@gimp.org>

	* (lots of files): Use the canonical form for signal names.
2005-05-27 16:51:39 +00:00
e0b3fdfc3c fixed gtk-doc comments.
2005-05-25  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpclipboard.[ch]: fixed gtk-doc comments.
2005-05-25 11:23:06 +00:00
cd53b60701 added gimp_clipboard_has_svg() and gimp_clipboard_get_svg().
2005-05-16  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpclipboard.[ch]: added gimp_clipboard_has_svg()
	and gimp_clipboard_get_svg().

	* app/actions/edit-commands.c (edit_paste_cmd_callback): enabled
	pasting of SVG data using gimp_vectors_import_buffer().
2005-05-16 12:31:04 +00:00
55be97a021 free all memory allocated for GimpClipboard.
2005-04-27  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpclipboard.c (gimp_clipboard_free): free all
	memory allocated for GimpClipboard.

	* libgimpwidgets/gimppatheditor.c (gimp_path_editor_set_path):
	always free old_path.
2005-04-27 15:59:14 +00:00
1fe869bbfd don't include "core/gimpviewable.h"
2005-04-11  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpclipboard.c: don't include "core/gimpviewable.h"
2005-04-11 16:01:25 +00:00
9d439fe018 added gimp_buffer_new_from_pixbuf().
2005-04-09  Michael Natterer  <mitch@gimp.org>

	* app/core/gimpbuffer.[ch]: added gimp_buffer_new_from_pixbuf().

	* app/widgets/gimpclipboard.c: removed
	tile_manager_new_from_pixbuf() and base/ dependency.
2005-04-09 21:52:21 +00:00
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
61ca231ce2 On Win32, move the "bmp" format to the front. Means less conversion in
2005-04-04  Tor Lillqvist  <tml@novell.com>

	* app/widgets/gimpclipboard.c (gimp_clipboard_format_compare): On
	Win32, move the "bmp" format to the front. Means less conversion
	in most cases, as other apps on Win32 typically provide/want the
	BMP format on the Clipboard. (Actually CF_DIB, but that's the
	same, just without the BMP file header.) See also bug #168173.
2005-04-04 00:33:35 +00:00
cf56c79553 allow to store the clipboard content in a clipboard manager when GIMP
2005-03-30  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpclipboard.c: allow to store the clipboard content
	in a clipboard manager when GIMP exits.
2005-03-29 22:05:50 +00:00
a27b0bff1c app/widgets/gimpuimanager.c (gimp_ui_manager_entry_load) only be verbose
2004-10-29  Sven Neumann  <sven@gimp.org>

        * app/widgets/gimpuimanager.c (gimp_ui_manager_entry_load)
        * app/widgets/gimpclipboard.c (gimp_clipboard_init): only be
        verbose on request.

        * app/plug-in/plug-in.c (plug_in_close): turned warnings into
        messages and respect gimp->be_verbose.
2004-10-29 21:54:32 +00:00
d18097028e added a "const gchar *format" parameter to
2004-07-08  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpselectiondata.[ch]: added a "const gchar *format"
	parameter to gimp_selection_data_set_pixbuf() which selects the
	format in which to encode the pixbuf (was defaulting to "png"
	before).

	* app/widgets/gimpclipboard.c: when copying, offer all formats which
	are savable with GdkPixbuf. Added a GimpClipboard struct which is
	attached to the Gimp and which stores all the persistent data
	needed by the clipboard. Renamed some private functions.

	(unfortunately this change breaks pasting to AbiWord:
	 http://bugzilla.abisource.com/show_bug.cgi?id=7068)
2004-07-08 11:27:48 +00:00
73b1182c80 sort the list of pixbuf formats so that PNG is the preferred format and
2004-07-07  Sven Neumann  <sven@gimp.org>

	* app/widgets/gimpclipboard.c: sort the list of pixbuf formats so
	that PNG is the preferred format and GIF and JPEG come last.
2004-07-07 18:09:14 +00:00
94163a8beb changed to allow pasting any GdkPixbuf supported format (makes pasting
2004-07-07  Michael Natterer  <mitch@gimp.org>

	* app/widgets/gimpclipboard.[ch]: changed to allow pasting any
	GdkPixbuf supported format (makes pasting from OpenOffice
	work). Cleaned up a bit to perpare pasting of SVG data.
2004-07-07 16:02:23 +00:00
8fc8cb487c app/gui/Makefile.am removed...
2004-07-07  Michael Natterer  <mitch@gimp.org>

	* app/gui/Makefile.am
	* app/gui/clipboard.[ch]: removed...

	* app/widgets/Makefile.am
	* app/widgets/gimpclipboard.[ch]: ...and added here.

	* app/actions/edit-commands.c
	* app/gui/gui.c: changed accordingly.
2004-07-07 14:38:23 +00:00