From e8950dee22e82c00dcf48efe2b7125d87776c682 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Tue, 5 Mar 2013 14:51:16 +0000 Subject: Propagate native caret clip rect through core. --- desktop/textarea.c | 24 +++++++++++++++++++++--- 1 file changed, 21 insertions(+), 3 deletions(-) (limited to 'desktop/textarea.c') 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); } -- cgit v1.2.3