]> git.saurik.com Git - wxWidgets.git/blobdiff - contrib/src/stc/stc.cpp
Fix for Bug #229543
[wxWidgets.git] / contrib / src / stc / stc.cpp
index 3573c3f648f30698b90e720960162bdb5e68e48c..a362eaf491657cdf6dab08be7a0f45d0a92d2f27 100644 (file)
@@ -1539,16 +1539,38 @@ void wxStyledTextCtrl::OnMouseRightUp(wxMouseEvent& evt) {
     m_swx->DoContextMenu(Point(pt.x, pt.y));
 }
 
+
 void wxStyledTextCtrl::OnChar(wxKeyEvent& evt) {
     long key = evt.KeyCode();
-    if ((key > WXK_ESCAPE) &&
-        (key != WXK_DELETE) && (key < 255) &&
-        !evt.ControlDown() && !evt.AltDown()) {
-
-        m_swx->DoAddChar(key);
-    }
-    else {
-        evt.Skip();
+    switch (key) {
+        // Special handling for charcters that must be typed with AltGr down on
+        // foreign keyboards.  (Comes to us as Ctrl+Alt, and so would get
+        // filtered out by the default case below.)
+        //
+        // There should be a better way to do this...
+        //
+        case '\\':
+        case '|':
+        case '@':
+        case '#':
+        case '¬':
+        case '[':
+        case ']':
+        case '{':
+        case '}':
+        case '?':
+            m_swx->DoAddChar(key);
+            break;
+
+        default:
+            if ((key > WXK_ESCAPE) && (key != WXK_DELETE) && (key < 255) &&
+                !evt.ControlDown() && !evt.AltDown()) {
+
+                m_swx->DoAddChar(key);
+            }
+            else {
+                evt.Skip();
+            }
     }
 }
 
@@ -1561,6 +1583,7 @@ void wxStyledTextCtrl::OnKeyDown(wxKeyEvent& evt) {
         evt.Skip();
 }
 
+
 void wxStyledTextCtrl::OnLoseFocus(wxFocusEvent& evt) {
     m_swx->DoLoseFocus();
 }