summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qtextengine.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/text/qtextengine.cpp')
-rw-r--r--src/gui/text/qtextengine.cpp5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/gui/text/qtextengine.cpp b/src/gui/text/qtextengine.cpp
index 62de1fe..69598cf 100644
--- a/src/gui/text/qtextengine.cpp
+++ b/src/gui/text/qtextengine.cpp
@@ -2716,7 +2716,8 @@ int QTextEngine::getClusterLength(unsigned short *logClusters,
}
int QTextEngine::positionInLigature(const QScriptItem *si, int end,
- QFixed x, QFixed edge, int glyph_pos)
+ QFixed x, QFixed edge, int glyph_pos,
+ bool cursorOnCharacter)
{
unsigned short *logClusters = this->logClusters(si);
int clusterStart = -1;
@@ -2754,6 +2755,8 @@ int QTextEngine::positionInLigature(const QScriptItem *si, int end,
int n = ((x - left) / perItemWidth).floor().toInt();
QFixed dist = x - left - n * perItemWidth;
int closestItem = dist > (perItemWidth / 2) ? n + 1 : n;
+ if (cursorOnCharacter && closestItem > 0)
+ closestItem--;
int pos = si->position + clusterStart + closestItem;
// Jump to the next charStop
while (!attrs[pos].charStop && pos < end)