gnunet-svn
[Top][All Lists]
Advanced

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

[GNUnet-SVN] r12911 - gnunet-gtk/src


From: gnunet
Subject: [GNUnet-SVN] r12911 - gnunet-gtk/src
Date: Tue, 7 Sep 2010 23:17:57 +0200

Author: grothoff
Date: 2010-09-07 23:17:57 +0200 (Tue, 07 Sep 2010)
New Revision: 12911

Modified:
   gnunet-gtk/src/fs_event_handler.c
   gnunet-gtk/src/fs_event_handler.h
Log:
towards ns search

Modified: gnunet-gtk/src/fs_event_handler.c
===================================================================
--- gnunet-gtk/src/fs_event_handler.c   2010-09-07 20:59:56 UTC (rev 12910)
+++ gnunet-gtk/src/fs_event_handler.c   2010-09-07 21:17:57 UTC (rev 12911)
@@ -967,6 +967,8 @@
 {
   char *name;
  
+  while (tab->parent != NULL)
+    tab = tab->parent->tab;
   if (tab->num_results > 0)
     GNUNET_asprintf (&name,
                     "%.*s%s (%u)",
@@ -994,6 +996,13 @@
   GtkNotebook *notebook;
   int index;
   int i;
+  
+  if (tab->parent != NULL)
+    {
+      /* not a top-level search, do not close tab here! */
+      GNUNET_free (tab);
+      return;
+    }
 
   notebook = GTK_NOTEBOOK (GNUNET_GTK_get_main_window_object 
("GNUNET_GTK_main_window_notebook"));
   index = -1;
@@ -1266,6 +1275,36 @@
 
 
 /**
+ * Setup an inner search.
+ *
+ * @param sc context with FS for the search
+ * @param parent parent search tab
+ * @param anonymity anonymity level
+ */
+static struct SearchTab *
+setup_inner_search (struct GNUNET_FS_SearchContext *sc,
+                   struct SearchResult *parent)
+{
+  struct SearchTab *ret;
+
+  ret = GNUNET_malloc (sizeof (struct SearchTab));
+  ret->parent = parent;
+  ret->sc = sc;
+  ret->query_txt = parent->tab->query_txt;
+  ret->builder = parent->tab->builder;
+  ret->frame = parent->tab->frame;
+  ret->tab_label = parent->tab->tab_label;
+  ret->close_button = parent->tab->close_button;
+  ret->clear_button = parent->tab->clear_button;
+  ret->play_button = parent->tab->play_button;
+  ret->label = parent->tab->label;
+
+  return ret;
+}
+
+
+
+/**
  * Add a search result to the given search tab.
  *
  * @param tab search tab to extend
@@ -1390,7 +1429,11 @@
                                     13, 0 /* avail-rank */,
                                     -1);
   if (tab != NULL)
-    tab->num_results++;
+    {
+      while (tab->parent != NULL)
+       tab = tab->parent->tab;
+      tab->num_results++;
+    }
   if (pixbuf != NULL)
     g_object_unref (pixbuf);
   GNUNET_free (uris);
@@ -1854,10 +1897,8 @@
                                   info->value.download.is_active);
     case GNUNET_FS_STATUS_SEARCH_START: 
       if (info->value.search.pctx != NULL)
-       {
-         GNUNET_break (0); 
-         break;
-       }
+       return setup_inner_search (info->value.search.sc,
+                                  info->value.search.pctx);
       return setup_search (info->value.search.sc,
                           info->value.search.query);
     case GNUNET_FS_STATUS_SEARCH_RESUME: 

Modified: gnunet-gtk/src/fs_event_handler.h
===================================================================
--- gnunet-gtk/src/fs_event_handler.h   2010-09-07 20:59:56 UTC (rev 12910)
+++ gnunet-gtk/src/fs_event_handler.h   2010-09-07 21:17:57 UTC (rev 12911)
@@ -26,6 +26,9 @@
 #include "common.h"
 
 
+struct SearchResult;
+
+
 /**
  * Context we keep for a search tab.
  */
@@ -41,6 +44,14 @@
    */
   struct SearchTab *prev;
 
+  /**
+   * Set in case this is an inner search, otherwise NULL.
+   */
+  struct SearchResult *parent;
+
+  /**
+   * Handle for this search with FS library.
+   */
   struct GNUNET_FS_SearchContext *sc;
 
   char *query_txt;
@@ -68,9 +79,6 @@
 };
 
 
-struct SearchResult;
-
-
 struct DownloadEntry
 {
 




reply via email to

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