[brasero] Fixes for BraseroTrackDataCfg when it's used as a GtkTreeModel



commit 75aaa4595c3d6535fa6600da79d024cc7a600b82
Author: Philippe Rouquier <bonfire-app wanadoo fr>
Date:   Wed Jul 15 20:12:00 2009 +0200

    Fixes for BraseroTrackDataCfg when it's used as a GtkTreeModel

 libbrasero-burn/brasero-track-data-cfg.c |   32 +++++++++++++++++++++--------
 1 files changed, 23 insertions(+), 9 deletions(-)
---
diff --git a/libbrasero-burn/brasero-track-data-cfg.c b/libbrasero-burn/brasero-track-data-cfg.c
index 6c902c8..4550702 100644
--- a/libbrasero-burn/brasero-track-data-cfg.c
+++ b/libbrasero-burn/brasero-track-data-cfg.c
@@ -225,7 +225,7 @@ brasero_track_data_cfg_nth_child (BraseroFileNode *parent,
 				  guint nth)
 {
 	BraseroFileNode *peers;
-	guint pos;
+	gint pos;
 
 	if (!parent)
 		return NULL;
@@ -235,11 +235,11 @@ brasero_track_data_cfg_nth_child (BraseroFileNode *parent,
 		peers = peers->next;
 		
 	for (pos = 0; pos < nth && peers; pos ++) {
-		/* Don't include hidden */
-		if (peers->is_hidden)
-			pos --;
-
 		peers = peers->next;
+
+		/* Skip hidden */
+		while (peers && peers->is_hidden)
+			peers = peers->next;
 	}
 
 	return peers;
@@ -385,14 +385,22 @@ brasero_track_data_cfg_iter_children (GtkTreeModel *model,
 
 	if (!parent) {
 		BraseroFileNode *root;
+		BraseroFileNode *node;
 
 		/* This is for the top directory */
 		root = brasero_data_project_get_root (BRASERO_DATA_PROJECT (priv->tree));
-		if (!root || !brasero_track_data_cfg_get_n_children (root))
+		if (!root)
 			return FALSE;
 
+		node = BRASERO_FILE_NODE_CHILDREN (root);
+		while (node && node->is_hidden)
+			node = node->next;
+
+		if (!node || node->is_hidden)
+			return FALSE;
+
+		iter->user_data = node;
 		iter->stamp = priv->stamp;
-		iter->user_data = BRASERO_FILE_NODE_CHILDREN (root);
 		iter->user_data2 = GINT_TO_POINTER (BRASERO_ROW_REGULAR);
 		return TRUE;
 	}
@@ -449,10 +457,16 @@ brasero_track_data_cfg_iter_next (GtkTreeModel *model,
 	}
 
 	node = iter->user_data;
-	iter->user_data = node->next;
-	if (!node->next || node->next->is_hidden)
+	node = node->next;
+
+	/* skip all hidden files */
+	while (node && node->is_hidden)
+		node = node->next;
+
+	if (!node || node->is_hidden)
 		return FALSE;
 
+	iter->user_data = node;
 	return TRUE;
 }
 



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