Change InputMethod::show() and InputMethod::hide() to not change active state.
Qt usually requests InputMethod::hide() upon focus out, but InputMethod::show() is actually never called if the focus change is triggered by keyboard, which leads to a permanent disabled input method state.
It can be easily reproduced with a window with two text field, e.g. QFileDialog, by pressing tab to switch the focused widget.
The semantics of hide/show should not deactivate the input method. Instead, it should simply hide/show the input panel. Also it should not be a hard request for input method to permanently hide the window. When input method asked to show it again, the input panel window should be shown.