[gtksourceview/gtksourcecompletion] Use 'per buffer' completion mark



commit 057db1b1eaf3634c289db4e5717d281885c83f1e
Author: Jesse van den Kieboom <jessevdk gnome org>
Date:   Mon Sep 28 20:54:32 2009 +0200

    Use 'per buffer' completion mark

 .../words/gtksourcecompletionwords.c               |   44 ++++++--------------
 1 files changed, 13 insertions(+), 31 deletions(-)
---
diff --git a/gtksourceview/completion-providers/words/gtksourcecompletionwords.c b/gtksourceview/completion-providers/words/gtksourcecompletionwords.c
index 970f594..edf7ef1 100644
--- a/gtksourceview/completion-providers/words/gtksourcecompletionwords.c
+++ b/gtksourceview/completion-providers/words/gtksourcecompletionwords.c
@@ -33,6 +33,8 @@
 
 #define BUFFER_KEY "GtkSourceCompletionWordsBufferKey"
 
+#define GET_WORDS_BUFFER(buf) (((BufferBinding *)g_object_get_data(G_OBJECT(buf), BUFFER_KEY))->buffer)
+
 enum
 {
 	PROP_0,
@@ -64,8 +66,6 @@ struct _GtkSourceCompletionWordsPrivate
 	
 	GtkSourceCompletionWordsLibrary *library;
 	GList *buffers;
-	
-	GtkTextMark *completion_mark;
 };
 
 typedef struct
@@ -253,6 +253,7 @@ gtk_source_completion_words_populate (GtkSourceCompletionProvider *provider,
 	GtkTextIter iter;
 	gchar *word;
 	GtkTextBuffer *buffer;
+	GtkSourceCompletionWordsBuffer *buf;
 
 	gtk_source_completion_context_get_iter (context, &iter);
 	buffer = gtk_text_iter_get_buffer (&iter);
@@ -287,20 +288,10 @@ gtk_source_completion_words_populate (GtkSourceCompletionProvider *provider,
 	words->priv->word = word;
 	words->priv->word_len = strlen (word);
 	
-	if (words->priv->completion_mark == NULL)
-	{
-		words->priv->completion_mark =
-			gtk_text_buffer_create_mark (buffer,
-			                             NULL,
-			                             &iter,
-			                             TRUE);
-	}
-	else
-	{
-		gtk_text_buffer_move_mark (buffer,
-		                           words->priv->completion_mark,
-		                           &iter);
-	}
+	buf = GET_WORDS_BUFFER (buffer);
+	gtk_text_buffer_move_mark (buffer,
+	                           gtk_source_completion_words_buffer_get_mark (buf),
+	                           &iter);
 	
 	/* Do first right now */
 	if (add_in_idle (words))
@@ -348,13 +339,6 @@ gtk_source_completion_words_dispose (GObject *object)
 		provider->priv->library = NULL;
 	}
 	
-	if (provider->priv->completion_mark != NULL)
-	{
-		gtk_text_buffer_delete_mark (gtk_text_mark_get_buffer (provider->priv->completion_mark),
-		                             provider->priv->completion_mark);
-		provider->priv->completion_mark = NULL;
-	}
-	
 	G_OBJECT_CLASS (gtk_source_completion_words_parent_class)->dispose (object);
 }
 
@@ -523,17 +507,15 @@ gtk_source_completion_words_get_start_iter (GtkSourceCompletionProvider *provide
                                             GtkSourceCompletionProposal *proposal,
                                             GtkTextIter                 *iter)
 {
-	GtkSourceCompletionWords *words = GTK_SOURCE_COMPLETION_WORDS (provider);
+	GtkTextBuffer *buffer;
+	GtkSourceCompletionWordsBuffer *buf;
 	
-	if (words->priv->completion_mark == NULL ||
-	    gtk_text_mark_get_deleted (words->priv->completion_mark))
-	{
-		return FALSE;
-	}
+	buffer = gtk_text_iter_get_buffer (iter);
+	buf = GET_WORDS_BUFFER (buffer);
 	
-	gtk_text_buffer_get_iter_at_mark (gtk_text_mark_get_buffer (words->priv->completion_mark),
+	gtk_text_buffer_get_iter_at_mark (buffer,
 	                                  iter,
-	                                  words->priv->completion_mark);
+	                                  gtk_source_completion_words_buffer_get_mark (buf));
 	return TRUE;
 }
 



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]