diff options
-rw-r--r-- | src/gui/text/qtextengine.cpp | 20 | ||||
-rw-r--r-- | src/plugins/accessible/widgets/qaccessiblewidgets.cpp | 2 | ||||
-rw-r--r-- | src/plugins/platforms/windows/qwindowsinputcontext.cpp | 6 |
3 files changed, 12 insertions, 16 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp index 8527a85369..cff1487278 100644 --- a/src/gui/text/qtextengine.cpp +++ b/src/gui/text/qtextengine.cpp @@ -157,27 +157,27 @@ private: 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; @@ -185,7 +185,7 @@ private: start = i; itemAnalysis = m_analysis[start]; - if (atWordBoundary) + if (atWordStart) itemAnalysis.flags = QScriptAnalysis::Uppercase; } m_items.append(QScriptItem(start, itemAnalysis)); diff --git a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp index 5f3f0bc3de..ad5ef69da4 100644 --- a/src/plugins/accessible/widgets/qaccessiblewidgets.cpp +++ b/src/plugins/accessible/widgets/qaccessiblewidgets.cpp @@ -949,7 +949,7 @@ QPair< int, int > QAccessibleTextWidget::getBoundaries(int offset, BoundaryType 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) diff --git a/src/plugins/platforms/windows/qwindowsinputcontext.cpp b/src/plugins/platforms/windows/qwindowsinputcontext.cpp index 8b3d6749a0..11fd740009 100644 --- a/src/plugins/platforms/windows/qwindowsinputcontext.cpp +++ b/src/plugins/platforms/windows/qwindowsinputcontext.cpp @@ -560,12 +560,8 @@ int QWindowsInputContext::reconvertString(RECONVERTSTRING *reconv) // 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(); |