m_splitter->setPosition(start);
QScriptAnalysis itemAnalysis = m_analysis[start];
- if (m_splitter->boundaryReasons() & QTextBoundaryFinder::StartWord) {
+ if (m_splitter->boundaryReasons() & QTextBoundaryFinder::StartOfItem)
itemAnalysis.flags = QScriptAnalysis::Uppercase;
- m_splitter->toNextBoundary();
- }
+
+ m_splitter->toNextBoundary();
const int end = start + length;
for (int i = start + 1; i < end; ++i) {
-
- bool atWordBoundary = false;
+ bool atWordStart = false;
if (i == m_splitter->position()) {
- if (m_splitter->boundaryReasons() & QTextBoundaryFinder::StartWord
- && m_analysis[i].flags < QScriptAnalysis::TabOrObject)
- atWordBoundary = true;
+ if (m_splitter->boundaryReasons() & QTextBoundaryFinder::StartOfItem) {
+ Q_ASSERT(m_analysis[i].flags < QScriptAnalysis::TabOrObject);
+ atWordStart = true;
+ }
m_splitter->toNextBoundary();
}
if (m_analysis[i] == itemAnalysis
&& m_analysis[i].flags < QScriptAnalysis::TabOrObject
- && !atWordBoundary
+ && !atWordStart
&& i - start < MaxItemLength)
continue;
start = i;
itemAnalysis = m_analysis[start];
- if (atWordBoundary)
+ if (atWordStart)
itemAnalysis.flags = QScriptAnalysis::Uppercase;
}
m_items.append(QScriptItem(start, itemAnalysis));
sentenceFinder.setPosition(offsetWithinBlockText);
int prevBoundary = offsetWithinBlockText;
int nextBoundary = offsetWithinBlockText;
- if (!sentenceFinder.isAtBoundary())
+ if (!(sentenceFinder.boundaryReasons() & QTextBoundaryFinder::StartOfItem))
prevBoundary = sentenceFinder.toPreviousBoundary();
nextBoundary = sentenceFinder.toNextBoundary();
if (nextBoundary != -1)
// Find the word in the surrounding text.
QTextBoundaryFinder bounds(QTextBoundaryFinder::Word, surroundingText);
bounds.setPosition(pos);
- if (bounds.isAtBoundary()) {
- if (QTextBoundaryFinder::EndWord == bounds.boundaryReasons())
- bounds.toPreviousBoundary();
- } else {
+ if (bounds.position() > 0 && !(bounds.boundaryReasons() & QTextBoundaryFinder::StartOfItem))
bounds.toPreviousBoundary();
- }
const int startPos = bounds.position();
bounds.toNextBoundary();
const int endPos = bounds.position();