From 22e3d3b937b84acd4f2d83e23ddb4f38d37c286a Mon Sep 17 00:00:00 2001 From: Daniel Elstner Date: Mon, 30 Sep 2002 17:18:16 +0000 Subject: [PATCH] Add construct-only property "tag_table" and make use of it in 2002-09-30 Daniel Elstner * gtk/gtktextbuffer.c: Add construct-only property "tag_table" and make use of it in gtk_text_buffer_new(). (#70227) --- ChangeLog | 5 ++ ChangeLog.pre-2-10 | 5 ++ ChangeLog.pre-2-2 | 5 ++ ChangeLog.pre-2-4 | 5 ++ ChangeLog.pre-2-6 | 5 ++ ChangeLog.pre-2-8 | 5 ++ gtk/gtktextbuffer.c | 124 ++++++++++++++++++++++++++++++++++---------- 7 files changed, 128 insertions(+), 26 deletions(-) diff --git a/ChangeLog b/ChangeLog index 3d1da9d4e1..6312bde06d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2002-09-30 Daniel Elstner + + * gtk/gtktextbuffer.c: Add construct-only property "tag_table" + and make use of it in gtk_text_buffer_new(). (#70227) + 2002-09-30 Stanislav Brabec * gtk/gtkimcontextsimple.c: Completed ISO-8859-2 characters diff --git a/ChangeLog.pre-2-10 b/ChangeLog.pre-2-10 index 3d1da9d4e1..6312bde06d 100644 --- a/ChangeLog.pre-2-10 +++ b/ChangeLog.pre-2-10 @@ -1,3 +1,8 @@ +2002-09-30 Daniel Elstner + + * gtk/gtktextbuffer.c: Add construct-only property "tag_table" + and make use of it in gtk_text_buffer_new(). (#70227) + 2002-09-30 Stanislav Brabec * gtk/gtkimcontextsimple.c: Completed ISO-8859-2 characters diff --git a/ChangeLog.pre-2-2 b/ChangeLog.pre-2-2 index 3d1da9d4e1..6312bde06d 100644 --- a/ChangeLog.pre-2-2 +++ b/ChangeLog.pre-2-2 @@ -1,3 +1,8 @@ +2002-09-30 Daniel Elstner + + * gtk/gtktextbuffer.c: Add construct-only property "tag_table" + and make use of it in gtk_text_buffer_new(). (#70227) + 2002-09-30 Stanislav Brabec * gtk/gtkimcontextsimple.c: Completed ISO-8859-2 characters diff --git a/ChangeLog.pre-2-4 b/ChangeLog.pre-2-4 index 3d1da9d4e1..6312bde06d 100644 --- a/ChangeLog.pre-2-4 +++ b/ChangeLog.pre-2-4 @@ -1,3 +1,8 @@ +2002-09-30 Daniel Elstner + + * gtk/gtktextbuffer.c: Add construct-only property "tag_table" + and make use of it in gtk_text_buffer_new(). (#70227) + 2002-09-30 Stanislav Brabec * gtk/gtkimcontextsimple.c: Completed ISO-8859-2 characters diff --git a/ChangeLog.pre-2-6 b/ChangeLog.pre-2-6 index 3d1da9d4e1..6312bde06d 100644 --- a/ChangeLog.pre-2-6 +++ b/ChangeLog.pre-2-6 @@ -1,3 +1,8 @@ +2002-09-30 Daniel Elstner + + * gtk/gtktextbuffer.c: Add construct-only property "tag_table" + and make use of it in gtk_text_buffer_new(). (#70227) + 2002-09-30 Stanislav Brabec * gtk/gtkimcontextsimple.c: Completed ISO-8859-2 characters diff --git a/ChangeLog.pre-2-8 b/ChangeLog.pre-2-8 index 3d1da9d4e1..6312bde06d 100644 --- a/ChangeLog.pre-2-8 +++ b/ChangeLog.pre-2-8 @@ -1,3 +1,8 @@ +2002-09-30 Daniel Elstner + + * gtk/gtktextbuffer.c: Add construct-only property "tag_table" + and make use of it in gtk_text_buffer_new(). (#70227) + 2002-09-30 Stanislav Brabec * gtk/gtkimcontextsimple.c: Completed ISO-8859-2 characters 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 +#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)); + text_buffer = GTK_TEXT_BUFFER (g_object_new (GTK_TYPE_TEXT_BUFFER, + "tag_table", table, + NULL)); - if (table) - { - text_buffer->tag_table = table; - - g_object_ref (G_OBJECT (text_buffer->tag_table)); - - _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) {