diff options
author | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2011-11-10 13:07:47 +0000 |
---|---|---|
committer | Chris Young <chris@unsatisfactorysoftware.co.uk> | 2011-11-10 13:07:47 +0000 |
commit | dd6d1ce527ec4c8c1999f7fc646cea755ac00ca7 (patch) | |
tree | 3333e0c431665ecb19049b14b958bb05a9af9030 /desktop/tree.c | |
parent | 10237e0bde004c5a6db6674d7f521b67dbfde9b9 (diff) | |
download | netsurf-dd6d1ce527ec4c8c1999f7fc646cea755ac00ca7.tar.gz netsurf-dd6d1ce527ec4c8c1999f7fc646cea755ac00ca7.tar.bz2 |
Make default hotlist folder persistent across sessions
svn path=/trunk/netsurf/; revision=13141
Diffstat (limited to 'desktop/tree.c')
-rw-r--r-- | desktop/tree.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/desktop/tree.c b/desktop/tree.c index 1da1f7248..1b37b21a8 100644 --- a/desktop/tree.c +++ b/desktop/tree.c @@ -118,6 +118,7 @@ struct node { bool selected; /**< Whether the node is selected */ bool expanded; /**< Whether the node is expanded */ bool folder; /**< Whether the node is a folder */ + bool def_folder; /**< Whether the node is the default folder */ bool retain_in_memory; /**< Whether the node remains in memory after deletion */ bool deleted; /**< Whether the node is currently @@ -1397,6 +1398,18 @@ bool tree_node_is_folder(struct node *node) /** + * Returns true if the node is the default folder for a tree + * + * \param node the node to be checked + * \return true if the node is a default folder, false otherwise + */ +bool tree_node_is_default(struct node *node) +{ + return node->def_folder; +} + + +/** * Update the text of a node element if it has changed. * * \param element The node element to update. @@ -1567,13 +1580,18 @@ struct node *tree_get_default_folder_node(struct tree *tree) * Set the default node of a tree to the selected node * * \param tree the tree to set the default node of + * \param node the node to set as default (NULL for selected node) * \return success */ -bool tree_set_default_folder_node(struct tree *tree) +bool tree_set_default_folder_node(struct tree *tree, struct node *node) { struct node *sel_node; - sel_node = tree_get_selected_node(tree->root); + if (node == NULL) { + sel_node = tree_get_selected_node(tree->root); + } else { + sel_node = node; + } if((sel_node == NULL) || (tree_node_is_folder(sel_node) == false)) { @@ -1581,6 +1599,7 @@ bool tree_set_default_folder_node(struct tree *tree) } tree->def_folder = sel_node; + sel_node->def_folder = true; return true; } @@ -1592,7 +1611,13 @@ bool tree_set_default_folder_node(struct tree *tree) */ void tree_clear_default_folder_node(struct tree *tree) { - tree->def_folder = NULL; + struct node *def_node = NULL; + def_node = tree_get_default_folder_node(tree); + + if (def_node != NULL) { + tree->def_folder = NULL; + def_node->def_folder = false; + } } |