diff options
author | jghali <jghali@11d20701-8431-0410-a711-e3c959e3b870> | 2012-07-28 12:16:51 +0000 |
---|---|---|
committer | jghali <jghali@11d20701-8431-0410-a711-e3c959e3b870> | 2012-07-28 12:16:51 +0000 |
commit | 54bb3b108238b6d9eefff7dea8d7b2d1f74487de (patch) | |
tree | 2c5c6f9262d78e58c1a5a313cb5532952dc0bb84 | |
parent | a8c7246e2bda01a146105463a27c3b5827abf488 (diff) | |
download | scribus-54bb3b108238b6d9eefff7dea8d7b2d1f74487de.tar.gz scribus-54bb3b108238b6d9eefff7dea8d7b2d1f74487de.tar.xz scribus-54bb3b108238b6d9eefff7dea8d7b2d1f74487de.zip |
#10884: Text spills out of frame
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17739 11d20701-8431-0410-a711-e3c959e3b870
-rw-r--r-- | scribus/pageitem_textframe.cpp | 46 |
1 files changed, 39 insertions, 7 deletions
diff --git a/scribus/pageitem_textframe.cpp b/scribus/pageitem_textframe.cpp index 5684d5d..e6f8fd4 100644 --- a/scribus/pageitem_textframe.cpp +++ b/scribus/pageitem_textframe.cpp @@ -242,6 +242,39 @@ void PageItem_TextFrame::setShadow() } } +static void debugLineLayout(const StoryText& itemText, const LineSpec& line) +{ + QFile debugFile(QDir::homePath() + "/Desktop/debug_line.csv"); + debugFile.open(QIODevice::WriteOnly); + + QTextStream stream(&debugFile); + stream.setRealNumberNotation(QTextStream::FixedNotation); + stream.setRealNumberPrecision(7); + + stream << "xoffset" << "\t"; + stream << "yoffset" << "\t"; + stream << "xadvance" << "\t"; + stream << "yadvance" << "\t"; + stream << "scaleH" << "\t"; + stream << "scaleV" << "\t"; + stream << "\n"; + + for (int zc = line.firstItem; zc < line.lastItem; ++zc) + { + const ScText* item = itemText.item(zc); + + stream << item->glyph.xoffset << "\t"; + stream << item->glyph.yoffset << "\t"; + stream << item->glyph.xadvance << "\t"; + stream << item->glyph.yadvance << "\t"; + stream << item->glyph.scaleH << "\t"; + stream << item->glyph.scaleV << "\t"; + stream << "\n"; + } + + debugFile.close(); +} + static void dumpIt(const ParagraphStyle& pstyle, QString indent = QString("->")) { QString db = QString("%6%1/%2 @ %3: %4--%5 linespa%6: %7 align%8") @@ -2464,14 +2497,13 @@ void PageItem_TextFrame::layout() } MaxChars = itemText.length(); invalid = false; - if (NextBox != NULL) + + PageItem_TextFrame* nextFrame = dynamic_cast<PageItem_TextFrame*>(NextBox); + while (nextFrame != NULL) { - PageItem_TextFrame* nextFrame = dynamic_cast<PageItem_TextFrame*>(NextBox); - if (nextFrame != NULL) - { - nextFrame->invalid = true; - nextFrame->firstChar = MaxChars; - } + nextFrame->invalid = true; + nextFrame->firstChar = MaxChars; + nextFrame = dynamic_cast<PageItem_TextFrame*>(nextFrame->NextBox); } // qDebug("textframe: len=%d, done relayout", itemText.length()); return; |