[Top][All Lists]
[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
{
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [GNUnet-SVN] r12911 - gnunet-gtk/src,
gnunet <=