summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorRichard Wilson <rjw@netsurf-browser.org>2005-06-23 17:22:28 +0000
committerRichard Wilson <rjw@netsurf-browser.org>2005-06-23 17:22:28 +0000
commitb88a81b9d9570c3219dc924c3dd2b424d99ee4c3 (patch)
tree9c82002745ad96d5c7ef88e3824f77b3956254ea /desktop
parentede57892c6ceb1ecc9c75cbc21d22ce92704ebd4 (diff)
downloadnetsurf-b88a81b9d9570c3219dc924c3dd2b424d99ee4c3.tar.gz
netsurf-b88a81b9d9570c3219dc924c3dd2b424d99ee4c3.tar.bz2
[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
Diffstat (limited to 'desktop')
-rw-r--r--desktop/tree.c31
-rw-r--r--desktop/tree.h2
2 files changed, 20 insertions, 13 deletions
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;