]> git.lyx.org Git - lyx.git/blobdiff - src/CutAndPaste.cpp
Some comments.
[lyx.git] / src / CutAndPaste.cpp
index 98abfe1e98d2f0c5a2d8fee5b6ededcf991680c5..a535a8255df284dc37fac236f90111de406bfaf9 100644 (file)
 #include "Changes.h"
 #include "Cursor.h"
 #include "ErrorList.h"
+#include "FuncCode.h"
 #include "FuncRequest.h"
 #include "InsetIterator.h"
 #include "InsetList.h"
 #include "Language.h"
-#include "lfuns.h"
 #include "LyXFunc.h"
 #include "LyXRC.h"
 #include "Text.h"
@@ -82,22 +82,6 @@ CutStack selectionBuffer(1);
 bool dirty_tabular_stack_ = false;
 
 
-void region(CursorSlice const & i1, CursorSlice const & i2,
-       Inset::row_type & r1, Inset::row_type & r2,
-       Inset::col_type & c1, Inset::col_type & c2)
-{
-       Inset & p = i1.inset();
-       c1 = p.col(i1.idx());
-       c2 = p.col(i2.idx());
-       if (c1 > c2)
-               swap(c1, c2);
-       r1 = p.row(i1.idx());
-       r2 = p.row(i2.idx());
-       if (r1 > r2)
-               swap(r1, r2);
-}
-
-
 bool checkPastePossible(int index)
 {
        return size_t(index) < theCuts.size() && !theCuts[index].first.empty();
@@ -379,9 +363,9 @@ void copySelectionHelper(Buffer const & buf, ParagraphList & pars,
        pit_type startpit, pit_type endpit,
        int start, int end, DocumentClass const * const dc, CutStack & cutstack)
 {
-       BOOST_ASSERT(0 <= start && start <= pars[startpit].size());
-       BOOST_ASSERT(0 <= end && end <= pars[endpit].size());
-       BOOST_ASSERT(startpit != endpit || start <= end);
+       LASSERT(0 <= start && start <= pars[startpit].size(), /**/);
+       LASSERT(0 <= end && end <= pars[endpit].size(), /**/);
+       LASSERT(startpit != endpit || start <= end, /**/);
 
        // Clone the paragraphs within the selection.
        ParagraphList copy_pars(boost::next(pars.begin(), startpit),
@@ -424,6 +408,22 @@ void copySelectionHelper(Buffer const & buf, ParagraphList & pars,
 
 namespace cap {
 
+void region(CursorSlice const & i1, CursorSlice const & i2,
+           Inset::row_type & r1, Inset::row_type & r2,
+           Inset::col_type & c1, Inset::col_type & c2)
+{
+       Inset & p = i1.inset();
+       c1 = p.col(i1.idx());
+       c2 = p.col(i2.idx());
+       if (c1 > c2)
+               swap(c1, c2);
+       r1 = p.row(i1.idx());
+       r2 = p.row(i2.idx());
+       if (r1 > r2)
+               swap(r1, r2);
+}
+
+
 docstring grabAndEraseSelection(Cursor & cur)
 {
        if (!cur.selection())
@@ -456,12 +456,29 @@ bool reduceSelectionToOneCell(Cursor & cur)
 }
 
 
+bool multipleCellsSelected(Cursor const & cur)
+{
+       if (!cur.selection() || !cur.inMathed())
+               return false;
+       
+       CursorSlice i1 = cur.selBegin();
+       CursorSlice i2 = cur.selEnd();
+       if (!i1.inset().asInsetMath())
+               return false;
+       
+       if (i1.idx() == i2.idx())
+               return false;
+       
+       return true;
+}
+
+
 void switchBetweenClasses(DocumentClass const * const oldone, 
                DocumentClass const * const newone, InsetText & in, ErrorList & errorlist)
 {
        errorlist.clear();
 
-       BOOST_ASSERT(!in.paragraphs().empty());
+       LASSERT(!in.paragraphs().empty(), /**/);
        if (oldone == newone)
                return;
        
@@ -567,7 +584,7 @@ void cutSelection(Cursor & cur, bool doclear, bool realcut)
 
        if (cur.inTexted()) {
                Text * text = cur.text();
-               BOOST_ASSERT(text);
+               LASSERT(text, /**/);
 
                saveSelection(cur);
 
@@ -653,7 +670,7 @@ void copySelectionToStack(Cursor & cur, CutStack & cutstack)
 
        if (cur.inTexted()) {
                Text * text = cur.text();
-               BOOST_ASSERT(text);
+               LASSERT(text, /**/);
                // ok we have a selection. This is always between cur.selBegin()
                // and sel_end cursor
 
@@ -763,7 +780,7 @@ void pasteParagraphList(Cursor & cur, ParagraphList const & parlist,
 {
        if (cur.inTexted()) {
                Text * text = cur.text();
-               BOOST_ASSERT(text);
+               LASSERT(text, /**/);
 
                pit_type endpit;
                PitPosPair ppp;
@@ -776,7 +793,7 @@ void pasteParagraphList(Cursor & cur, ParagraphList const & parlist,
        }
 
        // mathed is handled in InsetMathNest/InsetMathGrid
-       BOOST_ASSERT(!cur.inMathed());
+       LASSERT(!cur.inMathed(), /**/);
 }
 
 
@@ -834,7 +851,7 @@ void pasteClipboardText(Cursor & cur, ErrorList & errorList, bool asParagraphs)
 void pasteClipboardGraphics(Cursor & cur, ErrorList & /* errorList */,
                            Clipboard::GraphicsType preferedType)
 {
-       BOOST_ASSERT(theClipboard().hasGraphicsContents(preferedType));
+       LASSERT(theClipboard().hasGraphicsContents(preferedType), /**/);
 
        // get picture from clipboard
        FileName filename = theClipboard().getAsGraphics(cur, preferedType);
@@ -842,9 +859,9 @@ void pasteClipboardGraphics(Cursor & cur, ErrorList & /* errorList */,
                return;
 
        // create inset for graphic
-       InsetGraphics * inset = new InsetGraphics;
+       InsetGraphics * inset = new InsetGraphics(cur.buffer());
        InsetGraphicsParams params;
-       params.filename = EmbeddedFile(filename.absFilename(), cur.buffer().filePath());
+       params.filename = support::DocFileName(filename.absFilename());
        inset->setParams(params);
        cur.recordUndo();
        cur.insert(inset);