From 0f5a86decfe7f96da68d00b4600d9ef2d80d3dfd 2011-04-16 15:50:49
From: epatters <epatters@caltech.edu>
Date: 2011-04-16 15:50:49
Subject: [PATCH] Work around Qt bug where input method is disabled sometimes in QPlainTextEdit.

Closes gh-367.

---

diff --git a/IPython/frontend/qt/console/console_widget.py b/IPython/frontend/qt/console/console_widget.py
index 3f8fdd6..8674e9a 100644
--- a/IPython/frontend/qt/console/console_widget.py
+++ b/IPython/frontend/qt/console/console_widget.py
@@ -849,6 +849,7 @@ class ConsoleWidget(Configurable, QtGui.QWidget):
         layout.documentSizeChanged.connect(self._adjust_scrollbars)
 
         # Configure the control.
+        control.setAttribute(QtCore.Qt.WA_InputMethodEnabled, True)
         control.setContextMenuPolicy(QtCore.Qt.CustomContextMenu)
         control.setReadOnly(True)
         control.setUndoRedoEnabled(False)
@@ -1557,7 +1558,11 @@ class ConsoleWidget(Configurable, QtGui.QWidget):
         self._control.document().setMaximumBlockCount(0)
         self._control.setUndoRedoEnabled(True)
 
+        # Work around bug in QPlainTextEdit: input method is not re-enabled
+        # when read-only is disabled.
         self._control.setReadOnly(False)
+        self._control.setAttribute(QtCore.Qt.WA_InputMethodEnabled, True)
+
         self._control.moveCursor(QtGui.QTextCursor.End)
         self._executing = False
         self._prompt_started_hook()