diff options
author | fvogel <fvogelnew1@free.fr> | 2016-03-27 15:27:45 (GMT) |
---|---|---|
committer | fvogel <fvogelnew1@free.fr> | 2016-03-27 15:27:45 (GMT) |
commit | 9f7f483211dbdf87338b70ec05942fbd7cca8b0f (patch) | |
tree | dafc86fa342731718279262df7e67d06773183cb /generic/tkText.c | |
parent | 5ac79af4213e794b4c9c7ab9a6a91232750d2320 (diff) | |
parent | 32ed623c6a6ea47b434caae5452486b9ed93e197 (diff) | |
download | tk-9f7f483211dbdf87338b70ec05942fbd7cca8b0f.zip tk-9f7f483211dbdf87338b70ec05942fbd7cca8b0f.tar.gz tk-9f7f483211dbdf87338b70ec05942fbd7cca8b0f.tar.bz2 |
Fixed [18c08df753] - Change of behaviour for text widget last newline
Diffstat (limited to 'generic/tkText.c')
-rw-r--r-- | generic/tkText.c | 19 |
1 files changed, 14 insertions, 5 deletions
diff --git a/generic/tkText.c b/generic/tkText.c index 76251c0..8b94ab7 100644 --- a/generic/tkText.c +++ b/generic/tkText.c @@ -3089,11 +3089,16 @@ DeleteIndexRange( * The code below is ugly, but it's needed to make sure there is always a * dummy empty line at the end of the text. If the final newline of the * file (just before the dummy line) is being deleted, then back up index - * to just before the newline. Furthermore, remove any tags that are - * present on the newline that isn't going to be deleted after all (this - * simulates deleting the newline and then adding a "clean" one back - * again). Note that index1 and index2 might now be equal again which - * means that no text will be deleted but tags might be removed. + * to just before the newline. If there is a newline just before the first + * character being deleted, then back up the first index too. The idea is + * that a deletion involving a range starting at a line start and + * including the final \n (i.e. index2 is "end") is an attempt to delete + * complete lines, so the \n before the deleted block shall become the new + * final \n. Furthermore, remove any tags that are present on the newline + * that isn't going to be deleted after all (this simulates deleting the + * newline and then adding a "clean" one back again). Note that index1 and + * index2 might now be equal again which means that no text will be + * deleted but tags might be removed. */ line1 = TkBTreeLinesTo(textPtr, index1.linePtr); @@ -3106,6 +3111,10 @@ DeleteIndexRange( oldIndex2 = index2; TkTextIndexBackChars(NULL, &oldIndex2, 1, &index2, COUNT_INDICES); line2--; + if ((index1.byteIndex == 0) && (line1 != 0)) { + TkTextIndexBackChars(NULL, &index1, 1, &index1, COUNT_INDICES); + line1--; + } arrayPtr = TkBTreeGetTags(&index2, NULL, &arraySize); if (arrayPtr != NULL) { for (i = 0; i < arraySize; i++) { |