]> git.lyx.org Git - lyx.git/blobdiff - src/Text.cpp
Compile fix.
[lyx.git] / src / Text.cpp
index dd8dba4370599d0992e0f1da9df20c12542b1d2f..e75e94c8d1c51fc08a5e654623be7bc578f929ac 100644 (file)
@@ -218,32 +218,24 @@ void readParToken(Buffer const & buf, Paragraph & par, Lexer & lex,
                par.insertInset(par.size(), new InsetLine, font, change);
        } else if (token == "\\change_unchanged") {
                change = Change(Change::UNCHANGED);
-       } else if (token == "\\change_inserted") {
+       } else if (token == "\\change_inserted" || token == "\\change_deleted") {
                lex.eatLine();
                istringstream is(lex.getString());
                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 insertion: %1$d\n"), aid),
+                                           bformat(_("Unknown author index for change: %1$d\n"), aid),
                                            par.id(), 0, par.size()));
                        change = Change(Change::UNCHANGED);
-               } else
-                       change = Change(Change::INSERTED, bp.author_map[aid], ct);
-       } else if (token == "\\change_deleted") {
-               lex.eatLine();
-               istringstream is(lex.getString());
-               unsigned int aid;
-               time_t ct;
-               is >> aid >> ct;
-               if (aid >= bp.author_map.size()) {
-                       errorList.push_back(ErrorItem(_("Change tracking error"),
-                                           bformat(_("Unknown author index for deletion: %1$d\n"), aid),
-                                           par.id(), 0, par.size()));
-                       change = Change(Change::UNCHANGED);
-               } else
-                       change = Change(Change::DELETED, bp.author_map[aid], ct);
+               } else {
+                       if (token == "\\change_inserted")
+                               change = Change(Change::INSERTED, am.find(aid)->second, ct);
+                       else
+                               change = Change(Change::DELETED, am.find(aid)->second, ct);
+               }
        } else {
                lex.eatLine();
                errorList.push_back(ErrorItem(_("Unknown token"),
@@ -553,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);
 }
 
@@ -1248,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;