summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-01-10 23:21:47 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2013-01-10 23:21:47 +0000
commitac03806a50f292fc13930a2fdb3c8744bcaa954a (patch)
treeb89c8580030d4227e269b7d5102b057847f3ebc1 /desktop
parentac89e5210918839b5d29cc0f030a79636b900e76 (diff)
downloadnetsurf-ac03806a50f292fc13930a2fdb3c8744bcaa954a.tar.gz
netsurf-ac03806a50f292fc13930a2fdb3c8744bcaa954a.tar.bz2
Fix redraw of caret when scroll offsets are non-zero, only caret has moved, and we're not getting a full textarea redraw.
Diffstat (limited to 'desktop')
-rw-r--r--desktop/textarea.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/desktop/textarea.c b/desktop/textarea.c
index 0d0542ed6..16c2f4616 100644
--- a/desktop/textarea.c
+++ b/desktop/textarea.c
@@ -803,10 +803,14 @@ bool textarea_set_caret(struct textarea *ta, int caret)
ta->caret_y = y;
if (textarea_scroll_visible(ta)) {
+ /* Scrolled; redraw everything */
ta->redraw_request(ta->data, 0, 0,
ta->vis_width,
ta->vis_height);
} else {
+ /* Just caret moved, redraw it */
+ x -= ta->scroll_x;
+ y -= ta->scroll_y;
x0 = max(x - 1, MARGIN_LEFT);
y0 = max(y + text_y_offset, 0);
x1 = min(x + 1, ta->vis_width - MARGIN_RIGHT);