summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent Sanders <vince@kyllikki.org>2020-05-20 23:17:48 +0100
committerVincent Sanders <vince@kyllikki.org>2020-05-20 23:17:48 +0100
commit4cef0f955c3be33344361f84d600bccf1b28ce75 (patch)
tree222d27faab4fa078d183d1771b818c4a6448f5bb
parent2f672279014bb6ef2f7b9f346c58d20c7604bad9 (diff)
downloadnetsurf-4cef0f955c3be33344361f84d600bccf1b28ce75.tar.gz
netsurf-4cef0f955c3be33344361f84d600bccf1b28ce75.tar.bz2
pass the browser window to selection click handler
this means the content handlers do not have to provide a separate method to extract their browser window and it can simply be passed in.
-rw-r--r--content/handlers/html/html.c12
-rw-r--r--content/handlers/html/interaction.c1
-rw-r--r--content/handlers/html/private.h9
-rw-r--r--content/handlers/text/textplain.c14
-rw-r--r--content/handlers/text/textplain.h8
-rw-r--r--desktop/selection.c18
-rw-r--r--desktop/selection.h3
7 files changed, 6 insertions, 59 deletions
diff --git a/content/handlers/html/html.c b/content/handlers/html/html.c
index 23d607823..33320aa7b 100644
--- a/content/handlers/html/html.c
+++ b/content/handlers/html/html.c
@@ -2383,15 +2383,3 @@ error:
return error;
}
-
-
-/* exported function documented in html/private.h */
-struct browser_window *html_get_browser_window(struct content *c)
-{
- html_content *html = (html_content *) c;
-
- assert(c != NULL);
- assert(c->handler == &html_content_handler);
-
- return html->bw;
-}
diff --git a/content/handlers/html/interaction.c b/content/handlers/html/interaction.c
index f2eae70df..0a963dd54 100644
--- a/content/handlers/html/interaction.c
+++ b/content/handlers/html/interaction.c
@@ -1220,6 +1220,7 @@ default_mouse_action(html_content *html,
&pixel_offset);
if (selection_click(&html->sel,
+ html->bw,
mouse,
mas->text.box->byte_offset + idx)) {
/* key presses must be directed at the
diff --git a/content/handlers/html/private.h b/content/handlers/html/private.h
index dde61c2a9..ff20be837 100644
--- a/content/handlers/html/private.h
+++ b/content/handlers/html/private.h
@@ -230,15 +230,6 @@ void html__redraw_a_box(html_content *htmlc, struct box *box);
/**
- * Get the browser window containing an HTML content
- *
- * \param c HTML content
- * \return the browser window
- */
-struct browser_window *html_get_browser_window(struct content *c);
-
-
-/**
* Complete conversion of an HTML document
*
* \param htmlc Content to convert
diff --git a/content/handlers/text/textplain.c b/content/handlers/text/textplain.c
index 501ba1d34..534b91d93 100644
--- a/content/handlers/text/textplain.c
+++ b/content/handlers/text/textplain.c
@@ -706,7 +706,7 @@ textplain_mouse_action(struct content *c,
browser_window_set_drag_type(bw, DRAGGING_NONE, NULL);
idx = textplain_offset_from_coords(c, x, y, dir);
- if (selection_click(&text->sel, mouse, idx)) {
+ if (selection_click(&text->sel, text->bw, mouse, idx)) {
if (selection_dragging(&text->sel)) {
browser_window_set_drag_type(bw,
@@ -1634,15 +1634,3 @@ textplain_get_raw_data(struct content *c,
return text->utf8_data + start;
}
-
-
-/* exported interface documented in html/textplain.h */
-struct browser_window *textplain_get_browser_window(struct content *c)
-{
- textplain_content *text = (textplain_content *) c;
-
- assert(c != NULL);
- assert(c->handler == &textplain_content_handler);
-
- return text->bw;
-}
diff --git a/content/handlers/text/textplain.h b/content/handlers/text/textplain.h
index a2cfb5e00..716397acc 100644
--- a/content/handlers/text/textplain.h
+++ b/content/handlers/text/textplain.h
@@ -73,12 +73,4 @@ void textplain_coords_from_range(struct content *c,
char *textplain_get_raw_data(struct content *c, unsigned start, unsigned end, size_t *plen);
-/**
- * Get the browser window containing a textplain content
- *
- * \param[in] c text/plain content
- * \return the browser window
- */
-struct browser_window *textplain_get_browser_window(struct content *c);
-
#endif
diff --git a/desktop/selection.c b/desktop/selection.c
index 4bbcda9a7..47d51f83e 100644
--- a/desktop/selection.c
+++ b/desktop/selection.c
@@ -78,21 +78,6 @@ typedef bool (*seln_traverse_handler)(const char *text, size_t length,
/**
- * Get the browser window containing the content a selection object belongs to.
- *
- * \param s selection object
- * \return the browser window
- */
-static struct browser_window * selection_get_browser_window(struct selection *s)
-{
- if (s->is_html)
- return html_get_browser_window(s->c);
- else
- return textplain_get_browser_window(s->c);
-}
-
-
-/**
* Label each text box in the given box subtree with its position
* in a textual representation of the content.
*
@@ -691,13 +676,14 @@ selection_init(struct selection *s,
/* exported interface documented in desktop/selection.h */
bool
selection_click(struct selection *s,
+ struct browser_window *top,
browser_mouse_state mouse,
unsigned idx)
{
browser_mouse_state modkeys =
(mouse & (BROWSER_MOUSE_MOD_1 | BROWSER_MOUSE_MOD_2));
int pos = -1; /* 0 = inside selection, 1 = after it */
- struct browser_window *top = selection_get_browser_window(s);
+
top = browser_window_get_root(top);
if (selection_defined(s)) {
diff --git a/desktop/selection.h b/desktop/selection.h
index ca0d19fe9..cfaf59baf 100644
--- a/desktop/selection.h
+++ b/desktop/selection.h
@@ -28,6 +28,7 @@
#include "content/handlers/css/utils.h"
struct box;
+struct browser_window;
typedef enum {
DRAG_NONE,
@@ -166,7 +167,7 @@ void selection_set_position(struct selection *s, unsigned start, unsigned end);
* \param idx byte offset within textual representation
* \return true iff the click has been handled by the selection code
*/
-bool selection_click(struct selection *s, browser_mouse_state mouse, unsigned idx);
+bool selection_click(struct selection *s, struct browser_window *top, browser_mouse_state mouse, unsigned idx);
/**
* Handles movements related to the selection, eg. dragging of start and