diff options
author | Michael Natterer <mitch@imendio.com> | 2006-03-07 13:46:11 +0000 |
---|---|---|
committer | Michael Natterer <mitch@src.gnome.org> | 2006-03-07 13:46:11 +0000 |
commit | 6c1d990adc5eea803b4cb28956befb83e89468ee (patch) | |
tree | ca25230f26a27da2bde3f6cf1c3e9910c0e7487d /gtk/gtkselection.h | |
parent | 1f5c294851a009295c9d331110512e47324d09c0 (diff) | |
download | gtk+-6c1d990adc5eea803b4cb28956befb83e89468ee.tar.gz |
Add infrastructure for copy/paste and DND of rich text for GtkTextBuffer.
2006-03-07 Michael Natterer <mitch@imendio.com>
Add infrastructure for copy/paste and DND of rich text for
GtkTextBuffer. Fixes bug #324177.
* gtk/gtktextbufferrichtext.[ch]: new files implementing a
per-buffer registry of rich text formats.
* gtk/gtk.h: #include gtktextbufferrichtext.h
* gtk/gtktextbufferserialize.[ch]: new files implementing an
internal serialization format that can handle all of a text
buffer's tags and pixbufs. It's not useful for anything except
tranfer between instances of GtkTextBuffer (Anders Carlsson).
* gtk/Makefile.am: build the new files.
* gtk/gtkclipboard.[ch]: added convenience APIs for rich text,
just as they exist for plain text and pixbufs.
* gtk/gtkselection.[ch]: added rich text convenience APIs here
too. Return the target list from gtk_target_list_ref(). Register
GtkTargetList as boxed type. Added
gtk_target_table_new_from_list() and gtk_target_table_free(),
which make converting between GtkTargetList and arrays of
GtkTargetEntry considerably easier.
* gtk/gtktextutil.[ch]: added _gtk_text_util_create_rich_drag_icon()
which creates a fancy rich text icon (Matthias Clasen).
* gtk/gtktextbuffer.[ch]: use all the new stuff above and
implement copy and paste of rich text. Added APIs for getting the
target lists used for copy and paste. Added public enum
GtkTextBufferTargetInfo which contains the "info" IDs associated
with the entries of the target lists.
* gtk/gtktextview.c: use the new rich text APIs and
GtkTextBuffer's new target list API to enable DND of rich text
chunks.
* gtk/gtk.symbols: export all the new symbols added.
* tests/testtext.c: added rich text testing stuff.
Diffstat (limited to 'gtk/gtkselection.h')
-rw-r--r-- | gtk/gtkselection.h | 47 |
1 files changed, 32 insertions, 15 deletions
diff --git a/gtk/gtkselection.h b/gtk/gtkselection.h index 038a16a972..9e97ae2a6d 100644 --- a/gtk/gtkselection.h +++ b/gtk/gtkselection.h @@ -31,6 +31,7 @@ #include <gdk/gdk.h> #include <gtk/gtkenums.h> #include <gtk/gtkwidget.h> +#include <gtk/gtktextiter.h> G_BEGIN_DECLS @@ -38,6 +39,7 @@ typedef struct _GtkTargetList GtkTargetList; typedef struct _GtkTargetEntry GtkTargetEntry; #define GTK_TYPE_SELECTION_DATA (gtk_selection_data_get_type ()) +#define GTK_TYPE_TARGET_LIST (gtk_target_list_get_type ()) /* The contents of a selection are returned in a GtkSelectionData * structure. selection/target identify the request. type specifies @@ -87,19 +89,23 @@ struct _GtkTargetPair { GtkTargetList *gtk_target_list_new (const GtkTargetEntry *targets, guint ntargets); -void gtk_target_list_ref (GtkTargetList *list); +GtkTargetList *gtk_target_list_ref (GtkTargetList *list); void gtk_target_list_unref (GtkTargetList *list); void gtk_target_list_add (GtkTargetList *list, GdkAtom target, guint flags, guint info); -void gtk_target_list_add_text_targets (GtkTargetList *list, - guint info); -void gtk_target_list_add_image_targets (GtkTargetList *list, - guint info, - gboolean writable); -void gtk_target_list_add_uri_targets (GtkTargetList *list, - guint info); +void gtk_target_list_add_text_targets (GtkTargetList *list, + guint info); +void gtk_target_list_add_rich_text_targets (GtkTargetList *list, + guint info, + gboolean deserializable, + GtkTextBuffer *buffer); +void gtk_target_list_add_image_targets (GtkTargetList *list, + guint info, + gboolean writable); +void gtk_target_list_add_uri_targets (GtkTargetList *list, + guint info); void gtk_target_list_add_table (GtkTargetList *list, const GtkTargetEntry *targets, guint ntargets); @@ -109,6 +115,11 @@ gboolean gtk_target_list_find (GtkTargetList *list, GdkAtom target, guint *info); +GtkTargetEntry * gtk_target_table_new_from_list (GtkTargetList *list, + gint *n_targets); +void gtk_target_table_free (GtkTargetEntry *targets, + gint n_targets); + /* Public interface */ gboolean gtk_selection_owner_set (GtkWidget *widget, @@ -153,16 +164,21 @@ gboolean gtk_selection_data_get_targets (GtkSelectionData *selection_d GdkAtom **targets, gint *n_atoms); gboolean gtk_selection_data_targets_include_text (GtkSelectionData *selection_data); +gboolean gtk_selection_data_targets_include_rich_text (GtkSelectionData *selection_data, + GtkTextBuffer *buffer); gboolean gtk_selection_data_targets_include_image (GtkSelectionData *selection_data, gboolean writable); gboolean gtk_selection_data_targets_include_uri (GtkSelectionData *selection_data); -gboolean gtk_targets_include_text (GdkAtom *targets, - gint n_targets); -gboolean gtk_targets_include_image (GdkAtom *targets, - gint n_targets, - gboolean writable); -gboolean gtk_targets_include_uri (GdkAtom *targets, - gint n_targets); +gboolean gtk_targets_include_text (GdkAtom *targets, + gint n_targets); +gboolean gtk_targets_include_rich_text (GdkAtom *targets, + gint n_targets, + GtkTextBuffer *buffer); +gboolean gtk_targets_include_image (GdkAtom *targets, + gint n_targets, + gboolean writable); +gboolean gtk_targets_include_uri (GdkAtom *targets, + gint n_targets); /* Called when a widget is destroyed */ @@ -186,6 +202,7 @@ GType gtk_selection_data_get_type (void) G_GNUC_CONST; GtkSelectionData *gtk_selection_data_copy (GtkSelectionData *data); void gtk_selection_data_free (GtkSelectionData *data); +GType gtk_target_list_get_type (void) G_GNUC_CONST; G_END_DECLS |