diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-11-08 18:53:34 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-11-08 18:53:34 +0000 |
commit | 61b5a5e98f1fe34ff44ba34476afbb7d9d5dec61 (patch) | |
tree | df6e30b0fcd65d0e2b125a64715716a0a2361b78 /desktop/hotlist.c | |
parent | 409df8dbbefa26a8b7b670270c82ec755c4175d4 (diff) | |
download | netsurf-61b5a5e98f1fe34ff44ba34476afbb7d9d5dec61.tar.gz netsurf-61b5a5e98f1fe34ff44ba34476afbb7d9d5dec61.tar.bz2 |
Visual indication of hotlist's folder for unsorted entries, with special icon.
Diffstat (limited to 'desktop/hotlist.c')
-rw-r--r-- | desktop/hotlist.c | 46 |
1 files changed, 28 insertions, 18 deletions
diff --git a/desktop/hotlist.c b/desktop/hotlist.c index 6671a77d3..838b41b5e 100644 --- a/desktop/hotlist.c +++ b/desktop/hotlist.c @@ -322,9 +322,11 @@ static nserror hotlist_add_entry_internal(nsurl *url, const char *title, */ static nserror hotlist_add_folder_internal( const char *title, treeview_node *relation, - enum treeview_relationship rel, struct hotlist_folder **folder) + enum treeview_relationship rel, struct hotlist_folder **folder, + bool default_folder) { struct hotlist_folder *f; + treeview_node_options_flags flags = TREE_OPTION_NONE; treeview_node *n; nserror err; @@ -346,10 +348,14 @@ static nserror hotlist_add_folder_internal( } f->data.value_len = strlen(title); + if (hl_ctx.built) + flags |= TREE_OPTION_SUPPRESS_RESIZE | + TREE_OPTION_SUPPRESS_REDRAW; + if (default_folder) + flags |= TREE_OPTION_SPECIAL_DIR; + err = treeview_create_node_folder(hl_ctx.tree, - &n, relation, rel, &f->data, f, hl_ctx.built ? - TREE_OPTION_NONE : TREE_OPTION_SUPPRESS_RESIZE | - TREE_OPTION_SUPPRESS_REDRAW); + &n, relation, rel, &f->data, f, flags); if (err != NSERROR_OK) { free((void*)f->data.value); /* Eww */ free(f); @@ -658,16 +664,7 @@ nserror hotlist_load_directory_cb(dom_node *node, void *ctx) struct hotlist_folder *f; hotlist_load_ctx new_ctx; treeview_node *rel; - - title = dom_string_data(current_ctx->title); - - /* Add folder node */ - err = hotlist_add_folder_internal(title, current_ctx->rel, - current_ctx->relshp, &f); - if (err != NSERROR_OK) { - dom_string_unref(name); - return NSERROR_NOMEM; - } + bool default_folder = false; /* Check if folder should be default folder */ error = dom_element_get_attribute(node, corestring_dom_id, &id); @@ -677,11 +674,24 @@ nserror hotlist_load_directory_cb(dom_node *node, void *ctx) } if (id != NULL) { if (dom_string_lwc_isequal(id, corestring_lwc_default)) - hl_ctx.default_folder = f; + default_folder = true; dom_string_unref(id); } + title = dom_string_data(current_ctx->title); + + /* Add folder node */ + err = hotlist_add_folder_internal(title, current_ctx->rel, + current_ctx->relshp, &f, default_folder); + if (err != NSERROR_OK) { + dom_string_unref(name); + return NSERROR_NOMEM; + } + + if (default_folder) + hl_ctx.default_folder = f; + rel = f->folder; current_ctx->rel = rel; current_ctx->relshp = TREE_REL_NEXT_SIBLING; @@ -833,7 +843,7 @@ static nserror hotlist_generate(void) /* First make "NetSurf" folder for defualt entries */ title = "NetSurf"; err = hotlist_add_folder_internal(title, NULL, - TREE_REL_FIRST_CHILD, &f); + TREE_REL_FIRST_CHILD, &f, false); if (err != NSERROR_OK) { return err; } @@ -1223,7 +1233,7 @@ nserror hotlist_add_url(nsurl *url) const char *temp = messages_get("HotlistDefaultFolderName"); struct hotlist_folder *f; err = hotlist_add_folder_internal(temp, NULL, - TREE_REL_FIRST_CHILD, &f); + TREE_REL_FIRST_CHILD, &f, true); if (err != NSERROR_OK) return err; @@ -1451,7 +1461,7 @@ nserror hotlist_add_folder(const char *title, bool at_y, int y) return err; } - err = hotlist_add_folder_internal(title, relation, rel, &f); + err = hotlist_add_folder_internal(title, relation, rel, &f, false); if (err != NSERROR_OK) { return err; } |