diff options
author | Michael Drake <tlsa@netsurf-browser.org> | 2013-03-05 14:51:16 +0000 |
---|---|---|
committer | Michael Drake <tlsa@netsurf-browser.org> | 2013-03-05 22:54:51 +0000 |
commit | e8950dee22e82c00dcf48efe2b7125d87776c682 (patch) | |
tree | d5226e01f2f9e6b6e55d912a7663ac4d4ec621b7 /desktop/textarea.c | |
parent | 461d4576fbbe5a811074224b578d98af9f42de3c (diff) | |
download | netsurf-e8950dee22e82c00dcf48efe2b7125d87776c682.tar.gz netsurf-e8950dee22e82c00dcf48efe2b7125d87776c682.tar.bz2 |
Propagate native caret clip rect through core.
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); } |