summaryrefslogtreecommitdiffstats
path: root/src/gui/text
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/text')
-rw-r--r--src/gui/text/qtextengine.cpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 3af03553f6..bb453d5e28 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -1656,12 +1656,19 @@ int QTextEngine::findItem(int strPos) const
{
itemize();
- int item;
- for (item = layoutData->items.size()-1; item > 0; --item) {
- if (layoutData->items[item].position <= strPos)
- break;
+ int left = 1;
+ int right = layoutData->items.size()-1;
+ while (left <= right) {
+ int middle = ((right-left)/2)+left;
+ if (strPos > layoutData->items[middle].position)
+ left = middle+1;
+ else if (strPos < layoutData->items[middle].position)
+ right = middle-1;
+ else {
+ return middle;
+ }
}
- return item;
+ return right;
}
QFixed QTextEngine::width(int from, int len) const