From d48f3e3f490e9afca5435ff93a95ad963287cb39 Mon Sep 17 00:00:00 2001 From: Michael Drake Date: Fri, 22 Feb 2013 16:04:31 +0000 Subject: Textarea tweaks for caret placement after selection removal. --- desktop/textarea.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'desktop') diff --git a/desktop/textarea.c b/desktop/textarea.c index 414408045..98eb8bee7 100644 --- a/desktop/textarea.c +++ b/desktop/textarea.c @@ -1876,6 +1876,7 @@ bool textarea_keypress(struct textarea *ta, uint32_t key) ta->sel_start, ta->sel_end, "", 0, false)) return false; + caret = ta->sel_start; textarea_clear_selection(ta); } else { if (ta->lines[line].b_length != 0) { @@ -1883,8 +1884,8 @@ bool textarea_keypress(struct textarea *ta, uint32_t key) b_off = ta->lines[line].b_start; b_len = ta->lines[line].b_length; l_len = utf8_bounded_length( - &(ta->text.data[b_off]), - b_len); + &(ta->show-> + data[b_off]), b_len); caret -= ta->caret_pos.char_off; if (!textarea_replace_text(ta, caret, caret + l_len, "", 0, @@ -2141,12 +2142,13 @@ bool textarea_keypress(struct textarea *ta, uint32_t key) ta->sel_start, ta->sel_end, "", 0, false)) return false; + caret = ta->sel_start; textarea_clear_selection(ta); } else { b_off = ta->lines[line].b_start; b_len = ta->lines[line].b_length; l_len = utf8_bounded_length( - &(ta->text.data[b_off]), + &(ta->show->data[b_off]), b_len) - ta->caret_pos.char_off; if (!textarea_replace_text(ta, caret, caret + l_len, "", 0, false)) @@ -2162,6 +2164,7 @@ bool textarea_keypress(struct textarea *ta, uint32_t key) ta->sel_start, ta->sel_end, "", 0, false)) return false; + caret = ta->sel_start; textarea_clear_selection(ta); } else { if (!textarea_replace_text(ta, -- cgit v1.2.3