From ad3cd6ae0c8a9744675a6164e3bf83c645780a27 Mon Sep 17 00:00:00 2001 From: Ilia Maslakov Date: Sun, 4 Jul 2010 19:36:19 +0000 Subject: [PATCH] Ticket #2153 (editor wrong copy/move selected text) fixed incorrect calculate position start/end marked block, after edit text in the area ahead marked text. Signed-off-by: Ilia Maslakov --- src/editor/edit.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/editor/edit.c b/src/editor/edit.c index aa94665e7..1ab86ef75 100644 --- a/src/editor/edit.c +++ b/src/editor/edit.c @@ -1386,10 +1386,6 @@ edit_delete (WEdit * edit, const int byte_delete) if (!edit->curs2) return 0; - edit->mark1 -= (edit->mark1 > edit->curs1); - edit->mark2 -= (edit->mark2 > edit->curs1); - edit->last_get_rule -= (edit->last_get_rule > edit->curs1); - cw = 1; /* if byte_delete = 1 then delete only one byte not multibyte char */ if (edit->utf8 && byte_delete == 0) @@ -1400,6 +1396,10 @@ edit_delete (WEdit * edit, const int byte_delete) } for (i = 1; i <= cw; i++) { + edit->mark1 -= (edit->mark1 > edit->curs1); + edit->mark2 -= (edit->mark2 > edit->curs1); + edit->last_get_rule -= (edit->last_get_rule > edit->curs1); + p = edit->buffers2[(edit->curs2 - 1) >> S_EDIT_BUF_SIZE][EDIT_BUF_SIZE - ((edit->curs2 - 1) & M_EDIT_BUF_SIZE) - 1]; @@ -1443,11 +1443,8 @@ edit_backspace (WEdit * edit, const int byte_delete) if (!edit->curs1) return 0; - edit->mark1 -= (edit->mark1 >= edit->curs1); - edit->mark2 -= (edit->mark2 >= edit->curs1); - edit->last_get_rule -= (edit->last_get_rule >= edit->curs1); - cw = 1; + if (edit->utf8 && byte_delete == 0) { edit_get_prev_utf (edit, edit->curs1, &cw); @@ -1456,6 +1453,10 @@ edit_backspace (WEdit * edit, const int byte_delete) } for (i = 1; i <= cw; i++) { + edit->mark1 -= (edit->mark1 >= edit->curs1); + edit->mark2 -= (edit->mark2 >= edit->curs1); + edit->last_get_rule -= (edit->last_get_rule >= edit->curs1); + p = *(edit->buffers1[(edit->curs1 - 1) >> S_EDIT_BUF_SIZE] + ((edit->curs1 - 1) & M_EDIT_BUF_SIZE)); if (!((edit->curs1 - 1) & M_EDIT_BUF_SIZE))