[gtksourceview] Bracket matching: don't store bracket locations in GtkTextMarks
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtksourceview] Bracket matching: don't store bracket locations in GtkTextMarks
- Date: Sat, 24 Oct 2015 12:19:25 +0000 (UTC)
commit bfba91bb17532dc3ab6187eaef80f35347788a8d
Author: Sébastien Wilmet <swilmet gnome org>
Date: Sat Oct 24 14:12:12 2015 +0200
Bracket matching: don't store bracket locations in GtkTextMarks
It was only used to remove the tag, but it's much easier to get the
buffer bounds instead of the mark locations.
gtk_text_buffer_remove_tag() is anyway O(log n), since it searches the
tag toggles in the btree.
gtksourceview/gtksourcebuffer.c | 56 +++-----------------------------------
1 files changed, 5 insertions(+), 51 deletions(-)
---
diff --git a/gtksourceview/gtksourcebuffer.c b/gtksourceview/gtksourcebuffer.c
index c9132ae..804bfbe 100644
--- a/gtksourceview/gtksourcebuffer.c
+++ b/gtksourceview/gtksourcebuffer.c
@@ -173,8 +173,6 @@ enum
struct _GtkSourceBufferPrivate
{
GtkTextTag *bracket_match_tag;
- GtkTextMark *bracket_mark_cursor;
- GtkTextMark *bracket_mark_match;
GtkSourceBracketMatchType bracket_match;
/* Hash table: category -> MarksSequence */
@@ -552,8 +550,6 @@ gtk_source_buffer_init (GtkSourceBuffer *buffer)
priv->highlight_syntax = TRUE;
priv->highlight_brackets = TRUE;
- priv->bracket_mark_cursor = NULL;
- priv->bracket_mark_match = NULL;
priv->bracket_match = GTK_SOURCE_BRACKET_MATCH_NONE;
priv->max_undo_levels = -1;
@@ -905,18 +901,10 @@ gtk_source_buffer_move_cursor (GtkTextBuffer *buffer,
source_buffer = GTK_SOURCE_BUFFER (buffer);
- if (source_buffer->priv->bracket_match == GTK_SOURCE_BRACKET_MATCH_FOUND)
+ if (source_buffer->priv->bracket_match == GTK_SOURCE_BRACKET_MATCH_FOUND &&
+ source_buffer->priv->bracket_match_tag != NULL)
{
- gtk_text_buffer_get_iter_at_mark (buffer,
- &start,
- source_buffer->priv->bracket_mark_match);
-
- gtk_text_buffer_get_iter_at_mark (buffer,
- &end,
- source_buffer->priv->bracket_mark_cursor);
-
- gtk_text_iter_order (&start, &end);
- gtk_text_iter_forward_char (&end);
+ gtk_text_buffer_get_bounds (buffer, &start, &end);
gtk_text_buffer_remove_tag (buffer,
source_buffer->priv->bracket_match_tag,
&start,
@@ -963,52 +951,18 @@ gtk_source_buffer_move_cursor (GtkTextBuffer *buffer,
*/
source_buffer->priv->allow_bracket_match = TRUE;
- /* Mark matching bracket */
- if (source_buffer->priv->bracket_mark_match == NULL)
- {
- source_buffer->priv->bracket_mark_match =
- gtk_text_buffer_create_mark (buffer,
- NULL,
- &bracket_match,
- TRUE);
- }
- else
- {
- gtk_text_buffer_move_mark (buffer,
- source_buffer->priv->bracket_mark_match,
- &bracket_match);
- }
-
- start = bracket_match;
end = bracket_match;
gtk_text_iter_forward_char (&end);
gtk_text_buffer_apply_tag (buffer,
get_bracket_match_tag (source_buffer),
- &start,
+ &bracket_match,
&end);
- /* Mark the bracket near the cursor */
- if (source_buffer->priv->bracket_mark_cursor == NULL)
- {
- source_buffer->priv->bracket_mark_cursor =
- gtk_text_buffer_create_mark (buffer,
- NULL,
- &bracket,
- FALSE);
- }
- else
- {
- gtk_text_buffer_move_mark (buffer,
- source_buffer->priv->bracket_mark_cursor,
- &bracket);
- }
-
- start = bracket;
end = bracket;
gtk_text_iter_forward_char (&end);
gtk_text_buffer_apply_tag (buffer,
get_bracket_match_tag (source_buffer),
- &start,
+ &bracket,
&end);
source_buffer->priv->allow_bracket_match = FALSE;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]