[gtksourceview] Correctly scan all regions when removing a range



commit 2e5428c09906a1d5b6c704635cadc5d5aadbe4b4
Author: Jesse van den Kieboom <jessevdk gnome org>
Date:   Sat Nov 28 22:53:57 2009 +0100

    Correctly scan all regions when removing a range
    
    A small bug in not correctly iterating over all the regions in the list when
    the first region in the list was removed.

 .../words/gtksourcecompletionwordsbuffer.c         |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)
---
diff --git a/gtksourceview/completion-providers/words/gtksourcecompletionwordsbuffer.c b/gtksourceview/completion-providers/words/gtksourcecompletionwordsbuffer.c
index 2d3dc58..972b17d 100644
--- a/gtksourceview/completion-providers/words/gtksourcecompletionwordsbuffer.c
+++ b/gtksourceview/completion-providers/words/gtksourcecompletionwordsbuffer.c
@@ -331,7 +331,9 @@ remove_scan_regions (GtkSourceCompletionWordsBuffer *buffer,
 	GList *item;
 	gint span = end - start + 1;
 	
-	for (item = buffer->priv->scan_regions; item; item = g_list_next (item))
+	item = buffer->priv->scan_regions;
+
+	while (item != NULL)
 	{
 		ScanRegion *region = REGION_FROM_LIST (item);
 		
@@ -343,17 +345,19 @@ remove_scan_regions (GtkSourceCompletionWordsBuffer *buffer,
 				GList *remove = item;
 				scan_region_free (region);
 
-				item = g_list_previous (item);
+				item = g_list_next (item);
 			
 				/* Remove whole thing */
 				buffer->priv->scan_regions = 
 					g_list_delete_link (buffer->priv->scan_regions,
 						            remove);
+				continue;
 			}
 			else if (region->start <= end)
 			{
 				/* Top part of region in removed region */
-				region->start = end;
+				region->start = end + 1;
+				region->end -= span;
 			}
 			else
 			{
@@ -371,6 +375,8 @@ remove_scan_regions (GtkSourceCompletionWordsBuffer *buffer,
 		{
 			region->end -= span;
 		}
+
+		item = g_list_next (item);
 	}
 }
 



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