Browse Source

UniversalEntry: fix input method issue on macOS

Le Tan 7 years ago
parent
commit
b63e5def85
2 changed files with 13 additions and 0 deletions
  1. 9 0
      src/vmainwindow.cpp
  2. 4 0
      src/vuniversalentry.cpp

+ 9 - 0
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);

+ 4 - 0
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;