From ccfa31ed3013bb0fbfefe2353fd64e59ed7cd9c9 Mon Sep 17 00:00:00 2001 From: Sergey Simonchik Date: Tue, 30 Jul 2019 19:38:59 +0300 Subject: [PATCH] terminal: add more logging to investigate IDEA-218976 GitOrigin-RevId: 882e9dbf049de78ca7e58fb0dee2e0af0d4b73fc --- .../intellij/terminal/JBTerminalPanel.java | 29 +++++++++++++++++-- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/platform/platform-impl/src/com/intellij/terminal/JBTerminalPanel.java b/platform/platform-impl/src/com/intellij/terminal/JBTerminalPanel.java index b5f9fbb3e4a0..3c02c2ee4b61 100644 --- a/platform/platform-impl/src/com/intellij/terminal/JBTerminalPanel.java +++ b/platform/platform-impl/src/com/intellij/terminal/JBTerminalPanel.java @@ -11,7 +11,9 @@ import com.intellij.ide.IdeEventQueue; import com.intellij.ide.ui.UISettings; import com.intellij.openapi.Disposable; import com.intellij.openapi.actionSystem.*; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.application.TransactionGuard; +import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.impl.ComplementaryFontsRegistry; import com.intellij.openapi.editor.impl.FontInfo; import com.intellij.openapi.fileEditor.FileDocumentManager; @@ -27,7 +29,6 @@ import com.jediterm.terminal.TextStyle; import com.jediterm.terminal.model.StyleState; import com.jediterm.terminal.model.TerminalTextBuffer; import com.jediterm.terminal.ui.TerminalPanel; -import org.apache.log4j.Logger; import org.intellij.lang.annotations.JdkConstants; import org.jetbrains.annotations.NotNull; @@ -43,7 +44,7 @@ import java.awt.image.ImageObserver; import java.util.List; public class JBTerminalPanel extends TerminalPanel implements FocusListener, TerminalSettingsListener, Disposable { - private static final Logger LOG = Logger.getLogger(JBTerminalPanel.class); + private static final Logger LOG = Logger.getInstance(JBTerminalPanel.class); private static final String[] ACTIONS_TO_SKIP = new String[]{ "ActivateTerminalToolWindow", "ActivateMessagesToolWindow", @@ -316,11 +317,17 @@ public class JBTerminalPanel extends TerminalPanel implements FocusListener, Ter * Without own IdeEventQueue.EventDispatcher, terminal won't receive key events corresponding to IDE action shortcuts. */ private class TerminalEventDispatcher implements IdeEventQueue.EventDispatcher { + + private boolean myRegistered = false; + @Override public boolean dispatch(@NotNull AWTEvent e) { if (e instanceof KeyEvent && !skipKeyEvent((KeyEvent)e)) { + if (LOG.isDebugEnabled()) { + LOG.debug("Consuming " + KeyStroke.getKeyStrokeForEvent((KeyEvent)e) + ", registered:" + myRegistered); + } IdeEventQueue.getInstance().flushDelayedKeyEvents(); - // Workaround for https://youtrack.jetbrains.com/issue/IDEA-214782, revert once it's fixed. + // Workaround for https://youtrack.jetbrains.com/issue/IDEA-214830, revert once it's fixed. if (SystemInfo.isJavaVersionAtLeast(8, 0, 212)) { // JBTerminalPanel is focused, because TerminalEventDispatcher added in focusGained and removed in focusLost processKeyEvent((KeyEvent)e); @@ -332,10 +339,26 @@ public class JBTerminalPanel extends TerminalPanel implements FocusListener, Ter } void register() { + if (LOG.isDebugEnabled()) { + ApplicationManager.getApplication().assertIsDispatchThread(); + if (myRegistered) { + LOG.error("Already registered terminal event dispatcher"); + } + LOG.debug("Register terminal event dispatcher"); + } + myRegistered = true; IdeEventQueue.getInstance().addDispatcher(this, JBTerminalPanel.this); } void unregister() { + if (LOG.isDebugEnabled()) { + ApplicationManager.getApplication().assertIsDispatchThread(); + if (!myRegistered) { + LOG.error("Not registered terminal event dispatcher"); + } + LOG.debug("Unregister terminal event dispatcher"); + } + myRegistered = false; IdeEventQueue.getInstance().removeDispatcher(this); } }