commit: 9252387f1bd980a247dfb0cc4ecb61eb101f0879
Author: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache <DOT> Org>
AuthorDate: Fri Nov 13 02:00:00 2020 +0000
Commit: Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Mon Nov 16 19:51:15 2020 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=9252387f
app-i18n/fcitx-qt5: Fix potential recursion.
Signed-off-by: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache.Org>
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>
app-i18n/fcitx-qt5/fcitx-qt5-1.2.5.ebuild | 4 ++++
....2.5-QFcitxPlatformInputContext_recursion.patch | 27 ++++++++++++++++++++++
2 files changed, 31 insertions(+)
diff --git a/app-i18n/fcitx-qt5/fcitx-qt5-1.2.5.ebuild
b/app-i18n/fcitx-qt5/fcitx-qt5-1.2.5.ebuild
index 610eb112d60..729c6f77088 100644
--- a/app-i18n/fcitx-qt5/fcitx-qt5-1.2.5.ebuild
+++ b/app-i18n/fcitx-qt5/fcitx-qt5-1.2.5.ebuild
@@ -41,4 +41,8 @@ RDEPEND=">=app-i18n/fcitx-4.2.9:4
DEPEND="${RDEPEND}
dev-qt/qtconcurrent:5"
+PATCHES=(
+ "${FILESDIR}/${P}-QFcitxPlatformInputContext_recursion.patch"
+)
+
DOCS=()
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 00000000000..f3e31991b53
--- /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);
+ }
+ }
+