From 838c1756beae7da4c46ae96f55cac3ffe8cc28e4 Mon Sep 17 00:00:00 2001 From: Aleksey Pivovarov Date: Tue, 18 Sep 2018 14:43:22 +0300 Subject: [PATCH] ui: fix mnemonics rendering in modal dialogs opened via context menu `FocusManager.getFocusOwner()` in such modal dialogs is being overwritten by `FocusManager.runOnOwnContext()` from menu. This causes `repaintMnemonics` to be called on wrong component - from parent `IdeFrameImpl`, rather than from active `DialogWrapper`. Thus, buttons are not being properly repainted on "Alt" key press/release. --- .../src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java index b60f58f1600a..fc1f07f55188 100644 --- a/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java +++ b/platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/DarculaLaf.java @@ -14,7 +14,6 @@ import com.intellij.openapi.util.IconLoader; import com.intellij.openapi.util.SystemInfo; import com.intellij.openapi.util.registry.Registry; import com.intellij.openapi.util.text.StringUtil; -import com.intellij.openapi.wm.IdeFocusManager; import com.intellij.util.Alarm; import com.intellij.util.containers.hash.HashMap; import com.intellij.util.ui.JBUI; @@ -380,7 +379,7 @@ public class DarculaLaf extends BasicLookAndFeel { if (e instanceof KeyEvent && ((KeyEvent)e).getKeyCode() == KeyEvent.VK_ALT) { myAltPressed = e.getID() == KeyEvent.KEY_PRESSED; myMnemonicAlarm.cancelAllRequests(); - final Component focusOwner = IdeFocusManager.findInstance().getFocusOwner(); + final Component focusOwner = KeyboardFocusManager.getCurrentKeyboardFocusManager().getFocusOwner(); if (focusOwner != null) { myMnemonicAlarm.addRequest(() -> repaintMnemonics(focusOwner, myAltPressed), 10); }