gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r24924 - gnunet-gtk/src/fs


From: gnunet
Subject: [GNUnet-SVN] r24924 - gnunet-gtk/src/fs
Date: Tue, 13 Nov 2012 07:01:08 +0100

Author: LRN
Date: 2012-11-13 07:01:07 +0100 (Tue, 13 Nov 2012)
New Revision: 24924

Modified:
   gnunet-gtk/src/fs/gnunet-fs-gtk_common.c
   gnunet-gtk/src/fs/gnunet-fs-gtk_common.h
   gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.c
Log:
Select next item in the list after starting the download

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk_common.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk_common.c    2012-11-13 02:31:25 UTC (rev 
24923)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk_common.c    2012-11-13 06:01:07 UTC (rev 
24924)
@@ -545,5 +545,34 @@
   return result;
 }
 
+gboolean
+GNUNET_GTK_tree_model_get_next_flat_iter (GtkTreeModel *model, GtkTreeIter 
*iter, gboolean allow_children, GtkTreeIter *next_iter)
+{
+  GtkTreeIter current_iter = *iter;
+  while (TRUE)
+  {
+    GtkTreeIter tmp_iter;
 
+    tmp_iter = current_iter;
+    if (gtk_tree_model_iter_next (model, &tmp_iter))
+    {
+      *next_iter = tmp_iter;
+      return TRUE;
+    }
+    if (allow_children)
+    {
+      if (gtk_tree_model_iter_children (model, &tmp_iter, &current_iter))
+      {
+        *next_iter = tmp_iter;
+        return TRUE;
+      }
+    }
+    allow_children = FALSE;
+    if (!gtk_tree_model_iter_parent (model, &tmp_iter, &current_iter))
+      return FALSE;
+    current_iter = tmp_iter;
+  }
+  return FALSE;
+}
+
 /* end of gnunet-fs-gtk-common.c */

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk_common.h
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk_common.h    2012-11-13 02:31:25 UTC (rev 
24923)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk_common.h    2012-11-13 06:01:07 UTC (rev 
24924)
@@ -194,5 +194,26 @@
 GtkTreeRowReference *
 GNUNET_GTK_get_reference_from_iter (GtkTreeModel *model, GtkTreeIter *iter);
 
+/**
+ * Fills "next_iter" with iterator for an item that comes next in the tree
+ * after "iter".
+ * Next item is, in order of precedence:
+ * 1) First child of "iter", if "iter" has children and "allow_children"
+ *   is enabled.
+ * 2) Next sibling of "iter", unless "iter" is the last sibling.
+ * If none of those are present, function recursively checks parents of
+ *   "iter" until it finds next item or runs out of parents.
+ *
+ * @param model a model to reference
+ * @param iter an iter that points to current row in the model
+ * @param allow_children whether child of "iter" is considered to be next.
+ * @param next_iter will be filled with the next row in the model on success
+ * @return TRUE if next_iter is set to a valid iter,
+ *         FALSE if ran out of parents
+ */
+gboolean
+GNUNET_GTK_tree_model_get_next_flat_iter (GtkTreeModel *model,
+    GtkTreeIter *iter, gboolean allow_children, GtkTreeIter *next_iter);
+
 #endif
 /* end of gnunet-fs-gtk-common.h */

Modified: gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.c
===================================================================
--- gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.c     2012-11-13 02:31:25 UTC 
(rev 24923)
+++ gnunet-gtk/src/fs/gnunet-fs-gtk_event-handler.c     2012-11-13 06:01:07 UTC 
(rev 24924)
@@ -964,8 +964,8 @@
   gchar *downloaddir;
   struct DownloadEntry *de;
   guint anonymity;
-  
   gboolean recursive;
+  GtkTreeIter next_item;
 
   tv = GTK_TREE_VIEW (gtk_builder_get_object (st->builder, 
"_search_result_frame"));
   sel = gtk_tree_view_get_selection (tv);
@@ -1017,6 +1017,10 @@
 
   gtk_tree_path_free (path);
   g_free (downloaddir);
+
+  if (GNUNET_GTK_tree_model_get_next_flat_iter (model, &iter, !recursive, 
&next_item))
+    gtk_tree_selection_select_iter (sel, &next_item);
+  GNUNET_FS_GTK_search_treeview_cursor_changed (tv, st);
 }
 
 /**




reply via email to

[Prev in Thread] Current Thread [Next in Thread]