summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
Diffstat (limited to 'desktop')
-rw-r--r--desktop/textarea.c8
1 files changed, 7 insertions, 1 deletions
diff --git a/desktop/textarea.c b/desktop/textarea.c
index 43e3df688..4e0f22548 100644
--- a/desktop/textarea.c
+++ b/desktop/textarea.c
@@ -897,10 +897,16 @@ void textarea_redraw(struct text_area *ta, int x, int y,
&ta->fstyle);
}
- if (x + ta->caret_x >= clip_x0 && x + ta->caret_x <= clip_x1) {
+ if ((ta->selection_end == -1 ||
+ ta->selection_start == ta->selection_end) &&
+ x + ta->caret_x >= clip_x0 &&
+ x + ta->caret_x <= clip_x1) {
+ /* There is no selection and caret is in horizontal
+ * clip range. */
int caret_height = ta->line_height - 1;
y += ta->caret_y + vertical_offset;
if (y + caret_height >= clip_y0 && y <= clip_y1)
+ /* Caret in vertical clip range; plot */
plot.line(x + ta->caret_x, y + ta->caret_y,
x + ta->caret_x,
y + ta->caret_y + ta->line_height,