diff options
author | Daniel Elstner <daniel.elstner@gmx.net> | 2002-09-30 17:18:16 +0000 |
---|---|---|
committer | Daniel Elstner <daniel@src.gnome.org> | 2002-09-30 17:18:16 +0000 |
commit | 22e3d3b937b84acd4f2d83e23ddb4f38d37c286a (patch) | |
tree | 99df6f058665bf34ff27a74de98edbd8c994845d /gtk | |
parent | 913f2681ff8bf3b40c7777f67aa4c72bf71375f0 (diff) | |
download | gtk+-22e3d3b937b84acd4f2d83e23ddb4f38d37c286a.tar.gz |
Add construct-only property "tag_table" and make use of it in
2002-09-30 Daniel Elstner <daniel.elstner@gmx.net>
* gtk/gtktextbuffer.c: Add construct-only property "tag_table" and make use of it in gtk_text_buffer_new(). (#70227)
Diffstat (limited to 'gtk')
-rw-r--r-- | gtk/gtktextbuffer.c | 124 |
1 files changed, 98 insertions, 26 deletions
diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c index 58138f8af4..60f557b5ce 100644 --- a/gtk/gtktextbuffer.c +++ b/gtk/gtktextbuffer.c @@ -36,7 +36,7 @@ #include "gtktextbuffer.h" #include "gtktextbtree.h" #include "gtktextiterprivate.h" -#include <string.h> +#include "gtkintl.h" typedef struct _ClipboardRequest ClipboardRequest; @@ -66,8 +66,10 @@ enum { }; enum { - ARG_0, - LAST_ARG + PROP_0, + + /* Construct */ + PROP_TAG_TABLE }; enum { @@ -116,6 +118,16 @@ static void update_selection_clipboards (GtkTextBuffer *buffer); static GObjectClass *parent_class = NULL; static guint signals[LAST_SIGNAL] = { 0 }; +static void gtk_text_buffer_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec); +static void gtk_text_buffer_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec); + + GType gtk_text_buffer_get_type (void) { @@ -153,7 +165,9 @@ gtk_text_buffer_class_init (GtkTextBufferClass *klass) parent_class = g_type_class_peek_parent (klass); object_class->finalize = gtk_text_buffer_finalize; - + object_class->set_property = gtk_text_buffer_set_property; + object_class->get_property = gtk_text_buffer_get_property; + klass->insert_text = gtk_text_buffer_real_insert_text; klass->insert_pixbuf = gtk_text_buffer_real_insert_pixbuf; klass->insert_child_anchor = gtk_text_buffer_real_insert_anchor; @@ -162,6 +176,15 @@ gtk_text_buffer_class_init (GtkTextBufferClass *klass) klass->remove_tag = gtk_text_buffer_real_remove_tag; klass->changed = gtk_text_buffer_real_changed; + /* Construct */ + g_object_class_install_property (object_class, + PROP_TAG_TABLE, + g_param_spec_object ("tag_table", + _("Tag Table"), + _("Text Tag Table"), + GTK_TYPE_TEXT_TAG_TABLE, + G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY)); + signals[INSERT_TEXT] = g_signal_new ("insert_text", G_OBJECT_CLASS_TYPE (object_class), @@ -305,6 +328,74 @@ static void gtk_text_buffer_init (GtkTextBuffer *buffer) { buffer->clipboard_contents_buffers = NULL; + buffer->tag_table = NULL; +} + +static void +set_table (GtkTextBuffer *buffer, GtkTextTagTable *table) +{ + g_return_if_fail (buffer->tag_table == NULL); + + if (table) + { + buffer->tag_table = table; + g_object_ref (G_OBJECT (buffer->tag_table)); + _gtk_text_tag_table_add_buffer (table, buffer); + } +} + +static GtkTextTagTable* +get_table (GtkTextBuffer *buffer) +{ + if (buffer->tag_table == NULL) + { + buffer->tag_table = gtk_text_tag_table_new (); + _gtk_text_tag_table_add_buffer (buffer->tag_table, buffer); + } + + return buffer->tag_table; +} + +static void +gtk_text_buffer_set_property (GObject *object, + guint prop_id, + const GValue *value, + GParamSpec *pspec) +{ + GtkTextBuffer *text_buffer; + + text_buffer = GTK_TEXT_BUFFER (object); + + switch (prop_id) + { + case PROP_TAG_TABLE: + set_table (text_buffer, g_value_get_object (value)); + break; + + default: + break; + } +} + +static void +gtk_text_buffer_get_property (GObject *object, + guint prop_id, + GValue *value, + GParamSpec *pspec) +{ + GtkTextBuffer *text_buffer; + + text_buffer = GTK_TEXT_BUFFER (object); + + switch (prop_id) + { + case PROP_TAG_TABLE: + g_value_set_object (value, get_table (text_buffer)); + break; + + default: + break; + } } /** @@ -320,17 +411,10 @@ gtk_text_buffer_new (GtkTextTagTable *table) { GtkTextBuffer *text_buffer; - text_buffer = GTK_TEXT_BUFFER (g_object_new (gtk_text_buffer_get_type (), NULL)); - - if (table) - { - text_buffer->tag_table = table; - - g_object_ref (G_OBJECT (text_buffer->tag_table)); + text_buffer = GTK_TEXT_BUFFER (g_object_new (GTK_TYPE_TEXT_BUFFER, + "tag_table", table, + NULL)); - _gtk_text_tag_table_add_buffer (table, text_buffer); - } - return text_buffer; } @@ -365,18 +449,6 @@ gtk_text_buffer_finalize (GObject *object) G_OBJECT_CLASS (parent_class)->finalize (object); } -static GtkTextTagTable* -get_table (GtkTextBuffer *buffer) -{ - if (buffer->tag_table == NULL) - { - buffer->tag_table = gtk_text_tag_table_new (); - _gtk_text_tag_table_add_buffer (buffer->tag_table, buffer); - } - - return buffer->tag_table; -} - static GtkTextBTree* get_btree (GtkTextBuffer *buffer) { |