]> git.lyx.org Git - lyx.git/blobdiff - src/CutAndPaste.cpp
Name change CharStyle -> Flex
[lyx.git] / src / CutAndPaste.cpp
index d3623c3f47627e9846056fa5667910152d6a444c..7aeed7a2cdd60f07f8dd005ca7bd91e0d9a7e6f8 100644 (file)
@@ -38,7 +38,7 @@
 #include "ParIterator.h"
 #include "Undo.h"
 
-#include "insets/InsetCharStyle.h"
+#include "insets/InsetFlex.h"
 #include "insets/InsetTabular.h"
 
 #include "mathed/MathData.h"
@@ -288,7 +288,7 @@ pasteSelectionHelper(Cursor & cur, ParagraphList const & parlist,
 PitPosPair eraseSelectionHelper(BufferParams const & params,
        ParagraphList & pars,
        pit_type startpit, pit_type endpit,
-       int startpos, int endpos, bool doclear)
+       int startpos, int endpos)
 {
        // Start of selection is really invalid.
        if (startpit == pit_type(pars.size()) ||
@@ -304,12 +304,6 @@ PitPosPair eraseSelectionHelper(BufferParams const & params,
        for (pit_type pit = startpit; pit != endpit + 1;) {
                pos_type const left  = (pit == startpit ? startpos : 0);
                pos_type right = (pit == endpit ? endpos : pars[pit].size() + 1);
-               // FIXME: this is a quick fix for bug 3600. It stops a crash but the problem
-               // still remains unsolved (e.g. the second example in the bug report).
-               // c.f. http://bugzilla.lyx.org/show_bug.cgi?id=3600
-               if (right > pars[pit].size() + 1)
-                       right = pars[pit].size() + 1;
-
                bool const merge = pars[pit].isMergedOnEndOfParDeletion(params.trackChanges);
 
                // Logically erase only, including the end-of-paragraph character
@@ -317,14 +311,11 @@ PitPosPair eraseSelectionHelper(BufferParams const & params,
 
                // Separate handling of paragraph break:
                if (merge && pit != endpit &&
-                   (pit + 1 != endpit || pars[pit].hasSameLayout(pars[pit + 1]))) {
-                       pos_type const thissize = pars[pit].size();
-                       if (doclear)
-                               pars[pit + 1].stripLeadingSpaces(params.trackChanges);
+                   (pit + 1 != endpit || pars[pit].hasSameLayout(pars[endpit]))) {
+                       if (pit + 1 == endpit)
+                               endpos += pars[pit].size();
                        mergeParagraph(params, pars, pit);
                        --endpit;
-                       if (pit == endpit)
-                               endpos += thissize;
                } else
                        ++pit;
        }
@@ -451,30 +442,26 @@ void switchBetweenClasses(TextClass_ptr const & c1,
        // character styles
        InsetIterator const i_end = inset_iterator_end(in);
        for (InsetIterator it = inset_iterator_begin(in); it != i_end; ++it) {
-               if (it->lyxCode() == Inset::CHARSTYLE_CODE) {
-                       InsetCharStyle & inset =
-                               static_cast<InsetCharStyle &>(*it);
+               if (it->lyxCode() == Inset::FLEX_CODE) {
+                       InsetFlex & inset =
+                               static_cast<InsetFlex &>(*it);
                        string const name = inset.params().name;
-                       CharStyles::iterator const found_cs =
-                               tclass2.charstyle(name);
-                       if (found_cs == tclass2.charstyles().end()) {
-                               // The character style is undefined in tclass2
-                               inset.setUndefined();
+                       InsetLayout const il = 
+                               tclass2.insetlayout(from_utf8(name));
+                       inset.setLayout(il);
+                       if (il.labelstring == from_utf8("UNDEFINED")) {
+                               // The flex inset is undefined in tclass2
                                docstring const s = bformat(_(
-                                       "Character style %1$s is "
+                                       "Flex inset %1$s is "
                                        "undefined because of class "
                                        "conversion from\n%2$s to %3$s"),
                                         from_utf8(name), from_utf8(tclass1.name()),
                                         from_utf8(tclass2.name()));
                                // To warn the user that something had to be done.
                                errorlist.push_back(ErrorItem(
-                                       _("Undefined character style"),
+                                       _("Undefined flex inset"),
                                        s, it.paragraph().id(), it.pos(), it.pos() + 1));
-                       } else if (inset.undefined()) {
-                               // The character style is undefined in
-                               // tclass1 and is defined in tclass2
-                               inset.setDefined(found_cs);
-                       }
+                       } 
                }
        }
 }
@@ -554,8 +541,7 @@ void cutSelection(Cursor & cur, bool doclear, bool realcut)
                        eraseSelectionHelper(bp,
                                text->paragraphs(),
                                begpit, endpit,
-                               cur.selBegin().pos(), endpos,
-                               doclear);
+                               cur.selBegin().pos(), endpos);
 
                // cutSelection can invalidate the cursor so we need to set
                // it anew. (Lgb)