# HG changeset patch
# User t_mrc-ct@users.sourceforge.jp
# Date 1368453082 -32400
# Branch GECKO17011esr_2013111808_RELBRANCH
# Node ID 44a116de6f17a6ad02ee3fa8106499aa1eef50fe
# Parent  306e7168693b5f8b5bc5dcef064b4bb5be8ae473
properly restore dock icon when quit app. (tiger)

diff --git a/mailnews/base/src/nsMessengerOSXIntegration.mm b/mailnews/base/src/nsMessengerOSXIntegration.mm
--- a/mailnews/base/src/nsMessengerOSXIntegration.mm
+++ b/mailnews/base/src/nsMessengerOSXIntegration.mm
@@ -198,16 +198,21 @@
   mNewMailReceivedAtom = MsgGetAtom("NewMailReceived");
   mUnreadTotal = 0;
   mUnreadChat = 0;
   mOnLeopardOrLater = OnLeopardOrLater();
 }
 
 nsMessengerOSXIntegration::~nsMessengerOSXIntegration()
 {
+  nsresult rv;
+  nsCOMPtr<nsIObserverService> observerService = do_GetService("@mozilla.org/observer-service;1", &rv);
+  if (NS_SUCCEEDED(rv)) {
+    observerService->RemoveObserver(this, "quit-application");
+  }
   RestoreDockIcon();
 }
 
 NS_IMPL_ADDREF(nsMessengerOSXIntegration)
 NS_IMPL_RELEASE(nsMessengerOSXIntegration)
 
 NS_INTERFACE_MAP_BEGIN(nsMessengerOSXIntegration)
    NS_INTERFACE_MAP_ENTRY_AMBIGUOUS(nsISupports, nsIMessengerOSIntegration)
@@ -221,16 +226,17 @@
 nsresult
 nsMessengerOSXIntegration::Init()
 {
   // need to register a named Growl notification
   nsresult rv;
   nsCOMPtr<nsIObserverService> observerService = do_GetService("@mozilla.org/observer-service;1", &rv);
   NS_ENSURE_SUCCESS(rv, rv);
   observerService->AddObserver(this, "before-growl-registration", false);
+  observerService->AddObserver(this, "quit-application", false);
   return observerService->AddObserver(this, "mail-startup-done", false);
 }
 
 NS_IMETHODIMP
 nsMessengerOSXIntegration::OnItemPropertyChanged(nsIMsgFolder *, nsIAtom *, char const *, char const *)
 {
   return NS_OK;
 }
@@ -251,16 +257,25 @@
 nsMessengerOSXIntegration::Observe(nsISupports* aSubject, const char* aTopic, const PRUnichar* aData)
 {
   if (!strcmp(aTopic, "alertfinished"))
     return OnAlertFinished();
 
   if (!strcmp(aTopic, "alertclickcallback"))
     return OnAlertClicked(aData);
 
+  if (!strcmp(aTopic, "quit-application")) {
+    nsresult rv;
+    nsCOMPtr<nsIObserverService> observerService = do_GetService("@mozilla.org/observer-service;1", &rv);
+    if (NS_SUCCEEDED(rv)) {
+      observerService->RemoveObserver(this, "quit-application");
+    }
+    return RestoreDockIcon();
+  }
+
   if (!strcmp(aTopic, "mail-startup-done")) {
     nsresult rv;
     nsCOMPtr<nsIObserverService> observerService = do_GetService("@mozilla.org/observer-service;1", &rv);
     if (NS_SUCCEEDED(rv)) {
       observerService->RemoveObserver(this, "mail-startup-done");
 
       bool chatEnabled = false;
       nsCOMPtr<nsIPrefBranch> pref(do_GetService(NS_PREFSERVICE_CONTRACTID, &rv));
