diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-02-08 20:03:44 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-02-08 20:03:44 +0000 |
commit | 586e02e915f33e304f5f5e664d29efd2940a4dcf (patch) | |
tree | 7a047d51e170a62bd3f923fa40b4165de4e5733f /desktop | |
parent | 7a397d29c6e79a42c1cea34cb461f1256fce1e04 (diff) | |
download | netsurf-586e02e915f33e304f5f5e664d29efd2940a4dcf.tar.gz netsurf-586e02e915f33e304f5f5e664d29efd2940a4dcf.tar.bz2 |
Implement text selection auto-scroll.
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/textarea.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/desktop/textarea.c b/desktop/textarea.c index 329354859..be02d50ea 100644 --- a/desktop/textarea.c +++ b/desktop/textarea.c @@ -2102,9 +2102,25 @@ bool textarea_mouse_action(struct textarea *ta, browser_mouse_state mouse, } else if (mouse & BROWSER_MOUSE_HOLDING_1 && ta->drag_info.type == TEXTAREA_DRAG_SELECTION) { /* Selection track */ + int scrx = 0; + int scry = 0; + textarea_get_xy_offset(ta, x, y, &c_off); c_start = ta->drag_start_char; c_end = c_off; + + /* selection auto-scroll */ + if (x < 0) + scrx = x / 4; + if (y < 0) + scry = y / 4; + if (x > ta->vis_width) + scrx = (x - ta->vis_width) / 4; + if (y > ta->vis_height) + scry = (y - ta->vis_height) / 4; + + textarea_scroll(ta, scrx, scry); + return textarea_select(ta, c_start, c_end); } |