]> git.lyx.org Git - lyx.git/blobdiff - src/CutAndPaste.C
add ParagraphList::erase, make mergeParagraph take a Buffer* arg, adjust other funcs...
[lyx.git] / src / CutAndPaste.C
index 3e197f31d32bc41f474680ec5848b4b235a75430..f019f906d09c1e9d2f04c342129e06efd87d4e67 100644 (file)
@@ -9,10 +9,6 @@
 
 #include <config.h>
 
-#ifdef __GNUG__
-#pragma implementation
-#endif
-
 #include "CutAndPaste.h"
 #include "BufferView.h"
 #include "buffer.h"
@@ -59,7 +55,7 @@ extern BufferView * current_view;
 
 namespace {
 
-// FIXME: stupid name 
+// FIXME: stupid name
 Paragraph * buf = 0;
 textclass_type textclass = 0;
 
@@ -103,27 +99,27 @@ bool CutAndPaste::cutSelection(Paragraph * startpar, Paragraph ** endpar,
                }
                return true;
        }
+
        bool actually_erased = false;
+
        // clear end/begin fragments of the first/last par in selection
        actually_erased |= (startpar)->erase(start, startpar->size());
        if ((*endpar)->erase(0, end)) {
-               actually_erased = true; 
+               actually_erased = true;
                end = 0;
        }
+
        // Loop through the deleted pars if any, erasing as needed
+
        Paragraph * pit = startpar->next();
+
        while (1) {
                // *endpar can be 0
                if (!pit)
                        break;
+
                Paragraph * next = pit->next();
+
                // "erase" the contents of the par
                if (pit != *endpar) {
                        actually_erased |= pit->erase(0, pit->size());
@@ -134,29 +130,29 @@ bool CutAndPaste::cutSelection(Paragraph * startpar, Paragraph ** endpar,
                                if (next) {
                                        next->previous(pit->previous());
                                }
-        
+
                                delete pit;
                        }
                }
+
                if (pit == *endpar)
                        break;
+
                pit = next;
        }
 
-#if 0 // FIXME: why for cut but not copy ? 
+#if 0 // FIXME: why for cut but not copy ?
        // the cut selection should begin with standard layout
        if (realcut) {
                buf->params().clear();
                buf->bibkey = 0;
                buf->layout(textclasslist[buffer->params.textclass].defaultLayoutName());
        }
-#endif 
+#endif
 
        if (!startpar->next())
                return true;
+
        Buffer * buffer = current_view->buffer();
 
        if (doclear) {
@@ -165,11 +161,11 @@ bool CutAndPaste::cutSelection(Paragraph * startpar, Paragraph ** endpar,
 
        if (!actually_erased)
                return true;
+
        // paste the paragraphs again, if possible
        if (startpar->hasSameLayout(startpar->next()) ||
            startpar->next()->empty()) {
-               mergeParagraph(buffer->params, startpar);
+               mergeParagraph(buffer, startpar);
                // this because endpar gets deleted here!
                (*endpar) = startpar;
        }
@@ -177,7 +173,7 @@ bool CutAndPaste::cutSelection(Paragraph * startpar, Paragraph ** endpar,
        return true;
 }
 
+
 bool CutAndPaste::copySelection(Paragraph * startpar, Paragraph * endpar,
                                int start, int end, char tc)
 {
@@ -381,20 +377,20 @@ bool CutAndPaste::pasteSelection(Paragraph ** par, Paragraph ** endpar,
                if ((*par)->next() == lastbuffer)
                        lastbuffer = *par;
 
-               mergeParagraph(current_view->buffer()->params, *par);
+               mergeParagraph(current_view->buffer(), *par);
                // store the new cursor position
                *par = lastbuffer;
                pos = lastbuffer->size();
                // maybe some pasting
                if (lastbuffer->next() && paste_the_end) {
                        if (lastbuffer->next()->hasSameLayout(lastbuffer)) {
-                               mergeParagraph(current_view->buffer()->params, lastbuffer);
+                               mergeParagraph(current_view->buffer(), lastbuffer);
                        } else if (!lastbuffer->next()->size()) {
                                lastbuffer->next()->makeSameLayout(lastbuffer);
-                               mergeParagraph(current_view->buffer()->params, lastbuffer);
+                               mergeParagraph(current_view->buffer(), lastbuffer);
                        } else if (!lastbuffer->size()) {
                                lastbuffer->makeSameLayout(lastbuffer->next());
-                               mergeParagraph(current_view->buffer()->params, lastbuffer);
+                               mergeParagraph(current_view->buffer(), lastbuffer);
                        } else
                                lastbuffer->next()->stripLeadingSpaces();
                }