summaryrefslogtreecommitdiff
path: root/desktop/hotlist.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-08-23 18:26:18 +0100
committerMichael Drake <tlsa@netsurf-browser.org>2013-08-23 18:26:18 +0100
commit44e33001d7104cc7ec38a654f358392bf6240ad3 (patch)
tree925ff999eca3822336103891626718b48e3629fa /desktop/hotlist.c
parent184650c7d84cd403060ecfe3729cc7dbfa0e43c9 (diff)
downloadnetsurf-44e33001d7104cc7ec38a654f358392bf6240ad3.tar.gz
netsurf-44e33001d7104cc7ec38a654f358392bf6240ad3.tar.bz2
Add function to remove any entries with given URL.
Diffstat (limited to 'desktop/hotlist.c')
-rw-r--r--desktop/hotlist.c42
1 files changed, 41 insertions, 1 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)