Index: scribus/pageitem_textframe.cpp =================================================================== --- scribus/pageitem_textframe.cpp (revision 20493) +++ scribus/pageitem_textframe.cpp (working copy) @@ -1654,6 +1654,7 @@ double scaleH = charStyle.scaleH() / 1000.0; double offset = hlcsize10 * (charStyle.baselineOffset() / 1000.0); style.setLineSpacing (calculateLineSpacing (style, this)); + setLSpace(calculateLineSpacing (style, this)); FlopBaseline = (current.startOfCol && firstLineOffset() == FLOPBaselineGrid); // find out about par gap and dropcap @@ -2995,6 +2996,8 @@ { regionMinY = static_cast(qMax(0.0, floor(current.yPos - (asce + offset)))); regionMaxY = static_cast(floor(current.yPos + desc)); + setMiniY( regionMinY); + setMaxiY( regionMaxY); } EndX = current.endOfLine(m_availableRegion, style.rightMargin(), regionMinY, regionMaxY); @@ -6085,7 +6088,9 @@ { //ugly hack increasing min frame`s haeight against strange glyph painting if it is too close of bottom double hackValue = 0.5; - + int miniY = getminiY(); + int maxiY = getmaxiY(); + maxY = (maxiY-miniY)*(textLayout.lines())+getLSpace()*(textLayout.lines() -textLayout.lines()/2 )/2; setHeight(ceil(maxY) + m_textDistanceMargins.bottom() + hackValue); updateClip(); invalid = true; @@ -6092,3 +6097,29 @@ m_Doc->changed(); m_Doc->regionsChanged()->update(QRect()); } +int PageItem_TextFrame::getminiY() +{ + return miniY; +} +int PageItem_TextFrame::getmaxiY() +{ + return maxiY; +} + +void PageItem_TextFrame::setMiniY(int value) +{ + miniY = ceil(value); +} +void PageItem_TextFrame::setMaxiY(int value) +{ + maxiY = ceil(value); +} +int PageItem_TextFrame::getLSpace() +{ + return lSpace; +} + +void PageItem_TextFrame::setLSpace(int value) +{ + lSpace = value; +} Index: scribus/pageitem_textframe.h =================================================================== --- scribus/pageitem_textframe.h (revision 20493) +++ scribus/pageitem_textframe.h (working copy) @@ -146,6 +146,9 @@ void invalidateNotesFrames(); private: + int miniY; + int maxiY; + int lSpace; NotesInFrameMap m_notesFramesMap; NotesInFrameMap updateNotesFrames(QMap noteMarksPosMap); //update notes frames content void updateNotesMarks(NotesInFrameMap notesMap); @@ -159,6 +162,12 @@ public: void setTextFrameHeight(); + int getminiY(); + int getmaxiY(); + int getLSpace(); + void setLSpace(int value); + void setMiniY(int value); + void setMaxiY(int value); }; #endif