diff options
author | Qt Continuous Integration System <qt-info@nokia.com> | 2011-04-21 12:33:24 (GMT) |
---|---|---|
committer | Qt Continuous Integration System <qt-info@nokia.com> | 2011-04-21 12:33:24 (GMT) |
commit | 922090951809a2523223c6dcdac46f661a914b3d (patch) | |
tree | 904c7dc90d0347e4bc4276f2d0a9b27adbef5156 | |
parent | a334ad303d2763cd53fc5bd62945d08d3555b8a7 (diff) | |
parent | 83b7f27082841aae59b9236d6f6b3f255c9d94b1 (diff) | |
download | Qt-922090951809a2523223c6dcdac46f661a914b3d.zip Qt-922090951809a2523223c6dcdac46f661a914b3d.tar.gz Qt-922090951809a2523223c6dcdac46f661a914b3d.tar.bz2 |
Merge branch 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1 into master-integration
* 'master' of scm.dev.nokia.troll.no:qt/oslo-staging-1:
Use binary search to speed up findChildFrame()
-rw-r--r-- | src/gui/text/qtextdocument_p.cpp | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/src/gui/text/qtextdocument_p.cpp b/src/gui/text/qtextdocument_p.cpp index 2172f74..a997720 100644 --- a/src/gui/text/qtextdocument_p.cpp +++ b/src/gui/text/qtextdocument_p.cpp @@ -1406,11 +1406,18 @@ void QTextDocumentPrivate::changeObjectFormat(QTextObject *obj, int format) static QTextFrame *findChildFrame(QTextFrame *f, int pos) { - // ##### use binary search - QList<QTextFrame *> children = f->childFrames(); - for (int i = 0; i < children.size(); ++i) { - QTextFrame *c = children.at(i); - if (pos >= c->firstPosition() && pos <= c->lastPosition()) + /* Binary search for frame at pos */ + const QList<QTextFrame *> children = f->childFrames(); + int first = 0; + int last = children.size() - 1; + while (first <= last) { + int mid = (first + last) / 2; + QTextFrame *c = children.at(mid); + if (pos > c->lastPosition()) + first = mid + 1; + else if (pos < c->firstPosition()) + last = mid - 1; + else return c; } return 0; |