From d5353a3853dca30dcff4e0ed24f5a5d1a841213b Mon Sep 17 00:00:00 2001 From: Alexey Pegov Date: Fri, 12 Nov 2010 19:05:42 +0300 Subject: [PATCH] application-level notifications: wait until frame will become active --- .../intellij/notification/Notifications.java | 24 ++++++++++++------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/platform/platform-api/src/com/intellij/notification/Notifications.java b/platform/platform-api/src/com/intellij/notification/Notifications.java index 6f6215f6d4e1..817257d5fb43 100644 --- a/platform/platform-api/src/com/intellij/notification/Notifications.java +++ b/platform/platform-api/src/com/intellij/notification/Notifications.java @@ -15,6 +15,7 @@ */ package com.intellij.notification; +import com.intellij.ide.FrameStateManager; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupManager; @@ -57,16 +58,21 @@ public interface Notifications { return; } - final MessageBus bus = project == null ? ApplicationManager.getApplication().getMessageBus() : project.getMessageBus(); - if (EventQueue.isDispatchThread()) bus.syncPublisher(TOPIC).notify(notification, defaultDisplayType); - else { - //noinspection SSBasedInspection - SwingUtilities.invokeLater(new Runnable() { - public void run() { - bus.syncPublisher(TOPIC).notify(notification, defaultDisplayType); + FrameStateManager.getInstance().getApplicationActive().doWhenDone(new Runnable() { + @Override + public void run() { + final MessageBus bus = project == null ? ApplicationManager.getApplication().getMessageBus() : project.getMessageBus(); + if (EventQueue.isDispatchThread()) bus.syncPublisher(TOPIC).notify(notification, defaultDisplayType); + else { + //noinspection SSBasedInspection + SwingUtilities.invokeLater(new Runnable() { + public void run() { + bus.syncPublisher(TOPIC).notify(notification, defaultDisplayType); + } + }); } - }); - } + } + }); } } }