diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-02-08 13:22:53 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-02-08 13:22:53 +0000 |
commit | 4747bbbfb21d645f950149bbe173a2618cd3eba9 (patch) | |
tree | 531e65e9dab07fbd25f827bea1fc43f7c0e7f7de /render/box_textarea.c | |
parent | 9ec663f3a95242fe42718d105c478f19be554fd3 (diff) | |
download | netsurf-4747bbbfb21d645f950149bbe173a2618cd3eba9.tar.gz netsurf-4747bbbfb21d645f950149bbe173a2618cd3eba9.tar.bz2 |
HTML drags now go via content msg.
Diffstat (limited to 'render/box_textarea.c')
-rw-r--r-- | render/box_textarea.c | 43 |
1 files changed, 25 insertions, 18 deletions
diff --git a/render/box_textarea.c b/render/box_textarea.c index f5a45ec94..2bbeab31e 100644 --- a/render/box_textarea.c +++ b/render/box_textarea.c @@ -28,6 +28,7 @@ #include "render/box_textarea.h" #include "render/font.h" #include "render/form.h" +#include "utils/log.h" static bool box_textarea_browser_caret_callback(struct browser_window *bw, @@ -124,23 +125,20 @@ static bool box_textarea_browser_paste_callback(struct browser_window *bw, static void box_textarea_callback(void *data, struct textarea_msg *msg) { struct form_textarea_data *d = data; - struct content *c = (struct content *)d->html; struct html_content *html = d->html; struct form_control *gadget = d->gadget; struct box *box = gadget->box; - union content_msg_data msg_data; switch (msg->type) { case TEXTAREA_MSG_DRAG_REPORT: if (msg->data.drag == TEXTAREA_DRAG_NONE) { /* Textarea drag finished */ - html->textarea = NULL; + html_drag_type drag_type = HTML_DRAG_NONE; + union html_drag_owner drag_owner; + drag_owner.no_owner = true; - browser_window_set_drag_type(html->bw, - DRAGGING_NONE, NULL); - - msg_data.pointer = BROWSER_POINTER_AUTO; - content_broadcast(c, CONTENT_MSG_POINTER, msg_data); + html_set_drag_type(d->html, drag_type, drag_owner, + NULL); } else { /* Textarea drag started */ struct rect rect = { @@ -149,16 +147,25 @@ static void box_textarea_callback(void *data, struct textarea_msg *msg) .x1 = INT_MAX, .y1 = INT_MAX }; - browser_drag_type bdt; - - if (msg->data.drag == TEXTAREA_DRAG_SCROLLBAR) - bdt = DRAGGING_CONTENT_TEXTAREA_SCROLLBAR; - else - bdt = DRAGGING_CONTENT_TEXTAREA_SELECTION; - - browser_window_set_drag_type(html->bw, bdt, &rect); - - html->textarea = msg->ta; + html_drag_type drag_type; + union html_drag_owner drag_owner; + drag_owner.textarea = box; + + switch (msg->data.drag) { + case TEXTAREA_DRAG_SCROLLBAR: + drag_type = HTML_DRAG_TEXTAREA_SCROLLBAR; + break; + case TEXTAREA_DRAG_SELECTION: + drag_type = HTML_DRAG_TEXTAREA_SELECTION; + break; + default: + LOG(("Drag type not handled.")); + assert(0); + break; + } + + html_set_drag_type(d->html, drag_type, drag_owner, + &rect); } break; |