diff options
-rw-r--r-- | src/gui/painting/qpainter.cpp | 8 | ||||
-rw-r--r-- | src/gui/text/qstatictext.cpp | 15 |
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); |