]> git.lyx.org Git - lyx.git/blobdiff - src/CutAndPaste.cpp
Include the recently added test files in package
[lyx.git] / src / CutAndPaste.cpp
index 2e0ae40f0b65e259e8c1324a085ff6b1b604737a..4b95b9be506f1d28f9a0dfcd2b1f7fb74d62dee0 100644 (file)
@@ -79,7 +79,7 @@ namespace {
 
 typedef pair<pit_type, int> PitPosPair;
 
-typedef limited_stack<pair<ParagraphList, DocumentClass const *> > CutStack;
+typedef limited_stack<pair<ParagraphList, DocumentClassConstPtr> > CutStack;
 
 CutStack theCuts(10);
 // persistent selection, cleared until the next selection
@@ -99,7 +99,7 @@ bool checkPastePossible(int index)
 
 pair<PitPosPair, pit_type>
 pasteSelectionHelper(Cursor const & cur, ParagraphList const & parlist,
-                    DocumentClass const * const oldDocClass, ErrorList & errorlist)
+                    DocumentClassConstPtr oldDocClass, ErrorList & errorlist)
 {
        Buffer const & buffer = *cur.buffer();
        pit_type pit = cur.pit();
@@ -119,8 +119,7 @@ pasteSelectionHelper(Cursor const & cur, ParagraphList const & parlist,
 
        // Make a copy of the CaP paragraphs.
        ParagraphList insertion = parlist;
-       DocumentClass const * const newDocClass = 
-               buffer.params().documentClassPtr();
+       DocumentClassConstPtr newDocClass = buffer.params().documentClassPtr();
 
        // Now remove all out of the pars which is NOT allowed in the
        // new environment and set also another font if that is required.
@@ -461,17 +460,16 @@ PitPosPair eraseSelectionHelper(BufferParams const & params,
 
 
 void putClipboard(ParagraphList const & paragraphs, 
-       DocumentClass const * const docclass, docstring const & plaintext)
+       DocumentClassConstPtr docclass, docstring const & plaintext)
 {
        // For some strange reason gcc 3.2 and 3.3 do not accept
        // Buffer buffer(string(), false);
-       // This needs to be static to avoid a memory leak. When a Buffer is
-       // constructed, it constructs a BufferParams, which in turn constructs
-       // a DocumentClass, via new, that is never deleted. If we were to go to
-       // some kind of garbage collection there, or a shared_ptr, then this
-       // would not be needed.
-       static Buffer * buffer = theBufferList().newBuffer(
-               FileName::tempName().absFileName() + "_clipboard.internal");
+       // This used to need to be static to avoid a memory leak. It no longer needs
+       // to be so, but the alternative is to construct a new one of these (with a
+       // new temporary directory, etc) every time, and then to destroy it. So maybe
+       // it's worth just keeping this one around.
+       static Buffer * buffer = theBufferList().newInternalBuffer(
+               FileName::tempName("clipboard.internal").absFileName());
        buffer->setUnnamed(true);
        buffer->paragraphs() = paragraphs;
        buffer->inset().setBuffer(*buffer);
@@ -503,7 +501,7 @@ static bool isFullyDeleted(ParagraphList const & pars)
 
 void copySelectionHelper(Buffer const & buf, Text const & text,
        pit_type startpit, pit_type endpit,
-       int start, int end, DocumentClass const * const dc, CutStack & cutstack)
+       int start, int end, DocumentClassConstPtr dc, CutStack & cutstack)
 {
        ParagraphList const & pars = text.paragraphs();
 
@@ -528,7 +526,7 @@ void copySelectionHelper(Buffer const & buf, Text const & text,
        ParagraphList::iterator it = copy_pars.begin();
        ParagraphList::iterator it_end = copy_pars.end();
 
-       for (; it != it_end; it++) {
+       for (; it != it_end; ++it) {
                // Since we have a copy of the paragraphs, the insets
                // do not have a proper buffer reference. It makes
                // sense to add them temporarily, because the
@@ -553,13 +551,12 @@ void copySelectionHelper(Buffer const & buf, Text const & text,
        // do some final cleanup now, to make sure that the paragraphs
        // are not linked to something else.
        it = copy_pars.begin();
-       for (; it != it_end; it++) {
+       for (; it != it_end; ++it) {
                it->setBuffer(*static_cast<Buffer *>(0));
                it->setInsetOwner(0);
        }
 
-       DocumentClass * d = const_cast<DocumentClass *>(dc);
-       cutstack.push(make_pair(copy_pars, d));
+       cutstack.push(make_pair(copy_pars, dc));
 }
 
 } // namespace anon
@@ -634,8 +631,8 @@ bool multipleCellsSelected(Cursor const & cur)
 }
 
 
-void switchBetweenClasses(DocumentClass const * const oldone, 
-               DocumentClass const * const newone, InsetText & in, ErrorList & errorlist)
+void switchBetweenClasses(DocumentClassConstPtr  oldone,
+               DocumentClassConstPtr newone, InsetText & in, ErrorList & errorlist)
 {
        errorlist.clear();
 
@@ -975,7 +972,7 @@ docstring selection(size_t sel_index)
 
 
 void pasteParagraphList(Cursor & cur, ParagraphList const & parlist,
-                       DocumentClass const * const docclass, ErrorList & errorList)
+                       DocumentClassConstPtr docclass, ErrorList & errorList)
 {
        if (cur.inTexted()) {
                Text * text = cur.text();
@@ -1005,7 +1002,6 @@ void pasteFromStack(Cursor & cur, ErrorList & errorList, size_t sel_index)
        cur.recordUndo();
        pasteParagraphList(cur, theCuts[sel_index].first,
                           theCuts[sel_index].second, errorList);
-       cur.setSelection();
 }
 
 
@@ -1029,7 +1025,6 @@ void pasteClipboardText(Cursor & cur, ErrorList & errorList, bool asParagraphs)
                                cur.recordUndo();
                                pasteParagraphList(cur, buffer.paragraphs(),
                                        buffer.params().documentClassPtr(), errorList);
-                               cur.setSelection();
                                return;
                        }
                }
@@ -1044,7 +1039,6 @@ void pasteClipboardText(Cursor & cur, ErrorList & errorList, bool asParagraphs)
                cur.text()->insertStringAsParagraphs(cur, text, cur.current_font);
        else
                cur.text()->insertStringAsLines(cur, text, cur.current_font);
-       cur.setSelection();
 }
 
 
@@ -1111,7 +1105,7 @@ void pasteSelection(Cursor & cur, ErrorList & errorList)
 }
 
 
-void replaceSelectionWithString(Cursor & cur, docstring const & str, bool backwards)
+void replaceSelectionWithString(Cursor & cur, docstring const & str)
 {
        cur.recordUndo();
        DocIterator selbeg = cur.selectionBegin();
@@ -1130,13 +1124,6 @@ void replaceSelectionWithString(Cursor & cur, docstring const & str, bool backwa
 
        // Cut the selection
        cutSelection(cur, true, false);
-
-       // select the replacement
-       if (backwards) {
-               selbeg.pos() += str.length();
-               cur.setSelection(selbeg, -int(str.length()));
-       } else
-               cur.setSelection(selbeg, str.length());
 }