diff --git a/limereport/items/lrtextitem.cpp b/limereport/items/lrtextitem.cpp index d0b699d..20ce271 100644 --- a/limereport/items/lrtextitem.cpp +++ b/limereport/items/lrtextitem.cpp @@ -457,7 +457,7 @@ void TextItem::expandContent(DataSourceManager* dataManager, RenderPass pass) context=expandScripts(context, dataManager); } - if (expandType == NoEscapeSymbols) { + if (expandType == NoEscapeSymbols && !m_varValue.isNull() &&m_valueType!=Default) { setContent(formatFieldValue()); } else { setContent(context); @@ -490,22 +490,26 @@ bool TextItem::canBeSplitted(int height) const BaseDesignIntf *TextItem::cloneUpperPart(int height, QObject *owner, QGraphicsItem *parent) { int linesHeight=0; - initText(); QString tmpText=""; TextItem* upperPart = dynamic_cast(cloneItem(itemMode(),owner,parent)); for (QTextBlock it=m_text->begin();it!=m_text->end();it=it.next()){ for (int i=0;ilineCount();i++){ linesHeight+=it.layout()->lineAt(i).height(); - if (linesHeight>(height-(fakeMarginSize()*2+borderLineSize()*2))) {linesHeight-=it.layout()->lineAt(i).height(); goto loop_exit;} + if (linesHeight>(height-(fakeMarginSize()*2+borderLineSize()*2))) { + linesHeight-=it.layout()->lineAt(i).height(); + goto loop_exit; + } tmpText+=it.text().mid(it.layout()->lineAt(i).textStart(),it.layout()->lineAt(i).textLength())+'\n'; } } loop_exit: - tmpText = tmpText.trimmed(); + tmpText.chop(1); + upperPart->setHeight(linesHeight+fakeMarginSize()*2+borderLineSize()*2); QScopedPointer context(new HtmlContext(m_strText)); upperPart->setContent(context->extendTextByTags(tmpText,0)); + upperPart->initText(); return upperPart; } @@ -525,19 +529,20 @@ BaseDesignIntf *TextItem::cloneBottomPart(int height, QObject *owner, QGraphicsI } } loop_exit:; + int textPos=0; for (;curBlock!=m_text->end();curBlock=curBlock.next()){ - for (;curLinelineCount();curLine++){ + for (curLine=0;curLinelineCount();curLine++){ if (tmpText=="") textPos= curBlock.layout()->lineAt(curLine).textStart(); tmpText+=curBlock.text().mid(curBlock.layout()->lineAt(curLine).textStart(), - curBlock.layout()->lineAt(curLine).textLength()) +"\n"; + curBlock.layout()->lineAt(curLine).textLength()) + "\n"; } } - - if (!m_strText.endsWith("\n")) tmpText = tmpText.trimmed(); + tmpText.chop(1); QScopedPointer context(new HtmlContext(m_strText)); bottomPart->setContent(context->extendTextByTags(tmpText,textPos)); + bottomPart->initText(); bottomPart->setHeight(bottomPart->m_textSize.height()+borderLineSize()*2); return bottomPart; } diff --git a/limereport/lrreportrender.cpp b/limereport/lrreportrender.cpp index 768f6aa..b39518a 100644 --- a/limereport/lrreportrender.cpp +++ b/limereport/lrreportrender.cpp @@ -768,7 +768,9 @@ BandDesignIntf* ReportRender::sliceBand(BandDesignIntf *band, BandDesignIntf* pa band = saveUppperPartReturnBottom(band,m_maxHeightByColumn[m_currentColumn],patternBand); if (!band->isEmpty()) { if (band->autoHeight()){ - band->setHeight(0); + if (band->isNeedUpdateSize(FirstPass)){ + band->setHeight(0); + } band->updateItemSize(m_datasources); } DataBandDesignIntf* data = dynamic_cast(band);