aboutsummaryrefslogtreecommitdiff
path: root/src/bw.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/bw.c')
-rw-r--r--src/bw.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/src/bw.c b/src/bw.c
index d0c92086..92d24556 100644
--- a/src/bw.c
+++ b/src/bw.c
@@ -13,6 +13,7 @@
#include "bw.h"
+#include "msg.h"
#include "list.h"
#include "capi.h"
#include "uicmd.hh"
@@ -217,6 +218,38 @@ void a_Bw_add_doc(BrowserWindow *bw, void *vdoc)
}
/*
+ * Get current document.
+ */
+void *a_Bw_get_current_doc(BrowserWindow *bw)
+{
+ void *doc = NULL;
+ int len = dList_length(bw->Docs);
+
+ if (len == 1)
+ doc = dList_nth_data(bw->Docs, 0);
+ else if (len > 1)
+ MSG("a_Bw_get_current_doc() multiple docs not implemented\n");
+
+ return doc;
+}
+
+/*
+ * Get document by URL.
+ *
+ * This is currently used by popup menus that need to ensure that the
+ * page has not changed while the menu was popped up.
+ */
+void *a_Bw_get_url_doc(BrowserWindow *bw, const DilloUrl *url)
+{
+ void *doc = NULL;
+
+ if (url && dList_find_custom(bw->PageUrls, url, (dCompareFunc)a_Url_cmp)) {
+ doc = a_Bw_get_current_doc(bw);
+ }
+ return doc;
+}
+
+/*
* Remove a document from the bw's list
*/
void a_Bw_remove_doc(BrowserWindow *bw, void *vdoc)