summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/gui/painting/qpainter.cpp8
-rw-r--r--src/gui/text/qstatictext.cpp15
2 files changed, 9 insertions, 14 deletions
diff --git a/src/gui/painting/qpainter.cpp b/src/gui/painting/qpainter.cpp
index 435ad9b..6bb8acd 100644
--- a/src/gui/painting/qpainter.cpp
+++ b/src/gui/painting/qpainter.cpp
@@ -5729,12 +5729,8 @@ void QPainter::drawStaticText(const QPointF &position, const QStaticText &static
QFixed x = QFixed::fromReal(position.x());
for (int i=0; i<staticText_d->items.size();++i) {
QTextItemInt *gf = staticText_d->items.at(i);
- if (gf->num_chars == 0) {
- x += gf->width;
- continue;
- }
-
- drawTextItem(QPointF(x.toReal(), position.y()), *gf);
+ if (gf->num_chars != 0)
+ drawTextItem(QPointF(x.toReal(), position.y()), *gf);
x += gf->width;
}
}
diff --git a/src/gui/text/qstatictext.cpp b/src/gui/text/qstatictext.cpp
index 90fde9d..e9fd9c5 100644
--- a/src/gui/text/qstatictext.cpp
+++ b/src/gui/text/qstatictext.cpp
@@ -242,8 +242,8 @@ QStaticTextPrivate::QStaticTextPrivate(const QStaticTextPrivate &other)
QStaticTextPrivate::~QStaticTextPrivate()
{
- delete glyphLayoutMemory;
- delete logClusterMemory;
+ delete[] glyphLayoutMemory;
+ delete[] logClusterMemory;
qDeleteAll(items);
}
@@ -254,11 +254,11 @@ QStaticTextPrivate *QStaticTextPrivate::get(const QStaticText *q)
void QStaticTextPrivate::init()
{
- delete glyphLayoutMemory;
- delete logClusterMemory;
+ delete[] glyphLayoutMemory;
+ delete[] logClusterMemory;
qDeleteAll(items);
- QStackTextEngine engine = QStackTextEngine(text, font);
+ QStackTextEngine engine(text, font);
engine.itemize();
engine.option.setTextDirection(QApplication::layoutDirection());
@@ -273,7 +273,7 @@ void QStaticTextPrivate::init()
levels[i] = engine.layoutData->items[i].analysis.bidiLevel;
QTextEngine::bidiReorder(nItems, levels.data(), visualOrder.data());
- int numGlyphs = engine.layoutData->glyphLayout.numGlyphs;
+ int numGlyphs = engine.layoutData->used;
glyphLayoutMemory = new char[QGlyphLayout::spaceNeededForGlyphLayout(numGlyphs)];
logClusterMemory = new unsigned short[numGlyphs];
@@ -289,10 +289,9 @@ void QStaticTextPrivate::init()
gf->width = si.width;
items.append(gf);
continue;
- }
+ }
QTextItemInt *gf = new QTextItemInt(si, &f);
-
QGlyphLayout l = engine.shapedGlyphs(&si);
gf->glyphs = l.clone(currentGlyphLayout);
currentGlyphLayout += QGlyphLayout::spaceNeededForGlyphLayout(l.numGlyphs);