summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
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.patch27
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);
+ }
+ }
+