Ugly fix for bug #9102

The real problem is the encoding of latex_language: It is hardcoded to latin1,
but InsetListig uses the currently active encoding. Therefore, we cannot tell
whether any given character wil be encodable or not, and we should not prevent
non-ACII characters.
In the future, we need to make the encoding of latex_language dynamic, so that
it always represents the currently active encoding. Then, we could do the
correct check both for listings and ERT. For now, I simply disabled the
encoding check for listings, which also means that bug 9012 might occur in
other cases for listings, but this is less important than bug 9102.
This commit is contained in:
Georg Baum 2014-05-19 21:40:11 +02:00
parent cda00d8329
commit 35ec98bcb2

View File

@ -1008,7 +1008,10 @@ void Text::insertChar(Cursor & cur, char_type c)
// Prevent to insert uncodable characters in verbatim and ERT // Prevent to insert uncodable characters in verbatim and ERT
// (workaround for bug 9012) // (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(); Encoding const * e = cur.current_font.language()->encoding();
if (!e->encodable(c)) { if (!e->encodable(c)) {
cur.message(_("Character is uncodable in verbatim paragraphs.")); cur.message(_("Character is uncodable in verbatim paragraphs."));