diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-08-23 18:26:18 +0100 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-08-23 18:26:18 +0100 |
commit | 44e33001d7104cc7ec38a654f358392bf6240ad3 (patch) | |
tree | 925ff999eca3822336103891626718b48e3629fa | |
parent | 184650c7d84cd403060ecfe3729cc7dbfa0e43c9 (diff) | |
download | netsurf-44e33001d7104cc7ec38a654f358392bf6240ad3.tar.gz |
Add function to remove any entries with given URL.
-rw-r--r-- | desktop/hotlist.c | 42 | ||||
-rw-r--r-- | desktop/hotlist.h | 11 |
2 files changed, 50 insertions, 3 deletions
diff --git a/desktop/hotlist.c b/desktop/hotlist.c index 46f33d42c..95b358ced 100644 --- a/desktop/hotlist.c +++ b/desktop/hotlist.c @@ -1064,7 +1064,7 @@ nserror hotlist_fini(const char *path) /* Exported interface, documented in hotlist.h */ -nserror hotlist_add(nsurl *url) +nserror hotlist_add_url(nsurl *url) { treeview_node *entry; nserror err; @@ -1125,6 +1125,46 @@ bool hotlist_has_url(nsurl *url) } +struct treeview_remove_url_walk_ctx { + nsurl *url; +}; +/** Callback for treeview_walk */ +static nserror hotlist_remove_url_walk_cb(void *ctx, void *node_data, + enum treeview_node_type type, bool *abort) +{ + struct treeview_remove_url_walk_ctx *tw = ctx; + + if (type == TREE_NODE_ENTRY) { + struct hotlist_entry *e = node_data; + + if (nsurl_compare(e->url, tw->url, NSURL_COMPLETE) == true) { + /* Found what we're looking for: delete it */ + treeview_delete_node(hl_ctx.tree, e->entry); + } + } + + return NSERROR_OK; +} +/* Exported interface, documented in hotlist.h */ +void hotlist_remove_url(nsurl *url) +{ + nserror err; + struct treeview_remove_url_walk_ctx tw = { + .url = url + }; + + if (hl_ctx.built == false) + return; + + err = treeview_walk(hl_ctx.tree, NULL, NULL, hotlist_remove_url_walk_cb, + &tw, TREE_NODE_ENTRY); + if (err != NSERROR_OK) + return; + + return; +} + + /* Exported interface, documented in hotlist.h */ void hotlist_redraw(int x, int y, struct rect *clip, const struct redraw_context *ctx) diff --git a/desktop/hotlist.h b/desktop/hotlist.h index 1271b623e..d55301e12 100644 --- a/desktop/hotlist.h +++ b/desktop/hotlist.h @@ -54,12 +54,12 @@ nserror hotlist_init(struct core_window_callback_table *cw_t, nserror hotlist_fini(const char *path); /** - * Add an entry to the hotlist. + * Add an entry to the hotlist for given URL. * * \param url URL for node being added * \return NSERROR_OK on success, appropriate error otherwise */ -nserror hotlist_add(nsurl *url); +nserror hotlist_add_url(nsurl *url); /** * Check whether given URL is present in hotlist @@ -70,6 +70,13 @@ nserror hotlist_add(nsurl *url); bool hotlist_has_url(nsurl *url); /** + * Remove any entries matching the given URL from the hotlist + * + * \param url Address to look for in hotlist + */ +void hotlist_remove_url(nsurl *url); + +/** * Redraw the hotlist. * * \param x X coordinate to render treeview at |