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.
This commit is contained in:
Vincent Sanders 2020-05-20 23:17:48 +01:00
parent 2f67227901
commit 4cef0f955c
7 changed files with 6 additions and 59 deletions

View File

@ -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;
}

View File

@ -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

View File

@ -229,15 +229,6 @@ extern bool html_redraw_debug;
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
*

View File

@ -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;
}

View File

@ -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

View File

@ -77,21 +77,6 @@ typedef bool (*seln_traverse_handler)(const char *text, size_t length,
const char *whitespace_text, size_t whitespace_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)) {

View File

@ -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