summaryrefslogtreecommitdiff
path: root/desktop/textarea.c
diff options
context:
space:
mode:
authorMichael Drake <tlsa@netsurf-browser.org>2013-03-05 14:51:16 +0000
committerMichael Drake <tlsa@netsurf-browser.org>2013-03-05 22:54:51 +0000
commite8950dee22e82c00dcf48efe2b7125d87776c682 (patch)
treed5226e01f2f9e6b6e55d912a7663ac4d4ec621b7 /desktop/textarea.c
parent461d4576fbbe5a811074224b578d98af9f42de3c (diff)
downloadnetsurf-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.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);
}