aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Grothoff <christian@grothoff.org>2012-02-04 17:53:32 +0000
committerChristian Grothoff <christian@grothoff.org>2012-02-04 17:53:32 +0000
commit38933733dd90cefd601cdca02e16532135903e6c (patch)
tree2be62743fcfe4ba61deaac5c7252d0da5494ae74
parent57a16d749a35f273d50d2f02e80934ff6fb42aea (diff)
downloadgnunet-gtk-38933733dd90cefd601cdca02e16532135903e6c.tar.gz
gnunet-gtk-38933733dd90cefd601cdca02e16532135903e6c.zip
-fixing #2134, starting to clean up data structures a bit
-rw-r--r--src/fs/gnunet-fs-gtk_download-save-as.c6
-rw-r--r--src/fs/gnunet-fs-gtk_event-handler.c51
-rw-r--r--src/fs/gnunet-fs-gtk_event-handler.h5
3 files changed, 18 insertions, 44 deletions
diff --git a/src/fs/gnunet-fs-gtk_download-save-as.c b/src/fs/gnunet-fs-gtk_download-save-as.c
index 8ec2dcaf..5db0d296 100644
--- a/src/fs/gnunet-fs-gtk_download-save-as.c
+++ b/src/fs/gnunet-fs-gtk_download-save-as.c
@@ -231,20 +231,20 @@ GNUNET_FS_GTK_download_context_start_download (struct DownloadContext *dc)
231 de->uri = dc->uri; 231 de->uri = dc->uri;
232 dc->uri = NULL; 232 dc->uri = NULL;
233 de->meta = dc->meta; 233 de->meta = dc->meta;
234 de->tab = dc->tab;
234 dc->meta = NULL; 235 dc->meta = NULL;
235 if (NULL != dc->rr) 236 if (NULL != dc->rr)
236 { 237 {
237 de->rr = gtk_tree_row_reference_copy (dc->rr); 238 de->rr = gtk_tree_row_reference_copy (dc->rr);
238 de->ts = GTK_TREE_STORE (gtk_tree_row_reference_get_model (dc->rr));
239 path = gtk_tree_row_reference_get_path (de->rr); 239 path = gtk_tree_row_reference_get_path (de->rr);
240 if ( (NULL != path) && 240 if ( (NULL != path) &&
241 (gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), &iter, path)) ) 241 (gtk_tree_model_get_iter (GTK_TREE_MODEL (de->tab->ts), &iter, path)) )
242 { 242 {
243 /* Store filename and anonymity as specified by the user. 243 /* Store filename and anonymity as specified by the user.
244 * These will be re-used when this is a directory, and the user 244 * These will be re-used when this is a directory, and the user
245 * downloads its children. 245 * downloads its children.
246 */ 246 */
247 gtk_tree_store_set (de->ts, &iter, 15, dc->filename, 16, dc->anonymity, -1); 247 gtk_tree_store_set (de->tab->ts, &iter, 15, dc->filename, 16, dc->anonymity, -1);
248 } 248 }
249 else 249 else
250 { 250 {
diff --git a/src/fs/gnunet-fs-gtk_event-handler.c b/src/fs/gnunet-fs-gtk_event-handler.c
index 95a6e280..86153ddc 100644
--- a/src/fs/gnunet-fs-gtk_event-handler.c
+++ b/src/fs/gnunet-fs-gtk_event-handler.c
@@ -1574,14 +1574,14 @@ change_download_color (struct DownloadEntry *de,
1574 "Changing download DE=%p color to %s\n", 1574 "Changing download DE=%p color to %s\n",
1575 de, color); 1575 de, color);
1576 path = gtk_tree_row_reference_get_path (de->rr); 1576 path = gtk_tree_row_reference_get_path (de->rr);
1577 if (! gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), &iter, path)) 1577 if (! gtk_tree_model_get_iter (GTK_TREE_MODEL (de->tab->ts), &iter, path))
1578 { 1578 {
1579 GNUNET_break (0); 1579 GNUNET_break (0);
1580 gtk_tree_path_free (path); 1580 gtk_tree_path_free (path);
1581 return; 1581 return;
1582 } 1582 }
1583 gtk_tree_path_free (path); 1583 gtk_tree_path_free (path);
1584 gtk_tree_store_set (de->ts, &iter, 8, color, -1); 1584 gtk_tree_store_set (de->tab->ts, &iter, 8, color, -1);
1585} 1585}
1586 1586
1587 1587
@@ -1594,30 +1594,11 @@ change_download_color (struct DownloadEntry *de,
1594static void 1594static void
1595stop_download (struct DownloadEntry *de) 1595stop_download (struct DownloadEntry *de)
1596{ 1596{
1597 GtkTreeIter iter; 1597 if (NULL != de->sr)
1598 GtkTreePath *path;
1599 GtkTreeModel *tm;
1600 struct SearchResult *search_result;
1601
1602 tm = gtk_tree_row_reference_get_model (de->rr);
1603 path = gtk_tree_row_reference_get_path (de->rr);
1604 if (! gtk_tree_model_get_iter (tm, &iter, path))
1605 { 1598 {
1606 gtk_tree_path_free (path); 1599 GNUNET_assert (de->sr->download == de);
1607 GNUNET_break (0); 1600 de->sr->download = NULL;
1608 return;
1609 } 1601 }
1610 gtk_tree_path_free (path);
1611 gtk_tree_model_get (tm, &iter, 9, &search_result, -1);
1612 /* FIXME-BUG: 'search_result' can be NULL here, somehow some code fails to setup the record.. */
1613 if (NULL == search_result)
1614 {
1615 /* FIXME-BUG: this prevents the crash for now, but does not solve the problem */
1616 GNUNET_break (0);
1617 return;
1618 }
1619 GNUNET_assert (search_result->download == de);
1620 search_result->download = NULL;
1621 change_download_color (de, "white"); 1602 change_download_color (de, "white");
1622 gtk_tree_row_reference_free (de->rr); 1603 gtk_tree_row_reference_free (de->rr);
1623 GNUNET_FS_uri_destroy (de->uri); 1604 GNUNET_FS_uri_destroy (de->uri);
@@ -1755,7 +1736,7 @@ mark_download_progress (struct DownloadEntry *de, uint64_t size,
1755 de, completed, size, block_size, offset, depth); 1736 de, completed, size, block_size, offset, depth);
1756 1737
1757 path = gtk_tree_row_reference_get_path (de->rr); 1738 path = gtk_tree_row_reference_get_path (de->rr);
1758 if (! gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), &iter, path)) 1739 if (! gtk_tree_model_get_iter (GTK_TREE_MODEL (de->tab->ts), &iter, path))
1759 { 1740 {
1760 GNUNET_break (0); 1741 GNUNET_break (0);
1761 gtk_tree_path_free (path); 1742 gtk_tree_path_free (path);
@@ -1766,7 +1747,7 @@ mark_download_progress (struct DownloadEntry *de, uint64_t size,
1766 'progress' once the download has started and re-use the 1747 'progress' once the download has started and re-use the
1767 space in the display? Probably yes, at least once we have 1748 space in the display? Probably yes, at least once we have
1768 a custom CellRenderer... */ 1749 a custom CellRenderer... */
1769 gtk_tree_store_set (de->ts, &iter, 1750 gtk_tree_store_set (de->tab->ts, &iter,
1770 4, (guint) ((size > 1751 4, (guint) ((size >
1771 0) ? (100 * completed / 1752 0) ? (100 * completed /
1772 size) : 100) /* progress */, 1753 size) : 100) /* progress */,
@@ -1793,7 +1774,7 @@ mark_download_progress (struct DownloadEntry *de, uint64_t size,
1793 GNUNET_break (GNUNET_OK == 1774 GNUNET_break (GNUNET_OK ==
1794 GNUNET_CONTAINER_meta_data_delete (de->meta, 1775 GNUNET_CONTAINER_meta_data_delete (de->meta,
1795 EXTRACTOR_METATYPE_MIMETYPE, NULL, 0)); 1776 EXTRACTOR_METATYPE_MIMETYPE, NULL, 0));
1796 gtk_tree_store_set (de->ts, &iter, 1777 gtk_tree_store_set (de->tab->ts, &iter,
1797 10, "" /* unknown mime type */, -1); 1778 10, "" /* unknown mime type */, -1);
1798 } 1779 }
1799 } 1780 }
@@ -1939,7 +1920,6 @@ copy_children (GtkTreeModel * src_model, GtkTreeIter * src_iter,
1939 gtk_tree_path_free (path); 1920 gtk_tree_path_free (path);
1940 if (search_result->download != NULL) 1921 if (search_result->download != NULL)
1941 { 1922 {
1942 search_result->download->ts = GTK_TREE_STORE (dst_model);
1943 gtk_tree_row_reference_free (search_result->download->rr); 1923 gtk_tree_row_reference_free (search_result->download->rr);
1944 search_result->download->rr = 1924 search_result->download->rr =
1945 gtk_tree_row_reference_copy (search_result->rr); 1925 gtk_tree_row_reference_copy (search_result->rr);
@@ -1990,9 +1970,9 @@ download_lost_parent (struct DownloadEntry *de)
1990 /* first, move the root of the respective 'de'-tree */ 1970 /* first, move the root of the respective 'de'-tree */
1991 rr_old = de->rr; 1971 rr_old = de->rr;
1992 tab = GNUNET_GTK_add_to_uri_tab (&iter, &de->sr, de->meta, de->uri); 1972 tab = GNUNET_GTK_add_to_uri_tab (&iter, &de->sr, de->meta, de->uri);
1973 de->tab = tab;
1993 de->sr->download = de; 1974 de->sr->download = de;
1994 de->ts = tab->ts; 1975 model = GTK_TREE_MODEL (de->tab->ts);
1995 model = GTK_TREE_MODEL (de->ts);
1996 path = gtk_tree_model_get_path (model, &iter); 1976 path = gtk_tree_model_get_path (model, &iter);
1997 de->rr = gtk_tree_row_reference_new (model, path); 1977 de->rr = gtk_tree_row_reference_new (model, path);
1998 gtk_tree_path_free (path); 1978 gtk_tree_path_free (path);
@@ -2065,7 +2045,6 @@ setup_download (struct DownloadEntry *de, struct DownloadEntry *pde,
2065 GNUNET_assert (sr->download == NULL); 2045 GNUNET_assert (sr->download == NULL);
2066 sr->download = de; 2046 sr->download = de;
2067 de->rr = gtk_tree_row_reference_copy (sr->rr); 2047 de->rr = gtk_tree_row_reference_copy (sr->rr);
2068 de->ts = sr->tab->ts;
2069 de->tab = sr->tab; 2048 de->tab = sr->tab;
2070 srp = sr; 2049 srp = sr;
2071 } 2050 }
@@ -2075,21 +2054,21 @@ setup_download (struct DownloadEntry *de, struct DownloadEntry *pde,
2075 with the download so far; create a fresh entry for this 2054 with the download so far; create a fresh entry for this
2076 download in the URI tab */ 2055 download in the URI tab */
2077 de->tab = GNUNET_GTK_add_to_uri_tab (&iter, &srp, meta, uri); 2056 de->tab = GNUNET_GTK_add_to_uri_tab (&iter, &srp, meta, uri);
2078 de->ts = de->tab->ts; 2057 path = gtk_tree_model_get_path (GTK_TREE_MODEL (de->tab->ts), &iter);
2079 path = gtk_tree_model_get_path (GTK_TREE_MODEL (de->ts), &iter); 2058 de->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (de->tab->ts), path);
2080 de->rr = gtk_tree_row_reference_new (GTK_TREE_MODEL (de->ts), path);
2081 gtk_tree_path_free (path); 2059 gtk_tree_path_free (path);
2082 srp->download = de; 2060 srp->download = de;
2083 } 2061 }
2062 GNUNET_assert (NULL != de->tab);
2084 path = gtk_tree_row_reference_get_path (de->rr); 2063 path = gtk_tree_row_reference_get_path (de->rr);
2085 if (! gtk_tree_model_get_iter (GTK_TREE_MODEL (de->ts), &iter, path)) 2064 if (! gtk_tree_model_get_iter (GTK_TREE_MODEL (de->tab->ts), &iter, path))
2086 { 2065 {
2087 GNUNET_break (0); 2066 GNUNET_break (0);
2088 gtk_tree_path_free (path); 2067 gtk_tree_path_free (path);
2089 return de; 2068 return de;
2090 } 2069 }
2091 gtk_tree_path_free (path); 2070 gtk_tree_path_free (path);
2092 gtk_tree_store_set (de->ts, &iter, 2071 gtk_tree_store_set (de->tab->ts, &iter,
2093 4, (guint) ((size > 2072 4, (guint) ((size >
2094 0) ? (100 * completed / 2073 0) ? (100 * completed /
2095 size) : 100) /* progress */ , 2074 size) : 100) /* progress */ ,
diff --git a/src/fs/gnunet-fs-gtk_event-handler.h b/src/fs/gnunet-fs-gtk_event-handler.h
index bda074ea..a36ec604 100644
--- a/src/fs/gnunet-fs-gtk_event-handler.h
+++ b/src/fs/gnunet-fs-gtk_event-handler.h
@@ -153,11 +153,6 @@ struct DownloadEntry
153 GtkTreeRowReference *rr; 153 GtkTreeRowReference *rr;
154 154
155 /** 155 /**
156 * Tree store where we are stored.
157 */
158 GtkTreeStore *ts;
159
160 /**
161 * Tab where this download is currently on display. 156 * Tab where this download is currently on display.
162 */ 157 */
163 struct SearchTab *tab; 158 struct SearchTab *tab;