summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--desktop/browser.c20
-rw-r--r--desktop/browser.h10
-rw-r--r--desktop/selection.c7
3 files changed, 26 insertions, 11 deletions
diff --git a/desktop/browser.c b/desktop/browser.c
index 59e6e7a35..08b29ca29 100644
--- a/desktop/browser.c
+++ b/desktop/browser.c
@@ -220,6 +220,22 @@ void browser_window_go(struct browser_window *bw, const char *url,
/**
+ * Start a download of the given URL from a browser window.
+ *
+ * \param bw browser window
+ * \param url URL to start downloading (copied)
+ * \param referer the referring uri (copied), or 0 if none
+ */
+
+void browser_window_download(struct browser_window *bw, const char *url,
+ const char *referrer)
+{
+ browser_window_go_post(bw, url, 0, 0, false, referrer,
+ true, true, 0);
+}
+
+
+/**
* Start fetching a page in a browser window.
*
* \param bw browser window
@@ -1673,6 +1689,10 @@ void browser_window_mouse_action_html(struct browser_window *bw,
}
}
}
+ if ((mouse & BROWSER_MOUSE_CLICK_1) && !selection_defined(bw->sel)) {
+ /* ensure key presses still act on the browser window */
+ browser_window_remove_caret(bw);
+ }
}
assert(status);
diff --git a/desktop/browser.h b/desktop/browser.h
index a3a10b9f3..89b1ab67d 100644
--- a/desktop/browser.h
+++ b/desktop/browser.h
@@ -113,7 +113,7 @@ struct browser_window {
unsigned int drag_resize_up : 1;
unsigned int drag_resize_down : 1;
- /** Referer for current fetch, or 0. */
+ /** Referrer for current fetch, or 0. */
char *referer;
/** Current fetch is download */
@@ -213,14 +213,16 @@ extern struct browser_window *current_redraw_browser;
extern bool browser_reformat_pending;
struct browser_window * browser_window_create(const char *url,
- struct browser_window *clone, const char *referer,
+ struct browser_window *clone, const char *referrer,
bool history_add, bool new_tab);
void browser_window_initialise_common(struct browser_window *bw,
struct browser_window *clone);
void browser_window_go(struct browser_window *bw, const char *url,
- const char *referer, bool history_add);
+ const char *referrer, bool history_add);
void browser_window_go_unverifiable(struct browser_window *bw,
- const char *url, const char *referer, bool history_add);
+ const char *url, const char *referrer, bool history_add);
+void browser_window_download(struct browser_window *bw,
+ const char *url, const char *referrer);
void browser_window_update(struct browser_window *bw, bool scroll_to_top);
void browser_window_stop(struct browser_window *bw);
void browser_window_reload(struct browser_window *bw, bool all);
diff --git a/desktop/selection.c b/desktop/selection.c
index ac314bd7f..9140ebbf0 100644
--- a/desktop/selection.c
+++ b/desktop/selection.c
@@ -696,14 +696,7 @@ void selection_clear(struct selection *s, bool redraw)
void selection_select_all(struct selection *s)
{
- unsigned old_start, old_end;
- bool was_defined;
-
assert(s);
- was_defined = selection_defined(s);
- old_start = s->start_idx;
- old_end = s->end_idx;
-
s->defined = true;
if (IS_INPUT(s->root))