diff options
author | Adrian Lees <adrian@aemulor.com> | 2006-02-11 18:33:05 +0000 |
---|---|---|
committer | Adrian Lees <adrian@aemulor.com> | 2006-02-11 18:33:05 +0000 |
commit | edded10c0fab01984b43de8d857cce7b6027b242 (patch) | |
tree | 159e9ee70fa8fe88e72500f57fe5481fe4ec08a1 /desktop/browser.c | |
parent | 6b6841f07e7f4afea7fc025214abedbc79d3aa03 (diff) | |
download | netsurf-edded10c0fab01984b43de8d857cce7b6027b242.tar.gz netsurf-edded10c0fab01984b43de8d857cce7b6027b242.tar.bz2 |
[project @ 2006-02-11 18:33:05 by adrianl]
Textarea/selection improvements and fixes
svn path=/import/netsurf/; revision=2072
Diffstat (limited to 'desktop/browser.c')
-rw-r--r-- | desktop/browser.c | 38 |
1 files changed, 20 insertions, 18 deletions
diff --git a/desktop/browser.c b/desktop/browser.c index 506d0b449..d20153721 100644 --- a/desktop/browser.c +++ b/desktop/browser.c @@ -903,17 +903,12 @@ void browser_window_mouse_action_html(struct browser_window *bw, case GADGET_TEXTAREA: status = messages_get("FormTextarea"); pointer = GUI_POINTER_CARET; - if (mouse & (BROWSER_MOUSE_MOD_1 | - BROWSER_MOUSE_MOD_2)) { - if (text_box) { - selection_click(bw->sel, text_box, - mouse, x - box_x, - y - box_y); - if (selection_dragging(bw->sel)) - bw->drag_type = - DRAGGING_SELECTION; - } - } else if (mouse & BROWSER_MOUSE_CLICK_1) { + + if (mouse & (BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_CLICK_2)) { + + if (text_box && selection_root(bw->sel) != gadget_box) + selection_init(bw->sel, gadget_box); + browser_window_textarea_click(bw, mouse, gadget_box, @@ -921,15 +916,16 @@ void browser_window_mouse_action_html(struct browser_window *bw, gadget_box_y, x - gadget_box_x, y - gadget_box_y); - } else if (text_box) { - if (mouse & (BROWSER_MOUSE_DRAG_1 | - BROWSER_MOUSE_DRAG_2)) - selection_init(bw->sel, gadget_box); + } - selection_click(bw->sel, text_box, mouse, - x - box_x, y - box_y); - if (selection_dragging(bw->sel)) + if (text_box) { + selection_click(bw->sel, text_box, mouse, x - box_x, y - box_y); + + if (selection_dragging(bw->sel)) { bw->drag_type = DRAGGING_SELECTION; + status = messages_get("Selecting"); + } else + status = c->status_message; } break; case GADGET_TEXTBOX: @@ -1021,6 +1017,12 @@ void browser_window_mouse_action_html(struct browser_window *bw, } else { + /* if clicking in the main page, remove the selection from any text areas */ + if (text_box && + (mouse & (BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_CLICK_2)) && + selection_root(bw->sel) != c->data.html.layout) + selection_init(bw->sel, c->data.html.layout); + if (text_box && selection_click(bw->sel, text_box, mouse, x - box_x, y - box_y)) { |