From b88a81b9d9570c3219dc924c3dd2b424d99ee4c3 Mon Sep 17 00:00:00 2001 From: Richard Wilson Date: Thu, 23 Jun 2005 17:22:28 +0000 Subject: [project @ 2005-06-23 17:22:28 by rjw] Allow images to be unloaded to disk or compressed in memory. Provide thumbnails in all tree windows (hotlist, history). Optimise the application initialisation times. Part 1 of 2. svn path=/import/netsurf/; revision=1761 --- desktop/tree.c | 31 ++++++++++++++++++------------- desktop/tree.h | 2 ++ 2 files changed, 20 insertions(+), 13 deletions(-) (limited to 'desktop') diff --git a/desktop/tree.c b/desktop/tree.c index cc25405f4..df3cb92ca 100644 --- a/desktop/tree.c +++ b/desktop/tree.c @@ -99,10 +99,8 @@ void tree_handle_node_changed(struct tree *tree, struct node *node, width = node->box.width; height = node->box.height; - if (recalculate_sizes) + if ((recalculate_sizes) || (expansion)) tree_recalculate_node(node, true); - else if (expansion) - tree_recalculate_node(node, false); if ((node->box.height != height) || (expansion)) { tree_recalculate_node_positions(tree->root); tree_redraw_area(tree, 0, node->box.y, 16384, 16384); @@ -172,6 +170,9 @@ void tree_recalculate_node(struct node *node, bool recalculate_sizes) { } } else { if (recalculate_sizes) + for (element = &node->data; element; element = element->next) + tree_recalculate_node_element(element); + else tree_recalculate_node_element(&node->data); node->box.width = node->data.box.width; node->box.height = node->data.box.height; @@ -332,7 +333,10 @@ bool tree_handle_expansion(struct tree *tree, struct node *node, bool expanded, node->expanded = expanded; if (node->child) tree_set_node_expanded(node->child, false); - tree_recalculate_node(node, false); + if ((node->data.next) && (node->data.next->box.height == 0)) + tree_recalculate_node(node, true); + else + tree_recalculate_node(node, false); redraw = true; } if ((node->child) && (node->expanded)) @@ -993,7 +997,7 @@ struct node *tree_create_URL_node(struct node *parent, const char *title, if (element) { element->user_data = filetype; element->type = NODE_ELEMENT_TEXT; - element->text = squash_whitespace(url); + element->text = strdup(url); } element = tree_create_node_element(node, TREE_ELEMENT_ADDED); if (element) { @@ -1010,12 +1014,12 @@ struct node *tree_create_URL_node(struct node *parent, const char *title, element->type = NODE_ELEMENT_TEXT; element->user_data = visits; } + element = tree_create_node_element(node, TREE_ELEMENT_THUMBNAIL); + if (element) + element->type = NODE_ELEMENT_THUMBNAIL; tree_update_URL_node(node); - - node->expanded = true; - tree_recalculate_node(node, true); - node->expanded = false; + tree_recalculate_node(node, false); return node; } @@ -1056,12 +1060,13 @@ struct node *tree_create_URL_node_brief(struct node *parent, const char *title, element->type = NODE_ELEMENT_TEXT; element->user_data = visit_date; } + element = tree_create_node_element(node, TREE_ELEMENT_THUMBNAIL); + if (element) { + element->type = NODE_ELEMENT_THUMBNAIL; + } tree_update_URL_node(node); - - node->expanded = true; - tree_recalculate_node(node, true); - node->expanded = false; + tree_recalculate_node(node, false); return node; } diff --git a/desktop/tree.h b/desktop/tree.h index 68d97f96d..9f0749b5d 100644 --- a/desktop/tree.h +++ b/desktop/tree.h @@ -19,6 +19,7 @@ #define TREE_ELEMENT_LAST_VISIT 3 #define TREE_ELEMENT_VISITS 4 #define TREE_ELEMENT_VISITED 5 +#define TREE_ELEMENT_THUMBNAIL 6 #define NODE_INSTEP 40 @@ -29,6 +30,7 @@ typedef enum { NODE_ELEMENT_TEXT, /* <-- Text only */ NODE_ELEMENT_TEXT_PLUS_SPRITE, /* <-- Text and sprite */ NODE_ELEMENT_SPRITE, /* <-- Sprite only */ + NODE_ELEMENT_THUMBNAIL, /* <-- Bitmap only */ } node_element_type; -- cgit v1.2.3