summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorfvogel <fvogelnew1@free.fr>2014-12-30 14:59:37 (GMT)
committerfvogel <fvogelnew1@free.fr>2014-12-30 14:59:37 (GMT)
commit8f528741331d985f830903bcb81399e83bc9b65b (patch)
tree425a295dc7f3a75318be7306b62079f33f863994
parentc5ab06677bacc32bf7e375716ab3f9b1df00be2e (diff)
downloadtk-8f528741331d985f830903bcb81399e83bc9b65b.zip
tk-8f528741331d985f830903bcb81399e83bc9b65b.tar.gz
tk-8f528741331d985f830903bcb81399e83bc9b65b.tar.bz2
Polishing FindDLine - Avoid use of TkTextFindDisplayLineEnd when not really necessary (performance reasons, and avoids LayoutDLine/FreeDLine which maps/unmaps embedded windows unnecessarily)
-rw-r--r--generic/tkTextDisp.c7
1 files changed, 4 insertions, 3 deletions
diff --git a/generic/tkTextDisp.c b/generic/tkTextDisp.c
index a63c9bc..6b23002 100644
--- a/generic/tkTextDisp.c
+++ b/generic/tkTextDisp.c
@@ -6592,7 +6592,6 @@ FindDLine(
CONST TkTextIndex *indexPtr)/* Index of desired character. */
{
DLine *dlPtrPrev;
- TkTextIndex indexPtr2;
if (dlPtr == NULL) {
return NULL;
@@ -6617,14 +6616,16 @@ FindDLine(
dlPtrPrev = dlPtr;
dlPtr = dlPtr->nextPtr;
if (dlPtr == NULL) {
+ TkTextIndex indexPtr2;
/*
* We're past the last display line, either because the desired
* index lies past the visible text, or because the desired index
* is on the last display line showing the last logical line.
*/
indexPtr2 = dlPtrPrev->index;
- TkTextFindDisplayLineEnd(textPtr, &indexPtr2, 1, NULL);
- if (TkTextIndexCmp(&indexPtr2,indexPtr) >= 0) {
+ TkTextIndexForwBytes(textPtr, &indexPtr2, dlPtrPrev->byteCount,
+ &indexPtr2);
+ if (TkTextIndexCmp(&indexPtr2,indexPtr) > 0) {
dlPtr = dlPtrPrev;
break;
} else {