summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/text/qtextengine.cpp20
-rw-r--r--src/plugins/accessible/widgets/qaccessiblewidgets.cpp2
-rw-r--r--src/plugins/platforms/windows/qwindowsinputcontext.cpp6
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();