]> git.lyx.org Git - features.git/commitdiff
Give fullRow insets a full row width, small bugfix, force rebreak of row when
authorJürgen Vigna <jug@sad.it>
Fri, 12 Apr 2002 08:22:16 +0000 (08:22 +0000)
committerJürgen Vigna <jug@sad.it>
Fri, 12 Apr 2002 08:22:16 +0000 (08:22 +0000)
inserting an inset (fix #292 hopefully).

git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@3978 a592a061-630c-0410-9148-cb99ea01b6c8

src/ChangeLog
src/text.C
src/text2.C

index 39925bdbfd658c426b7fa0636fec9223e7d64ce5..454ae73f1ad9dd1b2b928aa741f82477a770f0e0 100644 (file)
@@ -1,3 +1,10 @@
+2002-04-12  Juergen Vigna  <jug@sad.it>
+
+       * text.C (leftMargin): return LYX_PAPER_MARGIN if this row contains
+       an inset which uses the whole row!
+       (rightMargin): ditto.
+       (insertChar): force a rebreak if we inserted an inset!
+
 2002-03-28  Herbert Voss  <voss@lyx.org>
 
        * lyxlength.[Ch]: add inBP() to get the right PS-point
@@ -6,6 +13,7 @@
 2002-04-11  Juergen Vigna  <jug@sad.it>
 
        * text2.C (setCursorFromCoordinates): set iy to the right value.
+       (setCursor): add check if row->previous exists!
 
        * buffer.C (parseSingleLyXformat2Token): reset font after read of
        an old float_type as this was the case in the old code!
index 7bbca3dfeec05b024f4961df1bb939389768b95f..73690c491e7a7bf3e53a28f6891544f17b5f07f5 100644 (file)
@@ -690,6 +690,12 @@ void LyXText::draw(DrawRowParams & p, pos_type & vpos)
 // exactly the label-width.
 int LyXText::leftMargin(BufferView * bview, Row const * row) const
 {
+       Inset * ins;
+       if ((row->par()->getChar(row->pos()) == Paragraph::META_INSET) &&
+               (ins=row->par()->getInset(row->pos())) &&
+               (ins->needFullRow() || ins->display()))
+               return LYX_PAPER_MARGIN;
+
        LyXTextClass const & tclass =
                textclasslist[bview->buffer()->params.textclass];
        LyXLayout const & layout = tclass[row->par()->layout()];
@@ -866,6 +872,12 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
 
 int LyXText::rightMargin(Buffer const * buf, Row const * row) const
 {
+       Inset * ins;
+       if ((row->par()->getChar(row->pos()) == Paragraph::META_INSET) &&
+               (ins=row->par()->getInset(row->pos())) &&
+               (ins->needFullRow() || ins->display()))
+               return LYX_PAPER_MARGIN;
+
        LyXTextClass const & tclass = textclasslist[buf->params.textclass];
        LyXLayout const & layout = tclass[row->par()->layout()];
 
@@ -1937,12 +1949,12 @@ void LyXText::insertChar(BufferView * bview, char c)
        }
 
        // Is there a break one row above
-       if ((cursor.par()->isLineSeparator(cursor.pos())
-            || cursor.par()->isNewline(cursor.pos())
-                || ((cursor.pos() < cursor.par()->size()) &&
-                        cursor.par()->isInset(cursor.pos()+1))
-            || cursor.row()->fill() == -1)
-           && row->previous() && row->previous()->par() == row->par())
+       if (row->previous() && row->previous()->par() == row->par()
+           && (cursor.par()->isLineSeparator(cursor.pos())
+               || cursor.par()->isNewline(cursor.pos())
+               || ((cursor.pos() < cursor.par()->size()) &&
+                   cursor.par()->isInset(cursor.pos()+1))
+               || cursor.row()->fill() == -1))
        {
                pos_type z = nextBreakPoint(bview,
                                                           row->previous(),
@@ -1990,7 +2002,7 @@ void LyXText::insertChar(BufferView * bview, char c)
                                * will set fill to -1. Otherwise
                                * we would not get a rebreak! */
                row->fill(fill(bview, row, workWidth(bview)));
-       if (row->fill() < 0) {
+       if (c == Paragraph::META_INSET || row->fill() < 0) {
                refresh_y = y;
                refresh_row = row;
                refresh_x = cursor.x();
@@ -2088,7 +2100,8 @@ void LyXText::prepareToPrint(BufferView * bview,
                x = (workWidth(bview) > 0)
                        ? rightMargin(bview->buffer(), row) : 0;
        } else
-               x = (workWidth(bview) > 0) ? leftMargin(bview, row) : 0;
+               x = (workWidth(bview) > 0)
+                       ? leftMargin(bview, row) : 0;
 
        // is there a manual margin with a manual label
        LyXTextClass const & tclass = textclasslist[bview->buffer()->params.textclass];
index 7ce0ae4a61268220ef34512c2d997be4a2c45fb9..0057a8600fb70dcdae350fa6f0244f518b875d36 100644 (file)
@@ -2070,7 +2070,8 @@ void LyXText::setCursor(BufferView * bview, LyXCursor & cur, Paragraph * par,
        // the end of the previous row
        cur.iy(y + row->baseline());
        Inset * ins;
-       if (pos && par->getChar(pos) == Paragraph::META_INSET &&
+       if (row->previous() && pos &&
+               par->getChar(pos) == Paragraph::META_INSET &&
                (ins=par->getInset(pos)) && (ins->needFullRow() || ins->display()))
        {
                row = row->previous();