Move GtkTextBuffer sealed attributes to private struct.
This commit is contained in:
@@ -44,7 +44,7 @@
|
|||||||
|
|
||||||
#define GTK_TEXT_BUFFER_GET_PRIVATE(obj) (G_TYPE_INSTANCE_GET_PRIVATE ((obj), GTK_TYPE_TEXT_BUFFER, GtkTextBufferPrivate))
|
#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
|
struct _GtkTextBufferPrivate
|
||||||
{
|
{
|
||||||
@@ -55,6 +55,21 @@ struct _GtkTextBufferPrivate
|
|||||||
GtkTargetList *paste_target_list;
|
GtkTargetList *paste_target_list;
|
||||||
GtkTargetEntry *paste_target_entries;
|
GtkTargetEntry *paste_target_entries;
|
||||||
gint n_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
|
static void
|
||||||
gtk_text_buffer_init (GtkTextBuffer *buffer)
|
gtk_text_buffer_init (GtkTextBuffer *buffer)
|
||||||
{
|
{
|
||||||
buffer->clipboard_contents_buffers = NULL;
|
buffer->priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer);
|
||||||
buffer->tag_table = NULL;
|
|
||||||
|
buffer->priv->clipboard_contents_buffers = NULL;
|
||||||
|
buffer->priv->tag_table = NULL;
|
||||||
|
|
||||||
/* allow copying of arbiatray stuff in the internal rich text format */
|
/* allow copying of arbiatray stuff in the internal rich text format */
|
||||||
gtk_text_buffer_register_serialize_tagset (buffer, NULL);
|
gtk_text_buffer_register_serialize_tagset (buffer, NULL);
|
||||||
@@ -618,12 +635,14 @@ gtk_text_buffer_init (GtkTextBuffer *buffer)
|
|||||||
static void
|
static void
|
||||||
set_table (GtkTextBuffer *buffer, GtkTextTagTable *table)
|
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)
|
if (table)
|
||||||
{
|
{
|
||||||
buffer->tag_table = table;
|
priv->tag_table = table;
|
||||||
g_object_ref (buffer->tag_table);
|
g_object_ref (priv->tag_table);
|
||||||
_gtk_text_tag_table_add_buffer (table, buffer);
|
_gtk_text_tag_table_add_buffer (table, buffer);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -631,13 +650,15 @@ set_table (GtkTextBuffer *buffer, GtkTextTagTable *table)
|
|||||||
static GtkTextTagTable*
|
static GtkTextTagTable*
|
||||||
get_table (GtkTextBuffer *buffer)
|
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 ();
|
priv->tag_table = gtk_text_tag_table_new ();
|
||||||
_gtk_text_tag_table_add_buffer (buffer->tag_table, buffer);
|
_gtk_text_tag_table_add_buffer (priv->tag_table, buffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
return buffer->tag_table;
|
return priv->tag_table;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
@@ -698,7 +719,7 @@ gtk_text_buffer_get_property (GObject *object,
|
|||||||
}
|
}
|
||||||
|
|
||||||
case PROP_HAS_SELECTION:
|
case PROP_HAS_SELECTION:
|
||||||
g_value_set_boolean (value, text_buffer->has_selection);
|
g_value_set_boolean (value, text_buffer->priv->has_selection);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case PROP_CURSOR_POSITION:
|
case PROP_CURSOR_POSITION:
|
||||||
@@ -754,28 +775,30 @@ static void
|
|||||||
gtk_text_buffer_finalize (GObject *object)
|
gtk_text_buffer_finalize (GObject *object)
|
||||||
{
|
{
|
||||||
GtkTextBuffer *buffer;
|
GtkTextBuffer *buffer;
|
||||||
|
GtkTextBufferPrivate *priv;
|
||||||
|
|
||||||
buffer = GTK_TEXT_BUFFER (object);
|
buffer = GTK_TEXT_BUFFER (object);
|
||||||
|
priv = buffer->priv;
|
||||||
|
|
||||||
remove_all_selection_clipboards (buffer);
|
remove_all_selection_clipboards (buffer);
|
||||||
|
|
||||||
if (buffer->tag_table)
|
if (priv->tag_table)
|
||||||
{
|
{
|
||||||
_gtk_text_tag_table_remove_buffer (buffer->tag_table, buffer);
|
_gtk_text_tag_table_remove_buffer (priv->tag_table, buffer);
|
||||||
g_object_unref (buffer->tag_table);
|
g_object_unref (priv->tag_table);
|
||||||
buffer->tag_table = NULL;
|
priv->tag_table = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buffer->btree)
|
if (priv->btree)
|
||||||
{
|
{
|
||||||
_gtk_text_btree_unref (buffer->btree);
|
_gtk_text_btree_unref (priv->btree);
|
||||||
buffer->btree = NULL;
|
priv->btree = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (buffer->log_attr_cache)
|
if (priv->log_attr_cache)
|
||||||
free_log_attr_cache (buffer->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);
|
gtk_text_buffer_free_target_lists (buffer);
|
||||||
|
|
||||||
@@ -785,11 +808,13 @@ gtk_text_buffer_finalize (GObject *object)
|
|||||||
static GtkTextBTree*
|
static GtkTextBTree*
|
||||||
get_btree (GtkTextBuffer *buffer)
|
get_btree (GtkTextBuffer *buffer)
|
||||||
{
|
{
|
||||||
if (buffer->btree == NULL)
|
GtkTextBufferPrivate *priv = buffer->priv;
|
||||||
buffer->btree = _gtk_text_btree_new (gtk_text_buffer_get_tag_table (buffer),
|
|
||||||
buffer);
|
|
||||||
|
|
||||||
return buffer->btree;
|
if (priv->btree == NULL)
|
||||||
|
priv->btree = _gtk_text_btree_new (gtk_text_buffer_get_tag_table (buffer),
|
||||||
|
buffer);
|
||||||
|
|
||||||
|
return priv->btree;
|
||||||
}
|
}
|
||||||
|
|
||||||
GtkTextBTree*
|
GtkTextBTree*
|
||||||
@@ -1398,8 +1423,8 @@ gtk_text_buffer_insert_range (GtkTextBuffer *buffer,
|
|||||||
g_return_if_fail (end != NULL);
|
g_return_if_fail (end != NULL);
|
||||||
g_return_if_fail (gtk_text_iter_get_buffer (start) ==
|
g_return_if_fail (gtk_text_iter_get_buffer (start) ==
|
||||||
gtk_text_iter_get_buffer (end));
|
gtk_text_iter_get_buffer (end));
|
||||||
g_return_if_fail (gtk_text_iter_get_buffer (start)->tag_table ==
|
g_return_if_fail (gtk_text_iter_get_buffer (start)->priv->tag_table ==
|
||||||
buffer->tag_table);
|
buffer->priv->tag_table);
|
||||||
g_return_if_fail (gtk_text_iter_get_buffer (iter) == buffer);
|
g_return_if_fail (gtk_text_iter_get_buffer (iter) == buffer);
|
||||||
|
|
||||||
gtk_text_buffer_real_insert_range (buffer, iter, start, end, FALSE);
|
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 (end != NULL, FALSE);
|
||||||
g_return_val_if_fail (gtk_text_iter_get_buffer (start) ==
|
g_return_val_if_fail (gtk_text_iter_get_buffer (start) ==
|
||||||
gtk_text_iter_get_buffer (end), FALSE);
|
gtk_text_iter_get_buffer (end), FALSE);
|
||||||
g_return_val_if_fail (gtk_text_iter_get_buffer (start)->tag_table ==
|
g_return_val_if_fail (gtk_text_iter_get_buffer (start)->priv->tag_table ==
|
||||||
buffer->tag_table, FALSE);
|
buffer->priv->tag_table, FALSE);
|
||||||
|
|
||||||
if (gtk_text_iter_can_insert (iter, default_editable))
|
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;
|
GtkTextTag *tag;
|
||||||
|
|
||||||
tag = gtk_text_tag_table_lookup (buffer->tag_table,
|
tag = gtk_text_tag_table_lookup (buffer->priv->tag_table,
|
||||||
tag_name);
|
tag_name);
|
||||||
|
|
||||||
if (tag == NULL)
|
if (tag == NULL)
|
||||||
@@ -1585,9 +1610,9 @@ gtk_text_buffer_real_delete_range (GtkTextBuffer *buffer,
|
|||||||
update_selection_clipboards (buffer);
|
update_selection_clipboards (buffer);
|
||||||
|
|
||||||
has_selection = gtk_text_buffer_get_selection_bounds (buffer, NULL, NULL);
|
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");
|
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 *start,
|
||||||
const GtkTextIter *end)
|
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");
|
g_warning ("Can only apply tags that are in the tag table for the buffer");
|
||||||
return;
|
return;
|
||||||
@@ -2496,7 +2521,7 @@ gtk_text_buffer_real_remove_tag (GtkTextBuffer *buffer,
|
|||||||
const GtkTextIter *start,
|
const GtkTextIter *start,
|
||||||
const GtkTextIter *end)
|
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");
|
g_warning ("Can only remove tags that are in the tag table for the buffer");
|
||||||
return;
|
return;
|
||||||
@@ -2530,9 +2555,9 @@ gtk_text_buffer_real_mark_set (GtkTextBuffer *buffer,
|
|||||||
NULL,
|
NULL,
|
||||||
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");
|
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 (end != NULL);
|
||||||
g_return_if_fail (gtk_text_iter_get_buffer (start) == buffer);
|
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 (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);
|
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 (end != NULL);
|
||||||
g_return_if_fail (gtk_text_iter_get_buffer (start) == buffer);
|
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 (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);
|
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);
|
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;
|
fixed_setting = setting != FALSE;
|
||||||
|
|
||||||
if (buffer->modified == fixed_setting)
|
if (buffer->priv->modified == fixed_setting)
|
||||||
return;
|
return;
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
buffer->modified = fixed_setting;
|
buffer->priv->modified = fixed_setting;
|
||||||
g_signal_emit (buffer, signals[MODIFIED_CHANGED], 0);
|
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);
|
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)
|
update_selection_clipboards (GtkTextBuffer *buffer)
|
||||||
{
|
{
|
||||||
GtkTextBufferPrivate *priv;
|
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);
|
gtk_text_buffer_get_copy_target_list (buffer);
|
||||||
|
|
||||||
@@ -3638,7 +3663,7 @@ static SelectionClipboard *
|
|||||||
find_selection_clipboard (GtkTextBuffer *buffer,
|
find_selection_clipboard (GtkTextBuffer *buffer,
|
||||||
GtkClipboard *clipboard)
|
GtkClipboard *clipboard)
|
||||||
{
|
{
|
||||||
GSList *tmp_list = buffer->selection_clipboards;
|
GSList *tmp_list = buffer->priv->selection_clipboards;
|
||||||
while (tmp_list)
|
while (tmp_list)
|
||||||
{
|
{
|
||||||
SelectionClipboard *selection_clipboard = tmp_list->data;
|
SelectionClipboard *selection_clipboard = tmp_list->data;
|
||||||
@@ -3681,7 +3706,8 @@ gtk_text_buffer_add_selection_clipboard (GtkTextBuffer *buffer,
|
|||||||
selection_clipboard->clipboard = clipboard;
|
selection_clipboard->clipboard = clipboard;
|
||||||
selection_clipboard->ref_count = 1;
|
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))
|
if (gtk_clipboard_get_owner (selection_clipboard->clipboard) == G_OBJECT (buffer))
|
||||||
gtk_clipboard_clear (selection_clipboard->clipboard);
|
gtk_clipboard_clear (selection_clipboard->clipboard);
|
||||||
|
|
||||||
buffer->selection_clipboards = g_slist_remove (buffer->selection_clipboards,
|
buffer->priv->selection_clipboards = g_slist_remove (buffer->priv->selection_clipboards,
|
||||||
selection_clipboard);
|
selection_clipboard);
|
||||||
|
|
||||||
g_free (selection_clipboard);
|
g_free (selection_clipboard);
|
||||||
}
|
}
|
||||||
@@ -3722,9 +3748,11 @@ gtk_text_buffer_remove_selection_clipboard (GtkTextBuffer *buffer,
|
|||||||
static void
|
static void
|
||||||
remove_all_selection_clipboards (GtkTextBuffer *buffer)
|
remove_all_selection_clipboards (GtkTextBuffer *buffer)
|
||||||
{
|
{
|
||||||
g_slist_foreach (buffer->selection_clipboards, (GFunc)g_free, NULL);
|
GtkTextBufferPrivate *priv = buffer->priv;
|
||||||
g_slist_free (buffer->selection_clipboards);
|
|
||||||
buffer->selection_clipboards = NULL;
|
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 start;
|
||||||
GtkTextIter end;
|
GtkTextIter end;
|
||||||
|
|
||||||
priv = GTK_TEXT_BUFFER_GET_PRIVATE (buffer);
|
priv = buffer->priv;
|
||||||
|
|
||||||
gtk_text_buffer_get_copy_target_list (buffer);
|
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));
|
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 */
|
/* Outermost nested user action begin emits the signal */
|
||||||
g_signal_emit (buffer, signals[BEGIN_USER_ACTION], 0);
|
g_signal_emit (buffer, signals[BEGIN_USER_ACTION], 0);
|
||||||
@@ -4090,11 +4118,11 @@ void
|
|||||||
gtk_text_buffer_end_user_action (GtkTextBuffer *buffer)
|
gtk_text_buffer_end_user_action (GtkTextBuffer *buffer)
|
||||||
{
|
{
|
||||||
g_return_if_fail (GTK_IS_TEXT_BUFFER (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 */
|
/* Ended the outermost-nested user action end, so emit the signal */
|
||||||
g_signal_emit (buffer, signals[END_USER_ACTION], 0);
|
g_signal_emit (buffer, signals[END_USER_ACTION], 0);
|
||||||
@@ -4104,7 +4132,7 @@ gtk_text_buffer_end_user_action (GtkTextBuffer *buffer)
|
|||||||
static void
|
static void
|
||||||
gtk_text_buffer_free_target_lists (GtkTextBuffer *buffer)
|
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)
|
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);
|
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)
|
if (! priv->copy_target_list)
|
||||||
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);
|
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)
|
if (! priv->paste_target_list)
|
||||||
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,
|
const GtkTextIter *anywhere_in_line,
|
||||||
gint *char_len)
|
gint *char_len)
|
||||||
{
|
{
|
||||||
|
GtkTextBufferPrivate *priv;
|
||||||
gint line;
|
gint line;
|
||||||
GtkTextLogAttrCache *cache;
|
GtkTextLogAttrCache *cache;
|
||||||
gint i;
|
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 (GTK_IS_TEXT_BUFFER (buffer), NULL);
|
||||||
g_return_val_if_fail (anywhere_in_line != NULL, NULL);
|
g_return_val_if_fail (anywhere_in_line != NULL, NULL);
|
||||||
|
|
||||||
|
priv = buffer->priv;
|
||||||
|
|
||||||
/* special-case for empty last line in buffer */
|
/* special-case for empty last line in buffer */
|
||||||
if (gtk_text_iter_is_end (anywhere_in_line) &&
|
if (gtk_text_iter_is_end (anywhere_in_line) &&
|
||||||
gtk_text_iter_get_line_offset (anywhere_in_line) == 0)
|
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
|
* 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);
|
priv->log_attr_cache = g_new0 (GtkTextLogAttrCache, 1);
|
||||||
buffer->log_attr_cache->chars_changed_stamp =
|
priv->log_attr_cache->chars_changed_stamp =
|
||||||
_gtk_text_btree_get_chars_changed_stamp (get_btree (buffer));
|
_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)))
|
_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);
|
line = gtk_text_iter_get_line (anywhere_in_line);
|
||||||
|
|
||||||
i = 0;
|
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
|
* code messing things up at this point; the tag MUST be removed
|
||||||
* entirely.
|
* entirely.
|
||||||
*/
|
*/
|
||||||
if (buffer->btree)
|
if (buffer->priv->btree)
|
||||||
_gtk_text_btree_notify_will_remove_tag (buffer->btree, tag);
|
_gtk_text_btree_notify_will_remove_tag (buffer->priv->btree, tag);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|||||||
@@ -60,8 +60,6 @@ typedef enum
|
|||||||
|
|
||||||
typedef struct _GtkTextBTree GtkTextBTree;
|
typedef struct _GtkTextBTree GtkTextBTree;
|
||||||
|
|
||||||
typedef struct _GtkTextLogAttrCache GtkTextLogAttrCache;
|
|
||||||
|
|
||||||
#define GTK_TYPE_TEXT_BUFFER (gtk_text_buffer_get_type ())
|
#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(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))
|
#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_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))
|
#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;
|
typedef struct _GtkTextBufferClass GtkTextBufferClass;
|
||||||
|
|
||||||
struct _GtkTextBuffer
|
struct _GtkTextBuffer
|
||||||
{
|
{
|
||||||
GObject parent_instance;
|
GObject parent_instance;
|
||||||
|
|
||||||
GtkTextTagTable *GSEAL (tag_table);
|
GtkTextBufferPrivate *priv;
|
||||||
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;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct _GtkTextBufferClass
|
struct _GtkTextBufferClass
|
||||||
|
|||||||
@@ -997,8 +997,11 @@ tag_exists (GMarkupParseContext *context,
|
|||||||
ParseInfo *info,
|
ParseInfo *info,
|
||||||
GError **error)
|
GError **error)
|
||||||
{
|
{
|
||||||
|
GtkTextTagTable *tag_table;
|
||||||
const gchar *real_name;
|
const gchar *real_name;
|
||||||
|
|
||||||
|
tag_table = gtk_text_buffer_get_tag_table (info->buffer);
|
||||||
|
|
||||||
if (info->create_tags)
|
if (info->create_tags)
|
||||||
{
|
{
|
||||||
/* If we have an anonymous tag, just return it directly */
|
/* 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);
|
real_name = g_hash_table_lookup (info->substitutions, name);
|
||||||
|
|
||||||
if (real_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 */
|
/* Next, try the list of defined tags */
|
||||||
if (g_hash_table_lookup (info->defined_tags, name) != NULL)
|
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,
|
set_error (error, context,
|
||||||
G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
|
G_MARKUP_ERROR, G_MARKUP_ERROR_PARSE,
|
||||||
@@ -1034,7 +1037,7 @@ tag_exists (GMarkupParseContext *context,
|
|||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
tag = gtk_text_tag_table_lookup (info->buffer->tag_table, name);
|
tag = gtk_text_tag_table_lookup (tag_table, name);
|
||||||
|
|
||||||
if (tag)
|
if (tag)
|
||||||
return tag;
|
return tag;
|
||||||
@@ -1225,6 +1228,7 @@ static gchar *
|
|||||||
get_tag_name (ParseInfo *info,
|
get_tag_name (ParseInfo *info,
|
||||||
const gchar *tag_name)
|
const gchar *tag_name)
|
||||||
{
|
{
|
||||||
|
GtkTextTagTable *tag_table;
|
||||||
gchar *name;
|
gchar *name;
|
||||||
gint i;
|
gint i;
|
||||||
|
|
||||||
@@ -1234,8 +1238,9 @@ get_tag_name (ParseInfo *info,
|
|||||||
return name;
|
return name;
|
||||||
|
|
||||||
i = 0;
|
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);
|
g_free (name);
|
||||||
name = g_strdup_printf ("%s-%d", tag_name, ++i);
|
name = g_strdup_printf ("%s-%d", tag_name, ++i);
|
||||||
@@ -1454,7 +1459,8 @@ end_element_handler (GMarkupParseContext *context,
|
|||||||
TextTagPrio *prio = list->data;
|
TextTagPrio *prio = list->data;
|
||||||
|
|
||||||
if (info->create_tags)
|
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);
|
g_object_unref (prio->tag);
|
||||||
prio->tag = NULL;
|
prio->tag = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user