commit c9fdf376789c787c1a1cbce19b19d1b86b8a653a
Author: Georg Baum <[email protected]>
Date:   Mon May 19 21:50:34 2014 +0200

    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.

diff --git a/src/Text.cpp b/src/Text.cpp
index cdcc200..dd09747 100644
--- a/src/Text.cpp
+++ b/src/Text.cpp
@@ -1007,7 +1007,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."));
diff --git a/status.21x b/status.21x
index d7e92a2..26b4c85 100644
--- a/status.21x
+++ b/status.21x
@@ -128,6 +128,8 @@ What's new
 
 - Fix wrong on-screen indentation of a paragraph occurring in some cases.
 
+- Fix keyborad input of cyrillic characters in program listings (bug 9102).
+
 
 * INTERNALS
 

Reply via email to