summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgnacio Casal Quinteiro <icq@gnome.org>2010-07-13 11:23:57 +0200
committerIgnacio Casal Quinteiro <icq@gnome.org>2010-07-17 10:39:37 +0200
commita1be4eccb0cf3174860d9fc23f75aad3421f1886 (patch)
treee7a7d4fd3a5f0e7fea5d6c5a7685fb8c0abae0b1
parente42c29ca98c9a6316d5fe9158514ec0d0db52f9b (diff)
downloadgtk+-a1be4eccb0cf3174860d9fc23f75aad3421f1886.tar.gz
Move GtkTextBuffer sealed attributes to private struct.
-rw-r--r--gtk/gtktextbuffer.c167
-rw-r--r--gtk/gtktextbuffer.h18
-rw-r--r--gtk/gtktextbufferserialize.c16
3 files changed, 112 insertions, 89 deletions
diff --git a/gtk/gtktextbuffer.c b/gtk/gtktextbuffer.c
index 2fec1e50fa..63d19c30af 100644
--- a/gtk/gtktextbuffer.c
+++ b/gtk/gtktextbuffer.c
@@ -44,7 +44,7 @@
#define GTK_TEXT_BUFFER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_TEXT_BUFFER, GtkTextBufferPrivate))
-typedef struct _GtkTextBufferPrivate GtkTextBufferPrivate;
+typedef struct _GtkTextLogAttrCache GtkTextLogAttrCache;
struct _GtkTextBufferPrivate
{
@@ -55,6 +55,21 @@ struct _GtkTextBufferPrivate
GtkTargetList *paste_target_list;
GtkTargetEntry *paste_target_entries;
gint n_paste_target_entries;
+
+ GtkTextTagTable *tag_table;
+ GtkTextBTree *btree;
+
+ GSList *clipboard_contents_buffers;
+ GSList *selection_clipboards;
+
+ GtkTextLogAttrCache *log_attr_cache;
+
+ guint user_action_count;
+
+ /* Whether the buffer has been modified since last save */
+ guint modified : 1;
+
+ guint has_selection : 1;
};
@@ -608,8 +623,10 @@ gtk_text_buffer_class_init (GtkTextBufferClass *klass)
static void
gtk_text_buffer_init (GtkTextBuffer *buffer)
{
- buffer->clipboard_contents_buffers = NULL;
- buffer->tag_table = NULL;
+ buffer->priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer);
+
+ buffer->priv->clipboard_contents_buffers = NULL;
+ buffer->priv->tag_table = NULL;
/* allow copying of arbiatray stuff in the internal rich text format */
gtk_text_buffer_register_serialize_tagset (buffer, NULL);
@@ -618,12 +635,14 @@ gtk_text_buffer_init (GtkTextBuffer *buffer)
static void
set_table (GtkTextBuffer *buffer, GtkTextTagTable *table)
{
- g_return_if_fail (buffer->tag_table == NULL);
+ GtkTextBufferPrivate *priv = buffer->priv;
+
+ g_return_if_fail (priv->tag_table == NULL);
if (table)
{
- buffer->tag_table = table;
- g_object_ref (buffer->tag_table);
+ priv->tag_table = table;
+ g_object_ref (priv->tag_table);
_gtk_text_tag_table_add_buffer (table, buffer);
}
}
@@ -631,13 +650,15 @@ set_table (GtkTextBuffer *buffer, GtkTextTagTable *table)
static GtkTextTagTable*
get_table (GtkTextBuffer *buffer)
{
- if (buffer->tag_table == NULL)
+ GtkTextBufferPrivate *priv = buffer->priv;
+
+ if (priv->tag_table == NULL)
{
- buffer->tag_table = gtk_text_tag_table_new ();
- _gtk_text_tag_table_add_buffer (buffer->tag_table, buffer);
+ priv->tag_table = gtk_text_tag_table_new ();
+ _gtk_text_tag_table_add_buffer (priv->tag_table, buffer);
}
- return buffer->tag_table;
+ return priv->tag_table;
}
static void
@@ -698,7 +719,7 @@ gtk_text_buffer_get_property (GObject *object,
}
case PROP_HAS_SELECTION:
- g_value_set_boolean (value, text_buffer->has_selection);
+ g_value_set_boolean (value, text_buffer->priv->has_selection);
break;
case PROP_CURSOR_POSITION:
@@ -754,28 +775,30 @@ static void
gtk_text_buffer_finalize (GObject *object)
{
GtkTextBuffer *buffer;
+ GtkTextBufferPrivate *priv;
buffer = GTK_TEXT_BUFFER (object);
+ priv = buffer->priv;
remove_all_selection_clipboards (buffer);
- if (buffer->tag_table)
+ if (priv->tag_table)
{
- _gtk_text_tag_table_remove_buffer (buffer->tag_table, buffer);
- g_object_unref (buffer->tag_table);
- buffer->tag_table = NULL;
+ _gtk_text_tag_table_remove_buffer (priv->tag_table, buffer);
+ g_object_unref (priv->tag_table);
+ priv->tag_table = NULL;
}
- if (buffer->btree)
+ if (priv->btree)
{
- _gtk_text_btree_unref (buffer->btree);
- buffer->btree = NULL;
+ _gtk_text_btree_unref (priv->btree);
+ priv->btree = NULL;
}
- if (buffer->log_attr_cache)
- free_log_attr_cache (buffer->log_attr_cache);
+ if (priv->log_attr_cache)
+ free_log_attr_cache (priv->log_attr_cache);
- buffer->log_attr_cache = NULL;
+ priv->log_attr_cache = NULL;
gtk_text_buffer_free_target_lists (buffer);
@@ -785,11 +808,13 @@ gtk_text_buffer_finalize (GObject *object)
static GtkTextBTree*
get_btree (GtkTextBuffer *buffer)
{
- if (buffer->btree == NULL)
- buffer->btree = _gtk_text_btree_new (gtk_text_buffer_get_tag_table (buffer),
- buffer);
+ GtkTextBufferPrivate *priv = buffer->priv;
+
+ if (priv->btree == NULL)
+ priv->btree = _gtk_text_btree_new (gtk_text_buffer_get_tag_table (buffer),
+ buffer);
- return buffer->btree;
+ return priv->btree;
}
GtkTextBTree*
@@ -1398,8 +1423,8 @@ gtk_text_buffer_insert_range (GtkTextBuffer *buffer,
g_return_if_fail (end != NULL);
g_return_if_fail (gtk_text_iter_get_buffer (start) ==
gtk_text_iter_get_buffer (end));
- g_return_if_fail (gtk_text_iter_get_buffer (start)->tag_table ==
- buffer->tag_table);
+ g_return_if_fail (gtk_text_iter_get_buffer (start)->priv->tag_table ==
+ buffer->priv->tag_table);
g_return_if_fail (gtk_text_iter_get_buffer (iter) == buffer);
gtk_text_buffer_real_insert_range (buffer, iter, start, end, FALSE);
@@ -1434,8 +1459,8 @@ gtk_text_buffer_insert_range_interactive (GtkTextBuffer *buffer,
g_return_val_if_fail (end != NULL, FALSE);
g_return_val_if_fail (gtk_text_iter_get_buffer (start) ==
gtk_text_iter_get_buffer (end), FALSE);
- g_return_val_if_fail (gtk_text_iter_get_buffer (start)->tag_table ==
- buffer->tag_table, FALSE);
+ g_return_val_if_fail (gtk_text_iter_get_buffer (start)->priv->tag_table ==
+ buffer->priv->tag_table, FALSE);
if (gtk_text_iter_can_insert (iter, default_editable))
{
@@ -1545,7 +1570,7 @@ gtk_text_buffer_insert_with_tags_by_name (GtkTextBuffer *buffer,
{
GtkTextTag *tag;
- tag = gtk_text_tag_table_lookup (buffer->tag_table,
+ tag = gtk_text_tag_table_lookup (buffer->priv->tag_table,
tag_name);
if (tag == NULL)
@@ -1585,9 +1610,9 @@ gtk_text_buffer_real_delete_range (GtkTextBuffer *buffer,
update_selection_clipboards (buffer);
has_selection = gtk_text_buffer_get_selection_bounds (buffer, NULL, NULL);
- if (has_selection != buffer->has_selection)
+ if (has_selection != buffer->priv->has_selection)
{
- buffer->has_selection = has_selection;
+ buffer->priv->has_selection = has_selection;
g_object_notify (G_OBJECT (buffer), "has-selection");
}
@@ -2481,7 +2506,7 @@ gtk_text_buffer_real_apply_tag (GtkTextBuffer *buffer,
const GtkTextIter *start,
const GtkTextIter *end)
{
- if (tag->table != buffer->tag_table)
+ if (tag->table != buffer->priv->tag_table)
{
g_warning ("Can only apply tags that are in the tag table for the buffer");
return;
@@ -2496,7 +2521,7 @@ gtk_text_buffer_real_remove_tag (GtkTextBuffer *buffer,
const GtkTextIter *start,
const GtkTextIter *end)
{
- if (tag->table != buffer->tag_table)
+ if (tag->table != buffer->priv->tag_table)
{
g_warning ("Can only remove tags that are in the tag table for the buffer");
return;
@@ -2530,9 +2555,9 @@ gtk_text_buffer_real_mark_set (GtkTextBuffer *buffer,
NULL,
NULL);
- if (has_selection != buffer->has_selection)
+ if (has_selection != buffer->priv->has_selection)
{
- buffer->has_selection = has_selection;
+ buffer->priv->has_selection = has_selection;
g_object_notify (G_OBJECT (buffer), "has-selection");
}
}
@@ -2588,7 +2613,7 @@ gtk_text_buffer_apply_tag (GtkTextBuffer *buffer,
g_return_if_fail (end != NULL);
g_return_if_fail (gtk_text_iter_get_buffer (start) == buffer);
g_return_if_fail (gtk_text_iter_get_buffer (end) == buffer);
- g_return_if_fail (tag->table == buffer->tag_table);
+ g_return_if_fail (tag->table == buffer->priv->tag_table);
gtk_text_buffer_emit_tag (buffer, tag, TRUE, start, end);
}
@@ -2617,7 +2642,7 @@ gtk_text_buffer_remove_tag (GtkTextBuffer *buffer,
g_return_if_fail (end != NULL);
g_return_if_fail (gtk_text_iter_get_buffer (start) == buffer);
g_return_if_fail (gtk_text_iter_get_buffer (end) == buffer);
- g_return_if_fail (tag->table == buffer->tag_table);
+ g_return_if_fail (tag->table == buffer->priv->tag_table);
gtk_text_buffer_emit_tag (buffer, tag, FALSE, start, end);
}
@@ -2999,7 +3024,7 @@ gtk_text_buffer_get_modified (GtkTextBuffer *buffer)
{
g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), FALSE);
- return buffer->modified;
+ return buffer->priv->modified;
}
/**
@@ -3023,11 +3048,11 @@ gtk_text_buffer_set_modified (GtkTextBuffer *buffer,
fixed_setting = setting != FALSE;
- if (buffer->modified == fixed_setting)
+ if (buffer->priv->modified == fixed_setting)
return;
else
{
- buffer->modified = fixed_setting;
+ buffer->priv->modified = fixed_setting;
g_signal_emit (buffer, signals[MODIFIED_CHANGED], 0);
}
}
@@ -3047,7 +3072,7 @@ gtk_text_buffer_get_has_selection (GtkTextBuffer *buffer)
{
g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), FALSE);
- return buffer->has_selection;
+ return buffer->priv->has_selection;
}
@@ -3594,9 +3619,9 @@ static void
update_selection_clipboards (GtkTextBuffer *buffer)
{
GtkTextBufferPrivate *priv;
- GSList *tmp_list = buffer->selection_clipboards;
+ GSList *tmp_list = buffer->priv->selection_clipboards;
- priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer);
+ priv = buffer->priv;
gtk_text_buffer_get_copy_target_list (buffer);
@@ -3638,7 +3663,7 @@ static SelectionClipboard *
find_selection_clipboard (GtkTextBuffer *buffer,
GtkClipboard *clipboard)
{
- GSList *tmp_list = buffer->selection_clipboards;
+ GSList *tmp_list = buffer->priv->selection_clipboards;
while (tmp_list)
{
SelectionClipboard *selection_clipboard = tmp_list->data;
@@ -3681,7 +3706,8 @@ gtk_text_buffer_add_selection_clipboard (GtkTextBuffer *buffer,
selection_clipboard->clipboard = clipboard;
selection_clipboard->ref_count = 1;
- buffer->selection_clipboards = g_slist_prepend (buffer->selection_clipboards, selection_clipboard);
+ buffer->priv->selection_clipboards = g_slist_prepend (buffer->priv->selection_clipboards,
+ selection_clipboard);
}
}
@@ -3712,8 +3738,8 @@ gtk_text_buffer_remove_selection_clipboard (GtkTextBuffer *buffer,
if (gtk_clipboard_get_owner (selection_clipboard->clipboard) == G_OBJECT (buffer))
gtk_clipboard_clear (selection_clipboard->clipboard);
- buffer->selection_clipboards = g_slist_remove (buffer->selection_clipboards,
- selection_clipboard);
+ buffer->priv->selection_clipboards = g_slist_remove (buffer->priv->selection_clipboards,
+ selection_clipboard);
g_free (selection_clipboard);
}
@@ -3722,9 +3748,11 @@ gtk_text_buffer_remove_selection_clipboard (GtkTextBuffer *buffer,
static void
remove_all_selection_clipboards (GtkTextBuffer *buffer)
{
- g_slist_foreach (buffer->selection_clipboards, (GFunc)g_free, NULL);
- g_slist_free (buffer->selection_clipboards);
- buffer->selection_clipboards = NULL;
+ GtkTextBufferPrivate *priv = buffer->priv;
+
+ g_slist_foreach (priv->selection_clipboards, (GFunc)g_free, NULL);
+ g_slist_free (priv->selection_clipboards);
+ priv->selection_clipboards = NULL;
}
/**
@@ -3933,7 +3961,7 @@ cut_or_copy (GtkTextBuffer *buffer,
GtkTextIter start;
GtkTextIter end;
- priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer);
+ priv = buffer->priv;
gtk_text_buffer_get_copy_target_list (buffer);
@@ -4070,9 +4098,9 @@ gtk_text_buffer_begin_user_action (GtkTextBuffer *buffer)
{
g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));
- buffer->user_action_count += 1;
+ buffer->priv->user_action_count += 1;
- if (buffer->user_action_count == 1)
+ if (buffer->priv->user_action_count == 1)
{
/* Outermost nested user action begin emits the signal */
g_signal_emit (buffer, signals[BEGIN_USER_ACTION], 0);
@@ -4090,11 +4118,11 @@ void
gtk_text_buffer_end_user_action (GtkTextBuffer *buffer)
{
g_return_if_fail (GTK_IS_TEXT_BUFFER (buffer));
- g_return_if_fail (buffer->user_action_count > 0);
+ g_return_if_fail (buffer->priv->user_action_count > 0);
- buffer->user_action_count -= 1;
+ buffer->priv->user_action_count -= 1;
- if (buffer->user_action_count == 0)
+ if (buffer->priv->user_action_count == 0)
{
/* Ended the outermost-nested user action end, so emit the signal */
g_signal_emit (buffer, signals[END_USER_ACTION], 0);
@@ -4104,7 +4132,7 @@ gtk_text_buffer_end_user_action (GtkTextBuffer *buffer)
static void
gtk_text_buffer_free_target_lists (GtkTextBuffer *buffer)
{
- GtkTextBufferPrivate *priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer);
+ GtkTextBufferPrivate *priv = buffer->priv;
if (priv->copy_target_list)
{
@@ -4178,7 +4206,7 @@ gtk_text_buffer_get_copy_target_list (GtkTextBuffer *buffer)
g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), NULL);
- priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer);
+ priv = buffer->priv;
if (! priv->copy_target_list)
priv->copy_target_list =
@@ -4210,7 +4238,7 @@ gtk_text_buffer_get_paste_target_list (GtkTextBuffer *buffer)
g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), NULL);
- priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer);
+ priv = buffer->priv;
if (! priv->paste_target_list)
priv->paste_target_list =
@@ -4312,6 +4340,7 @@ _gtk_text_buffer_get_line_log_attrs (GtkTextBuffer *buffer,
const GtkTextIter *anywhere_in_line,
gint *char_len)
{
+ GtkTextBufferPrivate *priv;
gint line;
GtkTextLogAttrCache *cache;
gint i;
@@ -4319,6 +4348,8 @@ _gtk_text_buffer_get_line_log_attrs (GtkTextBuffer *buffer,
g_return_val_if_fail (GTK_IS_TEXT_BUFFER (buffer), NULL);
g_return_val_if_fail (anywhere_in_line != NULL, NULL);
+ priv = buffer->priv;
+
/* special-case for empty last line in buffer */
if (gtk_text_iter_is_end (anywhere_in_line) &&
gtk_text_iter_get_line_offset (anywhere_in_line) == 0)
@@ -4332,19 +4363,19 @@ _gtk_text_buffer_get_line_log_attrs (GtkTextBuffer *buffer,
* the start of a paragraph changes
*/
- if (buffer->log_attr_cache == NULL)
+ if (priv->log_attr_cache == NULL)
{
- buffer->log_attr_cache = g_new0 (GtkTextLogAttrCache, 1);
- buffer->log_attr_cache->chars_changed_stamp =
+ priv->log_attr_cache = g_new0 (GtkTextLogAttrCache, 1);
+ priv->log_attr_cache->chars_changed_stamp =
_gtk_text_btree_get_chars_changed_stamp (get_btree (buffer));
}
- else if (buffer->log_attr_cache->chars_changed_stamp !=
+ else if (priv->log_attr_cache->chars_changed_stamp !=
_gtk_text_btree_get_chars_changed_stamp (get_btree (buffer)))
{
- clear_log_attr_cache (buffer->log_attr_cache);
+ clear_log_attr_cache (priv->log_attr_cache);
}
- cache = buffer->log_attr_cache;
+ cache = priv->log_attr_cache;
line = gtk_text_iter_get_line (anywhere_in_line);
i = 0;
@@ -4385,8 +4416,8 @@ _gtk_text_buffer_notify_will_remove_tag (GtkTextBuffer *buffer,
* code messing things up at this point; the tag MUST be removed
* entirely.
*/
- if (buffer->btree)
- _gtk_text_btree_notify_will_remove_tag (buffer->btree, tag);
+ if (buffer->priv->btree)
+ _gtk_text_btree_notify_will_remove_tag (buffer->priv->btree, tag);
}
/*
diff --git a/gtk/gtktextbuffer.h b/gtk/gtktextbuffer.h
index 3a773e50ea..e9b6e9716c 100644
--- a/gtk/gtktextbuffer.h
+++ b/gtk/gtktextbuffer.h
@@ -60,8 +60,6 @@ typedef enum
typedef struct _GtkTextBTree GtkTextBTree;
-typedef struct _GtkTextLogAttrCache GtkTextLogAttrCache;
-
#define GTK_TYPE_TEXT_BUFFER (gtk_text_buffer_get_type ())
#define GTK_TEXT_BUFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), GTK_TYPE_TEXT_BUFFER, GtkTextBuffer))
#define GTK_TEXT_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), GTK_TYPE_TEXT_BUFFER, GtkTextBufferClass))
@@ -69,26 +67,14 @@ typedef struct _GtkTextLogAttrCache GtkTextLogAttrCache;
#define GTK_IS_TEXT_BUFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), GTK_TYPE_TEXT_BUFFER))
#define GTK_TEXT_BUFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), GTK_TYPE_TEXT_BUFFER, GtkTextBufferClass))
+typedef struct _GtkTextBufferPrivate GtkTextBufferPrivate;
typedef struct _GtkTextBufferClass GtkTextBufferClass;
struct _GtkTextBuffer
{
GObject parent_instance;
- GtkTextTagTable *GSEAL (tag_table);
- GtkTextBTree *GSEAL (btree);
-
- GSList *GSEAL (clipboard_contents_buffers);
- GSList *GSEAL (selection_clipboards);
-
- GtkTextLogAttrCache *GSEAL (log_attr_cache);
-
- guint GSEAL (user_action_count);
-
- /* Whether the buffer has been modified since last save */
- guint GSEAL (modified) : 1;
-
- guint GSEAL (has_selection) : 1;
+ GtkTextBufferPrivate *priv;
};
struct _GtkTextBufferClass
diff --git a/gtk/gtktextbufferserialize.c b/gtk/gtktextbufferserialize.c
index b6948e9d5d..76040f25c3 100644
--- a/gtk/gtktextbufferserialize.c
+++ b/gtk/gtktextbufferserialize.c
@@ -997,8 +997,11 @@ tag_exists (GMarkupParseContext *context,
ParseInfo *info,
GError **error)
{
+ GtkTextTagTable *tag_table;
const gchar *real_name;
+ tag_table = gtk_text_buffer_get_tag_table (info->buffer);
+
if (info->create_tags)
{
/* If we have an anonymous tag, just return it directly */
@@ -1010,11 +1013,11 @@ tag_exists (GMarkupParseContext *context,
real_name = g_hash_table_lookup (info->substitutions, name);
if (real_name)
- return gtk_text_tag_table_lookup (info->buffer->tag_table, real_name);
+ return gtk_text_tag_table_lookup (tag_table, real_name);
/* Next, try the list of defined tags */
if (g_hash_table_lookup (info->defined_tags, name) != NULL)
- return gtk_text_tag_table_lookup (info->buffer->tag_table, name);
+ return gtk_text_tag_table_lookup (tag_table, name);
set_error (error, context,
G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
@@ -1034,7 +1037,7 @@ tag_exists (GMarkupParseContext *context,
return NULL;
}
- tag = gtk_text_tag_table_lookup (info->buffer->tag_table, name);
+ tag = gtk_text_tag_table_lookup (tag_table, name);
if (tag)
return tag;
@@ -1225,6 +1228,7 @@ static gchar *
get_tag_name (ParseInfo *info,
const gchar *tag_name)
{
+ GtkTextTagTable *tag_table;
gchar *name;
gint i;
@@ -1234,8 +1238,9 @@ get_tag_name (ParseInfo *info,
return name;
i = 0;
+ tag_table = gtk_text_buffer_get_tag_table (info->buffer);
- while (gtk_text_tag_table_lookup (info->buffer->tag_table, name) != NULL)
+ while (gtk_text_tag_table_lookup (tag_table, name) != NULL)
{
g_free (name);
name = g_strdup_printf ("%s-%d", tag_name, ++i);
@@ -1454,7 +1459,8 @@ end_element_handler (GMarkupParseContext *context,
TextTagPrio *prio = list->data;
if (info->create_tags)
- gtk_text_tag_table_add (info->buffer->tag_table, prio->tag);
+ gtk_text_tag_table_add (gtk_text_buffer_get_tag_table (info->buffer),
+ prio->tag);
g_object_unref (prio->tag);
prio->tag = NULL;