summaryrefslogtreecommitdiff
path: root/desktop/textarea.c
diff options
context:
space:
mode:
Diffstat (limited to 'desktop/textarea.c')
-rw-r--r--desktop/textarea.c24
1 files changed, 21 insertions, 3 deletions
diff --git a/desktop/textarea.c b/desktop/textarea.c
index 73781f261..26c1e0ba4 100644
--- a/desktop/textarea.c
+++ b/desktop/textarea.c
@@ -462,13 +462,19 @@ static void textarea_scrollbar_callback(void *client_data,
if (!(ta->flags & TEXTAREA_INTERNAL_CARET)) {
/* Tell client where caret should be placed */
+ struct rect cr = {
+ .x0 = ta->border_width,
+ .y0 = ta->border_width,
+ .x1 = ta->vis_width - ta->border_width,
+ .y1 = ta->vis_height - ta->border_width
+ };
msg.ta = ta;
msg.type = TEXTAREA_MSG_CARET_UPDATE;
msg.data.caret.type = TEXTAREA_CARET_SET_POS;
msg.data.caret.pos.x = ta->caret_x - ta->scroll_x;
msg.data.caret.pos.y = ta->caret_y - ta->scroll_y;
msg.data.caret.pos.height = ta->line_height;
- msg.data.caret.pos.clip = NULL;
+ msg.data.caret.pos.clip = &cr;
ta->callback(ta->data, &msg);
}
@@ -1443,13 +1449,19 @@ bool textarea_set_caret(struct textarea *ta, int caret)
if (!(ta->flags & TEXTAREA_INTERNAL_CARET)) {
/* Tell client where caret should be placed */
+ struct rect cr = {
+ .x0 = ta->border_width,
+ .y0 = ta->border_width,
+ .x1 = ta->vis_width - ta->border_width,
+ .y1 = ta->vis_height - ta->border_width
+ };
msg.ta = ta;
msg.type = TEXTAREA_MSG_CARET_UPDATE;
msg.data.caret.type = TEXTAREA_CARET_SET_POS;
msg.data.caret.pos.x = x - ta->scroll_x;
msg.data.caret.pos.y = y - ta->scroll_y;
msg.data.caret.pos.height = ta->line_height;
- msg.data.caret.pos.clip = NULL;
+ msg.data.caret.pos.clip = &cr;
ta->callback(ta->data, &msg);
}
@@ -2375,13 +2387,19 @@ bool textarea_clear_selection(struct textarea *ta)
if (!(ta->flags & TEXTAREA_INTERNAL_CARET)) {
/* Tell client where caret should be placed */
+ struct rect cr = {
+ .x0 = ta->border_width,
+ .y0 = ta->border_width,
+ .x1 = ta->vis_width - ta->border_width,
+ .y1 = ta->vis_height - ta->border_width
+ };
msg.ta = ta;
msg.type = TEXTAREA_MSG_CARET_UPDATE;
msg.data.caret.type = TEXTAREA_CARET_SET_POS;
msg.data.caret.pos.x = ta->caret_x - ta->scroll_x;
msg.data.caret.pos.y = ta->caret_y - ta->scroll_y;
msg.data.caret.pos.height = ta->line_height;
- msg.data.caret.pos.clip = NULL;
+ msg.data.caret.pos.clip = &cr;
ta->callback(ta->data, &msg);
}