Blob Blame History Raw
diff -r 3c24aa9a7810 desktop/source/app/cmdlineargs.cxx
--- a/desktop/source/app/cmdlineargs.cxx	Sat Jan 23 16:31:03 2010 +0000
+++ b/desktop/source/app/cmdlineargs.cxx	Tue Feb 02 13:59:39 2010 +0000
@@ -396,7 +396,7 @@
 	}
 	else if ( aArg.equalsAsciiL( RTL_CONSTASCII_STRINGPARAM( "-quickstart" )) == sal_True )
 	{
-#if defined(WNT) || defined(OS2) || defined(QUARTZ)
+#if defined(ENABLE_QUICKSTART_APPLET)
 		SetBoolParam_Impl( CMD_BOOLPARAM_QUICKSTART, sal_True );
 #endif
         SetBoolParam_Impl( CMD_BOOLPARAM_NOQUICKSTART, sal_False );
diff -r 3c24aa9a7810 desktop/source/app/makefile.mk
--- a/desktop/source/app/makefile.mk	Sat Jan 23 16:31:03 2010 +0000
+++ b/desktop/source/app/makefile.mk	Tue Feb 02 13:59:39 2010 +0000
@@ -53,6 +53,10 @@
 # DEPLOYMENTMISCLIB = -ldeploymentmisc$(DLLPOSTFIX)
 # .ENDIF
 
+.IF "$(GUI)"=="WNT" || "$(GUI)"=="OS2" || "$(GUIBASE)"=="aqua" || "$(ENABLE_SYSTRAY_GTK)"=="TRUE"
+CFLAGS+=-DENABLE_QUICKSTART_APPLET
+.ENDIF
+
 SHL1TARGET = sofficeapp
 SHL1OBJS = \
     $(SLO)$/app.obj \
diff -r 3c24aa9a7810 sfx2/source/appl/shutdownicon.cxx
--- a/sfx2/source/appl/shutdownicon.cxx	Sat Jan 23 16:31:03 2010 +0000
+++ b/sfx2/source/appl/shutdownicon.cxx	Tue Feb 02 13:59:39 2010 +0000
@@ -555,8 +555,8 @@
         return;
         
     // always remove ourselves as listener
+    pInst->m_bListenForTermination = true;
     xDesktop->removeTerminateListener( pInst );
-    pInst->m_bListenForTermination = true;
 
     // terminate desktop only if no tasks exist
     Reference< XFramesSupplier > xSupplier( xDesktop, UNO_QUERY );
diff -r 3c24aa9a7810 sfx2/source/appl/shutdowniconunx.cxx
--- a/sfx2/source/appl/shutdowniconunx.cxx	Sat Jan 23 16:31:03 2010 +0000
+++ b/sfx2/source/appl/shutdowniconunx.cxx	Tue Feb 02 13:59:39 2010 +0000
@@ -39,6 +39,7 @@
 static EggTrayIcon *pTrayIcon;
 static GtkWidget *pExitMenuItem = NULL;
 static GtkWidget *pOpenMenuItem = NULL;
+static GtkWidget *pDisableMenuItem = NULL;
 
 static void open_url_cb( GtkWidget *, gpointer data )
 {
@@ -67,8 +68,10 @@
 static void exit_quickstarter_cb( GtkWidget * )
 {
 	egg_tray_icon_cancel_message (pTrayIcon, 1 );
-	ShutdownIcon::getInstance()->terminateDesktop();
 	plugin_shutdown_sys_tray();
+	//terminate may cause this .so to be unloaded. So we must be hands off
+	//all calls into this .so after this call
+	ShutdownIcon::terminateDesktop();
 }
 
 static void menu_deactivate_cb( GtkWidget *pMenu )
@@ -265,7 +268,7 @@
 	pMenuItem = gtk_separator_menu_item_new();
 	gtk_menu_shell_append( pMenuShell, pMenuItem );
 
-	(void) add_image_menu_item
+	pDisableMenuItem = add_image_menu_item
         ( pMenuShell, GTK_STOCK_CLOSE,
 		  pShutdownIcon->GetResString( STR_QUICKSTART_PRELAUNCH_UNX ),
 		  G_CALLBACK( systray_disable_cb ) );
@@ -289,6 +292,7 @@
 	bool bModal = ShutdownIcon::bModalMode;
 	gtk_widget_set_sensitive( pExitMenuItem, !bModal);
 	gtk_widget_set_sensitive( pOpenMenuItem, !bModal);
+	gtk_widget_set_sensitive( pDisableMenuItem, !bModal);
 }
 
 extern "C" {
@@ -404,6 +409,7 @@
 	pTrayIcon = NULL;
 	pExitMenuItem = NULL;
 	pOpenMenuItem = NULL;
+	pDisableMenuItem = NULL;
 }
 
 #endif // ENABLE_QUICKSTART_APPLET