mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-01-12 22:09:19 +03:00
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:
parent
2f67227901
commit
4cef0f955c
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
*
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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
|
||||
|
@ -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)) {
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user