summaryrefslogtreecommitdiff
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
parent184650c7d84cd403060ecfe3729cc7dbfa0e43c9 (diff)
downloadnetsurf-44e33001d7104cc7ec38a654f358392bf6240ad3.tar.gz
netsurf-44e33001d7104cc7ec38a654f358392bf6240ad3.tar.bz2
Add function to remove any entries with given URL.
-rw-r--r--desktop/hotlist.c42
-rw-r--r--desktop/hotlist.h11
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