From b63e5def85c5b62db0cf28e7623be33a5abde14c Mon Sep 17 00:00:00 2001 From: Le Tan Date: Tue, 29 May 2018 19:52:54 +0800 Subject: [PATCH] UniversalEntry: fix input method issue on macOS --- src/vmainwindow.cpp | 9 +++++++++ src/vuniversalentry.cpp | 4 ++++ 2 files changed, 13 insertions(+) diff --git a/src/vmainwindow.cpp b/src/vmainwindow.cpp index b2b38ee4..a67755aa 100644 --- a/src/vmainwindow.cpp +++ b/src/vmainwindow.cpp @@ -3093,9 +3093,18 @@ void VMainWindow::initUniversalEntry() { m_ue = new VUniversalEntry(this); m_ue->hide(); + +#if defined(Q_OS_MACOS) || defined(Q_OS_MAC) + // Qt::Popup on macOS does not work well with input method. + m_ue->setWindowFlags(Qt::Tool + | Qt::NoDropShadowWindowHint); + m_ue->setWindowModality(Qt::ApplicationModal); +#else m_ue->setWindowFlags(Qt::Popup | Qt::FramelessWindowHint | Qt::NoDropShadowWindowHint); +#endif + connect(m_ue, &VUniversalEntry::exited, this, [this]() { m_captain->setCaptainModeEnabled(true); diff --git a/src/vuniversalentry.cpp b/src/vuniversalentry.cpp index 8fd54a73..a280c0ef 100644 --- a/src/vuniversalentry.cpp +++ b/src/vuniversalentry.cpp @@ -274,6 +274,10 @@ void VUniversalEntry::keyPressEvent(QKeyEvent *p_event) break; + case Qt::Key_Escape: + hide(); + return; + // Up/Down Ctrl+K/J to navigate to next item. case Qt::Key_Up: forward = false;