From 4d381bd888307b74b5fb1822895b0758538ae1a9 Mon Sep 17 00:00:00 2001 From: peter Date: Thu, 26 Jan 2012 18:46:46 +0100 Subject: [PATCH] IDEA-80382 Notifications: when balloon is shown in Event Log and after clicking a link it expires, it should be hidden --- .../intellij/notification/Notification.java | 20 +++++++++++++------ .../com/intellij/notification/EventLog.java | 2 -- .../impl/NotificationsManagerImpl.java | 7 ------- 3 files changed, 14 insertions(+), 15 deletions(-) diff --git a/platform/platform-api/src/com/intellij/notification/Notification.java b/platform/platform-api/src/com/intellij/notification/Notification.java index b264b20d1c3c..36ad4145c9e7 100644 --- a/platform/platform-api/src/com/intellij/notification/Notification.java +++ b/platform/platform-api/src/com/intellij/notification/Notification.java @@ -18,6 +18,8 @@ package com.intellij.notification; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.project.Project; import com.intellij.openapi.ui.popup.Balloon; +import com.intellij.openapi.ui.popup.JBPopupAdapter; +import com.intellij.openapi.ui.popup.LightweightWindowEvent; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -111,12 +113,18 @@ public class Notification { } } - public void setBalloon(@Nullable final Balloon balloon) { - if (balloon != null) { - myBalloonRef = new WeakReference(balloon); - } else { - myBalloonRef = null; - } + public void setBalloon(@NotNull final Balloon balloon) { + hideBalloon(); + myBalloonRef = new WeakReference(balloon); + balloon.addListener(new JBPopupAdapter() { + @Override + public void onClosed(LightweightWindowEvent event) { + WeakReference ref = myBalloonRef; + if (ref != null && ref.get() == balloon) { + myBalloonRef = null; + } + } + }); } @Nullable diff --git a/platform/platform-impl/src/com/intellij/notification/EventLog.java b/platform/platform-impl/src/com/intellij/notification/EventLog.java index 79d6ad266bea..2d1e660c2c6d 100644 --- a/platform/platform-impl/src/com/intellij/notification/EventLog.java +++ b/platform/platform-impl/src/com/intellij/notification/EventLog.java @@ -415,8 +415,6 @@ public class EventLog implements Notifications { Balloon balloon = NotificationsManagerImpl.createBalloon(myNotification, true, true); Disposer.register(project, balloon); balloon.show(target, Balloon.Position.above); - myNotification.hideBalloon(); - myNotification.setBalloon(balloon); } } diff --git a/platform/platform-impl/src/com/intellij/notification/impl/NotificationsManagerImpl.java b/platform/platform-impl/src/com/intellij/notification/impl/NotificationsManagerImpl.java index 6870f9459f21..50968d23171b 100644 --- a/platform/platform-impl/src/com/intellij/notification/impl/NotificationsManagerImpl.java +++ b/platform/platform-impl/src/com/intellij/notification/impl/NotificationsManagerImpl.java @@ -314,13 +314,6 @@ public class NotificationsManagerImpl extends NotificationsManager implements No .setHideOnKeyOutside(hideOnClickOutside).setHideOnFrameResize(false); final Balloon balloon = builder.createBalloon(); - balloon.addListener(new JBPopupAdapter() { - @Override - public void onClosed(LightweightWindowEvent event) { - notification.setBalloon(null); - } - }); - notification.setBalloon(balloon); return balloon; } -- 2.32.0