diff options
Diffstat (limited to 'app-i18n/fcitx-qt5/files/fcitx-qt5-1.2.5-QFcitxPlatformInputContext_recursion.patch')
-rw-r--r-- | app-i18n/fcitx-qt5/files/fcitx-qt5-1.2.5-QFcitxPlatformInputContext_recursion.patch | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/app-i18n/fcitx-qt5/files/fcitx-qt5-1.2.5-QFcitxPlatformInputContext_recursion.patch b/app-i18n/fcitx-qt5/files/fcitx-qt5-1.2.5-QFcitxPlatformInputContext_recursion.patch new file mode 100644 index 000000000000..f3e31991b53d --- /dev/null +++ b/app-i18n/fcitx-qt5/files/fcitx-qt5-1.2.5-QFcitxPlatformInputContext_recursion.patch @@ -0,0 +1,27 @@ +https://github.com/fcitx/fcitx-qt5/commit/6f2033c497fe0da1fd197bc3be35695b11eafd93 + +--- /platforminputcontext/qfcitxplatforminputcontext.cpp ++++ /platforminputcontext/qfcitxplatforminputcontext.cpp +@@ -291,8 +291,21 @@ + return; + } + if (proxy) { +- cursorRectChanged(); + proxy->focusIn(); ++ // We need to delegate this otherwise it may cause self-recursion in ++ // certain application like libreoffice. ++ auto window = m_lastWindow; ++ QMetaObject::invokeMethod( ++ this, ++ [this, window]() { ++ if (window != m_lastWindow) { ++ return; ++ } ++ if (auto *proxy = validICByWindow(window.data())) { ++ cursorRectChanged(); ++ } ++ }, ++ Qt::QueuedConnection); + } + } + |