[gtksourceview] Correctly scan all regions when removing a range
- From: Jesse van den Kieboom <jessevdk src gnome org>
- To: svn-commits-list gnome org
- Cc: 
- Subject: [gtksourceview] Correctly scan all regions when removing a range
- Date: Sat, 28 Nov 2009 23:01:11 +0000 (UTC)
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]