From 586a6c833600654ee669c8ccce7e9a6d9a0158e7 Mon Sep 17 00:00:00 2001 From: Julia Beliaeva Date: Thu, 10 Aug 2017 19:25:59 +0300 Subject: [PATCH] [vcs-log] remove listeners when tool window is unregistered If tool window is unregistered before VcsLogTabsWatcher is disposed, stateChanged is called. Instead of processing the event normally, listeners should be removed in this case. EA-105323 --- .../src/com/intellij/vcs/log/impl/VcsLogTabsWatcher.java | 9 ++++++++- .../src/com/intellij/vcs/log/ui/frame/CommitPanel.java | 4 ++-- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogTabsWatcher.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogTabsWatcher.java index d10f83b501c2..7eae69b096fa 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogTabsWatcher.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/impl/VcsLogTabsWatcher.java @@ -88,6 +88,10 @@ public class VcsLogTabsWatcher implements Disposable { @Override public void dispose() { + removeListeners(); + } + + private void removeListeners() { myToolWindowManager.removeToolWindowManagerListener(myPostponedEventsListener); if (myToolWindow != null) { @@ -172,7 +176,10 @@ public class VcsLogTabsWatcher implements Disposable { @Override public void stateChanged() { - if (myToolWindow != null && myIsVisible != myToolWindow.isVisible()) { + if (myToolWindow == null) return; + if (myToolWindowManager.getToolWindow(TOOLWINDOW_ID) == null) { + removeListeners(); + } else if (myIsVisible != myToolWindow.isVisible()) { myIsVisible = myToolWindow.isVisible(); selectionChanged(); } diff --git a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java index 4518e65f2969..dfe7fd34da2c 100644 --- a/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java +++ b/platform/vcs-log/impl/src/com/intellij/vcs/log/ui/frame/CommitPanel.java @@ -254,9 +254,9 @@ public class CommitPanel extends JBPanel { String subject = separator > 0 ? fullMessage.substring(0, separator) : fullMessage; String description = fullMessage.substring(subject.length()); return "" + - getHtmlWithFonts(escapeMultipleSpaces(IssueLinkHtmlRenderer.formatTextWithLinks(myProject, subject)), Font.BOLD) + + escapeMultipleSpaces(IssueLinkHtmlRenderer.formatTextWithLinks(myProject, subject)) + "" + - getHtmlWithFonts(escapeMultipleSpaces(IssueLinkHtmlRenderer.formatTextWithLinks(myProject, description))); + escapeMultipleSpaces(IssueLinkHtmlRenderer.formatTextWithLinks(myProject, description)); } @NotNull