fix row breaking before display()ed insets

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@8473 a592a061-630c-0410-9148-cb99ea01b6c8
This commit is contained in:
Alfredo Braunstein 2004-03-01 17:25:16 +00:00
parent fc52df8243
commit d0bcd26ec5
2 changed files with 29 additions and 26 deletions

View File

@ -1,11 +1,6 @@
2004-03-01 Alfredo Braunstein <abraunst@lyx.org> 2004-03-01 Alfredo Braunstein <abraunst@lyx.org>
* lyxtext.h: * text.C (rowBreakPoint): fix breaking before displayed insets
* text.C:
* text2.C:
* rowpainter.C:
* BufferView_pimpl.C: rename textwidth -> maxwidth,
prepareToPrint -> computeRowMetrics and remove textWidth accessor.
2004-03-01 André Pönitz <poenitz@gmx.net> 2004-03-01 André Pönitz <poenitz@gmx.net>
@ -23,6 +18,15 @@
* text2.C: * text2.C:
* text3.C: adjust * text3.C: adjust
2004-03-01 Alfredo Braunstein <abraunst@lyx.org>
* lyxtext.h:
* text.C:
* text2.C:
* rowpainter.C:
* BufferView_pimpl.C: rename textwidth -> maxwidth,
prepareToPrint -> computeRowMetrics and remove textWidth accessor.
2004-03-01 Alfredo Braunstein <abraunst@lyx.org> 2004-03-01 Alfredo Braunstein <abraunst@lyx.org>
* Bidi.[Ch] (computeTables): const correctness * Bidi.[Ch] (computeTables): const correctness

View File

@ -493,23 +493,6 @@ void LyXText::rowBreakPoint(ParagraphList::iterator pit, Row & row) const
pos_type point = end; pos_type point = end;
pos_type i = pos; pos_type i = pos;
for ( ; i < end; ++i, ++fi) { for ( ; i < end; ++i, ++fi) {
if (pit->isNewline(i)) {
point = i + 1;
break;
}
// Break before...
if (i + 1 < end) {
if (pit->isInset(i + 1) && pit->getInset(i + 1)->display()) {
point = i + 1;
break;
}
// ...and after.
if (pit->isInset(i) && pit->getInset(i)->display()) {
point = i + 1;
break;
}
}
char const c = pit->getChar(i); char const c = pit->getChar(i);
{ {
@ -544,6 +527,23 @@ void LyXText::rowBreakPoint(ParagraphList::iterator pit, Row & row) const
break; break;
} }
if (pit->isNewline(i)) {
point = i + 1;
break;
}
// Break before...
if (i + 1 < end) {
if (pit->isInset(i + 1) && pit->getInset(i + 1)->display()) {
point = i + 1;
break;
}
// ...and after.
if (pit->isInset(i) && pit->getInset(i)->display()) {
point = i + 1;
break;
}
}
if (!pit->isInset(i) || pit->getInset(i)->isChar()) { if (!pit->isInset(i) || pit->getInset(i)->isChar()) {
// some insets are line separators too // some insets are line separators too
if (pit->isLineSeparator(i)) { if (pit->isLineSeparator(i)) {
@ -554,10 +554,9 @@ void LyXText::rowBreakPoint(ParagraphList::iterator pit, Row & row) const
} }
} }
if (i == end && x < width) {
// maybe found one, but the par is short enough. // maybe found one, but the par is short enough.
if (i == end && x < width)
point = end; point = end;
}
// manual labels cannot be broken in LaTeX. But we // manual labels cannot be broken in LaTeX. But we
// want to make our on-screen rendering of footnotes // want to make our on-screen rendering of footnotes