]> git.lyx.org Git - lyx.git/blobdiff - src/text.C
Fix deleting of paragraphs after undo (fix #236).
[lyx.git] / src / text.C
index eab4bc762f329cb659cb85c221cbef337acf222a..f96bd6408944550d04dc6a6f847e7cc5eb916754 100644 (file)
@@ -834,8 +834,10 @@ int LyXText::leftMargin(BufferView * bview, Row const * row) const
                         && ! row->par()->isFirstInSequence()))
                    && align == LYX_ALIGN_BLOCK
                    && !row->par()->params().noindent()
-                       // in tabulars paragraphs are never indented!
-                       && (!row->par()->inInset() || row->par()->inInset()->owner()->lyxCode() != Inset::TABULAR_CODE)
+                       // in tabulars and ert paragraphs are never indented!
+                       && (!row->par()->inInset() || !row->par()->inInset()->owner() ||
+                               (row->par()->inInset()->owner()->lyxCode() != Inset::TABULAR_CODE &&
+                                row->par()->inInset()->owner()->lyxCode() != Inset::ERT_CODE))
                    && (row->par()->layout() != tclass.defaultLayoutName() ||
                        bview->buffer()->params.paragraph_separation ==
                        BufferParams::PARSEP_INDENT)) {
@@ -1679,15 +1681,16 @@ void LyXText::breakAgainOneRow(BufferView * bview, Row * row)
 
 void LyXText::breakParagraph(BufferView * bview, char keep_layout)
 {
-   LyXLayout const & layout =
-          textclasslist[bview->buffer()->params.textclass][cursor.par()->layout()];
+       LyXTextClass const & tclass =
+               textclasslist[bview->buffer()->params.textclass];
+   LyXLayout const & layout = tclass[cursor.par()->layout()];
 
    // this is only allowed, if the current paragraph is not empty or caption
    if ((cursor.par()->size() <= 0)
        && layout.labeltype!= LABEL_SENSITIVE)
           return;
    
-   setUndo(bview, Undo::INSERT,cursor.par(),cursor.par()->next()); 
+   setUndo(bview, Undo::FINISH, cursor.par(), cursor.par()->next()); 
 
    // Always break behind a space
    //
@@ -1709,10 +1712,10 @@ void LyXText::breakParagraph(BufferView * bview, char keep_layout)
    if (layout.labeltype == LABEL_SENSITIVE) {
      if (!cursor.pos())
             // set to standard-layout
-            cursor.par()->applyLayout(0);
+            cursor.par()->applyLayout(tclass.defaultLayoutName());
      else
             // set to standard-layout
-            cursor.par()->next()->applyLayout(0);
+            cursor.par()->next()->applyLayout(tclass.defaultLayoutName());
    }
    
    /* if the cursor is at the beginning of a row without prior newline, 
@@ -1778,8 +1781,7 @@ void LyXText::redoParagraph(BufferView * bview) const
  * same Paragraph one to the right and make a rebreak */
 void LyXText::insertChar(BufferView * bview, char c)
 {
-       setUndo(bview, Undo::INSERT,
-               cursor.par(), cursor.par()->next());
+       setUndo(bview, Undo::INSERT, cursor.par(), cursor.par()->next());
 
        // When the free-spacing option is set for the current layout,
        // disable the double-space checking
@@ -2115,6 +2117,13 @@ void LyXText::prepareToPrint(BufferView * bview,
                    && (inset->display())) // || (inset->scroll() < 0)))
                    align = (inset->lyxCode() == Inset::MATHMACRO_CODE)
                        ? LYX_ALIGN_BLOCK : LYX_ALIGN_CENTER;
+               // ERT insets should always be LEFT ALIGNED on screen
+               inset = row->par()->inInset();
+               if (inset && inset->owner() &&
+                       inset->owner()->lyxCode() == Inset::ERT_CODE)
+               {
+                       align = LYX_ALIGN_LEFT;
+               }
                
                switch (align) {
            case LYX_ALIGN_BLOCK:
@@ -2535,8 +2544,7 @@ void LyXText::changeRegionCase(BufferView * bview,
 {
        lyx::Assert(from <= to);
        
-       setUndo(bview, Undo::FINISH,
-               from.par(), to.par()->next());
+       setUndo(bview, Undo::FINISH, from.par(), to.par()->next());
 
        pos_type pos = from.pos();
        Paragraph * par = from.par();
@@ -2578,8 +2586,7 @@ void LyXText::transposeChars(BufferView & bview)
 {
        Paragraph * tmppar = cursor.par();
 
-       setUndo(&bview, Undo::FINISH,
-               tmppar, tmppar->next()); 
+       setUndo(&bview, Undo::FINISH, tmppar, tmppar->next()); 
 
        pos_type tmppos = cursor.pos();
 
@@ -2636,7 +2643,7 @@ void LyXText::Delete(BufferView * bview)
                // to make sure undo gets the right cursor position
                cursor = old_cursor;
                setUndo(bview, Undo::DELETE,
-                       cursor.par(), cursor.par()->next()); 
+                       cursor.par(), cursor.par()->next());
                cursor = tmpcursor;
                backspace(bview);
        }