From 8b638f658d437057c3dcb0fb070e1ce03a99b5bb Mon Sep 17 00:00:00 2001 From: Artem Bochkarev Date: Fri, 4 May 2018 11:46:52 +0700 Subject: [PATCH] IDEA-163208: listen for all InputEvents to avoid skipping of pressed modifiers --- .../platform-impl/src/com/intellij/ide/IdeEventQueue.java | 4 ++++ .../intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java | 3 --- .../src/com/intellij/ui/mac/touchbar/TouchBarsManager.java | 4 ++-- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java index 872aff2c2fe5..4a044a1f39fa 100644 --- a/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java +++ b/platform/platform-impl/src/com/intellij/ide/IdeEventQueue.java @@ -41,6 +41,7 @@ import com.intellij.openapi.wm.IdeFrame; import com.intellij.openapi.wm.WindowManager; import com.intellij.openapi.wm.ex.WindowManagerEx; import com.intellij.openapi.wm.impl.FocusManagerImpl; +import com.intellij.ui.mac.touchbar.TouchBarsManager; import com.intellij.util.Alarm; import com.intellij.util.ReflectionUtil; import com.intellij.util.concurrency.AppExecutorUtil; @@ -675,6 +676,9 @@ public class IdeEventQueue extends EventQueue { return; } + if (e instanceof InputEvent) + TouchBarsManager.onInputEvent((InputEvent)e); + if (dispatchByCustomDispatchers(e)) return; if (e instanceof InputMethodEvent) { diff --git a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java index 0bdb9545763b..c9a2ee24b68d 100644 --- a/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java +++ b/platform/platform-impl/src/com/intellij/openapi/keymap/impl/IdeKeyEventDispatcher.java @@ -57,7 +57,6 @@ import com.intellij.ui.ComponentWithMnemonics; import com.intellij.ui.KeyStrokeAdapter; import com.intellij.ui.SimpleTextAttributes; import com.intellij.ui.components.JBOptionButton; -import com.intellij.ui.mac.touchbar.TouchBarsManager; import com.intellij.ui.popup.list.ListPopupImpl; import com.intellij.ui.speedSearch.SpeedSearchSupply; import com.intellij.util.Alarm; @@ -146,8 +145,6 @@ public final class IdeKeyEventDispatcher implements Disposable { return false; } - TouchBarsManager.onKeyEvent(e); - // http://www.jetbrains.net/jira/browse/IDEADEV-12372 if (e.getKeyCode() == KeyEvent.VK_CONTROL) { if (e.getID() == KeyEvent.KEY_PRESSED) { diff --git a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarsManager.java b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarsManager.java index 1fe69828b85b..86947eba8a4c 100644 --- a/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarsManager.java +++ b/platform/platform-impl/src/com/intellij/ui/mac/touchbar/TouchBarsManager.java @@ -31,7 +31,7 @@ import org.jetbrains.annotations.NotNull; import javax.swing.*; import java.awt.event.ActionEvent; -import java.awt.event.KeyEvent; +import java.awt.event.InputEvent; import java.util.ArrayDeque; import java.util.ArrayList; import java.util.List; @@ -137,7 +137,7 @@ public class TouchBarsManager { public static boolean isTouchBarAvailable() { return NST.isAvailable(); } - public static void onKeyEvent(KeyEvent e) { + public static void onInputEvent(InputEvent e) { if (!isTouchBarAvailable()) return;