editor: Properly adjust cursor on delete
Signed-off-by: Jan Arne Petersen <jpetersen@openismus.com>
diff --git a/clients/editor.c b/clients/editor.c
index 16ede4f..35f6d08 100644
--- a/clients/editor.c
+++ b/clients/editor.c
@@ -837,16 +837,19 @@
{
uint32_t l;
- if (entry->cursor > index)
- entry->cursor -= length;
-
- entry->anchor = entry->cursor;
l = strlen(entry->text + index + length);
memmove(entry->text + index,
entry->text + index + length,
l + 1);
+ if (entry->cursor > (index + length))
+ entry->cursor -= length;
+ else if (entry->cursor > index)
+ entry->cursor = index;
+
+ entry->anchor = entry->cursor;
+
text_entry_update_layout(entry);
widget_schedule_redraw(entry->widget);