X-Git-Url: https://git.lyx.org/gitweb/?a=blobdiff_plain;f=src%2FText.cpp;h=a2ae1aed8f33b772ea527dbb824c2ff9b874bc4f;hb=0a93c9b70f861b12e27239167d9ba59ddd6ece1e;hp=39632954a600aaa519ce8065b80818e090b35ab5;hpb=0a6ff99f28686066675848f3410f77c0947bc357;p=lyx.git diff --git a/src/Text.cpp b/src/Text.cpp index 39632954a6..a2ae1aed8f 100644 --- a/src/Text.cpp +++ b/src/Text.cpp @@ -921,6 +921,7 @@ void Text::insertChar(Cursor & cur, char_type c) if (contains(number_unary_operators, c) && (cur.pos() == 1 || par.isSeparator(cur.pos() - 2) + || par.isEnvSeparator(cur.pos() - 2) || par.isNewline(cur.pos() - 2)) ) { setCharFont(pit, cur.pos() - 1, cur.current_font, @@ -1007,7 +1008,10 @@ void Text::insertChar(Cursor & cur, char_type c) // Prevent to insert uncodable characters in verbatim and ERT // (workaround for bug 9012) - if (cur.paragraph().isPassThru() && cur.current_font.language()) { + // Don't do it for listings inset, since InsetListings::latex() tries + // to switch to a usable encoding which works in many cases (bug 9102). + if (cur.paragraph().isPassThru() && owner_->lyxCode() != LISTINGS_CODE && + cur.current_font.language()) { Encoding const * e = cur.current_font.language()->encoding(); if (!e->encodable(c)) { cur.message(_("Character is uncodable in verbatim paragraphs.")); @@ -1272,8 +1276,7 @@ void Text::acceptOrRejectChanges(Cursor & cur, ChangeOp op) LBUFERR(this == cur.text()); if (!cur.selection()) { - bool const changed = cur.paragraph().isChanged(cur.pos()); - if (!(changed && findNextChange(&cur.bv()))) + if (!selectChange(cur)) return; } @@ -1289,7 +1292,6 @@ void Text::acceptOrRejectChanges(Cursor & cur, ChangeOp op) bool endsBeforeEndOfPar = (endPos < pars_[endPit].size()); // first, accept/reject changes within each individual paragraph (do not consider end-of-par) - for (pit_type pit = begPit; pit <= endPit; ++pit) { pos_type parSize = pars_[pit].size(); @@ -1365,11 +1367,8 @@ void Text::acceptOrRejectChanges(Cursor & cur, ChangeOp op) } // finally, invoke the DEPM - deleteEmptyParagraphMechanism(begPit, endPit, cur.buffer()->params().track_changes); - // - cur.finishUndo(); cur.clearSelection(); setCursorIntern(cur, begPit, begPos);