-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

The attached patch can catch window closing events. It needs to filter
out the ones it's interested in and then force the icon to drop to the
tray still in the right conditions. It's still a work in progress so
I'm not tagging the bug patch yet.

Alan

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFGnqFN1FNW1LDdr0IRAuTvAJ4+UDLuwmdYtDypnlY/uNCx+I3jFQCghQIY
o5pSScUgQUoMgbMM/UX+yMA=
=5e5f
-----END PGP SIGNATURE-----

#! /bin/sh /usr/share/dpatch/dpatch-run
## 23_window_close.dpatch by  <[EMAIL PROTECTED]>
##
## All lines beginning with `## DP:' are a description of the patch.
## DP: No description.

@DPATCH@
diff -urNad 
mozilla-traybiff-1.2.3~/components/nsMessengerFreeDesktopIntegration.cpp 
mozilla-traybiff-1.2.3/components/nsMessengerFreeDesktopIntegration.cpp
--- mozilla-traybiff-1.2.3~/components/nsMessengerFreeDesktopIntegration.cpp    
2007-07-19 00:08:13.000000000 +0100
+++ mozilla-traybiff-1.2.3/components/nsMessengerFreeDesktopIntegration.cpp     
2007-07-19 00:08:24.000000000 +0100
@@ -395,7 +395,12 @@
        if (!iconFile)
                ResolveIconName(NS_LITERAL_STRING("mozicon16"), 
NS_LITERAL_STRING(".xpm"), getter_AddRefs(iconFile));
        if (iconFile)
-               iconFile->GetNativePath(mBrandIconPath);
+               iconFile->GetNativePath(mBrandIconPath);        
+               
+       nsCOMPtr<nsIWindowMediator> mediator ( 
do_GetService(NS_WINDOWMEDIATOR_CONTRACTID) );
+       NS_ASSERTION(mediator, "no mediator");
+       mediator->AddListener(this);
+
 }
 
 nsMessengerFreeDesktopIntegration::~nsMessengerFreeDesktopIntegration()
@@ -649,6 +654,25 @@
   return NS_OK;
 }
 
+NS_IMETHODIMP 
+nsMessengerFreeDesktopIntegration::OnWindowTitleChange(nsIXULWindow *window, 
const PRUnichar *newTitle)
+{
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+NS_IMETHODIMP 
+nsMessengerFreeDesktopIntegration::OnOpenWindow(nsIXULWindow *window)
+{
+    return NS_ERROR_NOT_IMPLEMENTED;
+}
+
+NS_IMETHODIMP 
+nsMessengerFreeDesktopIntegration::OnCloseWindow(nsIXULWindow *window)
+{
+       printf("In window close event\n");
+    return NS_OK;
+}
+
 nsresult nsMessengerFreeDesktopIntegration::GetStringBundle(const char* src, 
nsIStringBundle **aBundle)
 {
   nsresult rv = NS_OK;
diff -urNad 
mozilla-traybiff-1.2.3~/components/nsMessengerFreeDesktopIntegration.h 
mozilla-traybiff-1.2.3/components/nsMessengerFreeDesktopIntegration.h
--- mozilla-traybiff-1.2.3~/components/nsMessengerFreeDesktopIntegration.h      
2007-07-19 00:08:13.000000000 +0100
+++ mozilla-traybiff-1.2.3/components/nsMessengerFreeDesktopIntegration.h       
2007-07-19 00:08:13.000000000 +0100
@@ -54,6 +54,7 @@
 #include <nsInt64.h>
 #include <nsISupportsArray.h>
 #include <nsWeakReference.h>
+#include <nsIWindowMediatorListener.h>
 
 #include "eggstatusicon.h"
 #include <gtk/gtk.h>
@@ -70,7 +71,8 @@
        public nsIFolderListener,
        public nsIFolderListener10,
        public nsIObserver,
-       public nsSupportsWeakReference
+       public nsSupportsWeakReference,
+       public nsIWindowMediatorListener
 {
 public:
        nsMessengerFreeDesktopIntegration();
@@ -82,6 +84,7 @@
        NS_DECL_NSIFOLDERLISTENER
        NS_DECL_NSIOBSERVER
        NS_DECL_NSIMESSENGERFREEDESKTOPINTEGRATION
+       NS_DECL_NSIWINDOWMEDIATORLISTENER
 
 // Instead of NS_DECL_NSIFOLDERLISTENER10
 public:

Attachment: 23_window_close.dpatch.sig
Description: Binary data

Reply via email to