]> git.lyx.org Git - lyx.git/blobdiff - src/Text.cpp
Delay Spellchecker intanciation until first use.
[lyx.git] / src / Text.cpp
index 92619ca71eaccfddc53596ffc99b37bd36f6fd56..73c16f1d775388a8d0b55b05eb13b5e808201d74 100644 (file)
@@ -224,16 +224,17 @@ void readParToken(Buffer const & buf, Paragraph & par, Lexer & lex,
                unsigned int aid;
                time_t ct;
                is >> aid >> ct;
-               if (aid >= bp.author_map.size()) {
+               map<unsigned int, int> const & am = bp.author_map;
+               if (am.find(aid) == am.end()) {
                        errorList.push_back(ErrorItem(_("Change tracking error"),
                                            bformat(_("Unknown author index for change: %1$d\n"), aid),
                                            par.id(), 0, par.size()));
                        change = Change(Change::UNCHANGED);
                } else {
                        if (token == "\\change_inserted")
-                               change = Change(Change::INSERTED, bp.author_map[aid], ct);
-                       else 
-                               change = Change(Change::DELETED, bp.author_map[aid], ct);
+                               change = Change(Change::INSERTED, am.find(aid)->second, ct);
+                       else
+                               change = Change(Change::DELETED, am.find(aid)->second, ct);
                }
        } else {
                lex.eatLine();
@@ -544,7 +545,8 @@ void Text::insertChar(Cursor & cur, char_type c)
        cur.checkBufferStructure();
 
 //             cur.updateFlags(Update::Force);
-       setCursor(cur.top(), cur.pit(), cur.pos() + 1);
+       bool boundary = tm.isRTLBoundary(cur.pit(), cur.pos() + 1);
+       setCursor(cur, cur.pit(), cur.pos() + 1, false, boundary);
        charInserted(cur);
 }
 
@@ -793,8 +795,8 @@ void Text::acceptOrRejectChanges(Cursor & cur, ChangeOp op)
        LASSERT(this == cur.text(), /**/);
 
        if (!cur.selection()) {
-               Change const & change = cur.paragraph().lookupChange(cur.pos());
-               if (!(change.changed() && findNextChange(&cur.bv())))
+               bool const changed = cur.paragraph().isChanged(cur.pos());
+               if (!(changed && findNextChange(&cur.bv())))
                        return;
        }
 
@@ -1239,7 +1241,10 @@ bool Text::dissolveInset(Cursor & cur)
                // restore position
                cur.pit() = min(cur.lastpit(), spit);
                cur.pos() = min(cur.lastpos(), spos);
-       }
+       } else
+               // this is the least that needs to be done (bug 6003)
+               // in the above case, pasteParagraphList handles this
+               cur.buffer()->updateLabels();
        cur.clearSelection();
        cur.resetAnchor();
        return true;
@@ -1351,7 +1356,7 @@ docstring Text::currentState(Cursor const & cur) const
 
        Change change = par.lookupChange(cur.pos());
 
-       if (change.type != Change::UNCHANGED) {
+       if (change.changed()) {
                Author const & a = buf.params().authors().get(change.author);
                os << _("Change: ") << a.name();
                if (!a.email().empty())