diff options
Diffstat (limited to 'desktop/textarea.c')
-rw-r--r-- | desktop/textarea.c | 24 |
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); } |