summaryrefslogtreecommitdiffstats
path: root/src/gui/text/qtextlayout.cpp
diff options
context:
space:
mode:
authorEskil Abrahamsen Blomfeldt <eskil.abrahamsen-blomfeldt@theqtcompany.com>2014-12-15 13:50:11 +0100
committerKonstantin Ritt <ritt.ks@gmail.com>2014-12-15 21:02:12 +0100
commit19bb9aa9e51e48043544fd7edf5abfda67955a4b (patch)
tree69860b0a7e408d2d2a22e1309e3cccd34374d81c /src/gui/text/qtextlayout.cpp
parent21101d9c52d2b7c6471f9814c9bff5aa87e22afc (diff)
Fix possibly corrupted log clusters when using custom tab stops
The calculateTabWidth() can trigger shaping of the item, which can cause the layout data to be reallocated, so we need to update the local pointers to it, like we do when we explicitly invoke the shaper. [ChangeLog][Text] Fixed problems with text layout when using custom tab stops. Task-number: QTBUG-43126 Change-Id: Ifaeeeb4bfb1a55e6638b12b444f53d2679d3d1e6 Reviewed-by: Konstantin Ritt <ritt.ks@gmail.com>
Diffstat (limited to 'src/gui/text/qtextlayout.cpp')
-rw-r--r--src/gui/text/qtextlayout.cpp5
1 files changed, 5 insertions, 0 deletions
diff --git a/src/gui/text/qtextlayout.cpp b/src/gui/text/qtextlayout.cpp
index 733bb57928..52d2ba0d54 100644
--- a/src/gui/text/qtextlayout.cpp
+++ b/src/gui/text/qtextlayout.cpp
@@ -1776,6 +1776,11 @@ void QTextLine::layout_helper(int maxGlyphs)
QFixed x = line.x + line.textWidth + lbh.tmpData.textWidth + lbh.spaceData.textWidth;
QFixed tabWidth = eng->calculateTabWidth(item, x);
+ attributes = eng->attributes();
+ if (!attributes)
+ return;
+ lbh.logClusters = eng->layoutData->logClustersPtr;
+ lbh.glyphs = eng->shapedGlyphs(&current);
lbh.spaceData.textWidth += tabWidth;
lbh.spaceData.length++;