rpms/openoffice.org/F-12 openoffice.org-3.2.0.ooo108846.sfx2.qstartfixes.patch, NONE, 1.1 workspace.qstartfix2.patch, NONE, 1.1 openoffice.org.spec, 1.2060, 1.2061 openoffice.org-3.1.0.ooo90439.sfx2.qstart.hackaround.patch, 1.1, NONE

Caolan McNamara caolanm at fedoraproject.org
Tue Feb 2 14:31:22 UTC 2010


Author: caolanm

Update of /cvs/pkgs/rpms/openoffice.org/F-12
In directory cvs1.fedora.phx.redhat.com:/tmp/cvs-serv22972

Modified Files:
	openoffice.org.spec 
Added Files:
	openoffice.org-3.2.0.ooo108846.sfx2.qstartfixes.patch 
	workspace.qstartfix2.patch 
Removed Files:
	openoffice.org-3.1.0.ooo90439.sfx2.qstart.hackaround.patch 
Log Message:
Resolves: rhbz#560996/rhbz#560353 qstartfixes (caolanm)

openoffice.org-3.2.0.ooo108846.sfx2.qstartfixes.patch:
 desktop/source/app/cmdlineargs.cxx   |    2 +-
 desktop/source/app/makefile.mk       |    4 ++++
 sfx2/source/appl/shutdownicon.cxx    |    2 +-
 sfx2/source/appl/shutdowniconunx.cxx |    9 +++++++--
 4 files changed, 13 insertions(+), 4 deletions(-)

--- NEW FILE openoffice.org-3.2.0.ooo108846.sfx2.qstartfixes.patch ---
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
@@ -387,7 +387,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
 		return sal_True;
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
@@ -44,6 +44,10 @@
 CFLAGS+=-DGNOME_VFS_ENABLED
 .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

workspace.qstartfix2.patch:
 libegg/source/eggtrayicon.c       |   48 ++++++++++++++++++++++----------------
 sfx2/source/appl/shutdownicon.cxx |   33 +++++++++++++++++++++-----
 2 files changed, 55 insertions(+), 26 deletions(-)

--- NEW FILE workspace.qstartfix2.patch ---
--- sfx2/source/appl/shutdownicon.cxx
+++ sfx2/source/appl/shutdownicon.cxx
@@ -69,6 +69,7 @@
 #include <unistd.h>
 #include <errno.h>
 #endif
+#include <vcl/timer.hxx>
 
 #include "sfxresid.hxx"
 
@@ -186,6 +187,23 @@
     return true;
 }
 
+class IdleUnloader : Timer
+{
+    ::osl::Module *m_pModule;
+public:
+    IdleUnloader (::osl::Module **pModule) :
+        m_pModule (*pModule)
+    {
+        *pModule = NULL;
+        Start();
+    }
+    virtual void Timeout()
+    {
+        delete m_pModule;
+        delete this;
+    }
+};
+
 void ShutdownIcon::initSystray()
 {
     if (m_bInitialized)
@@ -201,15 +221,15 @@
 {
     if (!m_bInitialized)
         return;
+
     if (m_pDeInitSystray)
         m_pDeInitSystray();
 
     m_bVeto = false;
     m_pInitSystray = 0;
     m_pDeInitSystray = 0;
-    if (m_pPlugin)
-        delete m_pPlugin;
-    m_pPlugin = 0;
+    new IdleUnloader (&m_pPlugin);
+
     delete m_pFileDlg;
     m_pFileDlg = NULL;
     m_bInitialized = false;
@@ -228,6 +249,7 @@
 ShutdownIcon::~ShutdownIcon()
 {
     deInitSystray();
+    new IdleUnloader (&m_pPlugin);
 }
 
 // ---------------------------------------------------------------------------
@@ -853,9 +884,11 @@
         ::osl::File::getFileURLFromSystemPath( aShortcut, aShortcutUrl );
         ::osl::File::remove( aShortcutUrl );
 #ifdef UNX
-        ShutdownIcon *pIcon = getInstance();
-        if( pIcon )
-            pIcon->deInitSystray();
+		if (pShutdownIcon)
+		{
+		    ShutdownIcon *pIcon = getInstance();
+			pIcon->deInitSystray();
+		}
 #endif
     }
 #elif defined OS2

--- libegg/source/eggtrayicon.c
+++ libegg/source/eggtrayicon.c
@@ -76,6 +76,14 @@
 static void egg_tray_icon_manager_window_destroyed (EggTrayIcon *icon);
 #endif
 
+/*
+ * This is made somewhat more 'interesting' by the facts that:
+ * a) GTypePlugin is a foul & tangled mess
+ * b) We may have been unloaded, and left an invalid
+ *    EggTrayIcon class lying around in the GType database,
+ *    we could use GTypePlugin to fix this, but see a) -
+ *    this is far easier and simpler.
+ */
 GType
 egg_tray_icon_get_type (void)
 {
@@ -88,18 +96,23 @@
     sizeof (EggTrayIconClass),
     (GBaseInitFunc) NULL,
     (GBaseFinalizeFunc) NULL,
-    (GClassInitFunc) egg_tray_icon_class_init,
+    (GClassInitFunc) NULL, /* class_init */
     NULL, /* class_finalize */
     NULL, /* class_data */
     sizeof (EggTrayIcon),
     0,    /* n_preallocs */
-    (GInstanceInitFunc) egg_tray_icon_init,
+    (GInstanceInitFunc) NULL, /* instance_init */
     NULL
       };
 
-      our_type = g_type_register_static (GTK_TYPE_PLUG, "EggTrayIcon", &our_info, 0);
+      our_type = g_type_from_name ("EggTrayIcon");
+      if (!our_type)
+	 our_type = g_type_register_static (GTK_TYPE_PLUG, "EggTrayIcon", &our_info, 0);
     }
 
+  /* always overwrite the function pointers */
+  egg_tray_icon_class_init (g_type_class_ref (our_type));
+
   return our_type;
 }
 
@@ -128,22 +141,15 @@
 
   container_class->add = egg_tray_icon_add;
 
-  g_object_class_install_property (gobject_class,
-                   PROP_ORIENTATION,
-                   g_param_spec_enum ("orientation",
-                              _("Orientation"),
-                              _("The orientation of the tray."),
-                              GTK_TYPE_ORIENTATION,
-                              GTK_ORIENTATION_HORIZONTAL,
-                              G_PARAM_READABLE));
-
-#if defined (GDK_WINDOWING_X11)
-  /* Nothing */
-#elif defined (GDK_WINDOWING_WIN32)
-  g_warning ("Port eggtrayicon to Win32");
-#else
-  g_warning ("Port eggtrayicon to this GTK+ backend");
-#endif
+  if (!g_object_class_find_property (gobject_class, "orientation"))
+    g_object_class_install_property (gobject_class,
+				     PROP_ORIENTATION,
+				     g_param_spec_enum ("orientation",
+							"Orientation",
+							"The orientation of the tray.",
+							GTK_TYPE_ORIENTATION,
+							GTK_ORIENTATION_HORIZONTAL,
+							G_PARAM_READABLE));
 }
 
 static void
@@ -471,7 +477,9 @@
 EggTrayIcon*
 egg_tray_icon_new (const gchar *name)
 {
-  return g_object_new (EGG_TYPE_TRAY_ICON, "title", name, NULL);
+  EggTrayIcon *icon = g_object_new (EGG_TYPE_TRAY_ICON, "title", name, NULL);
+  egg_tray_icon_init (icon);
+  return icon;
 }
 
 guint


Index: openoffice.org.spec
===================================================================
RCS file: /cvs/pkgs/rpms/openoffice.org/F-12/openoffice.org.spec,v
retrieving revision 1.2060
retrieving revision 1.2061
diff -u -p -r1.2060 -r1.2061
--- openoffice.org.spec	2 Feb 2010 12:47:43 -0000	1.2060
+++ openoffice.org.spec	2 Feb 2010 14:31:21 -0000	1.2061
@@ -132,7 +132,7 @@ Patch54: openoffice.org-3.1.0.ooo61927.s
 Patch55: workspace.impress171.patch
 Patch56: workspace.vcl101.patch
 Patch57: workspace.slideshow1.patch
-Patch58: openoffice.org-3.1.0.ooo90439.sfx2.qstart.hackaround.patch
+Patch58: workspace.qstartfix2.patch
 Patch59: openoffice.org-3.1.0.ooo101274.opening-a-directory.patch
 Patch60: openoffice.org-3.1.0.ooo101354.filter.xhtml.do-not-label-list-headers.patch
 Patch61: openoffice.org-3.1.0.ooo101355.filter.no-variables-in-keys.patch
@@ -192,6 +192,7 @@ Patch114: openoffice.org-3.3.0.ooo80674.
 Patch115: workspace.impress180.patch
 Patch116: workspace.impress182.patch
 Patch117: openoffice.org-3.3.0.ooo108637.sfx2.uisavedir.patch
+Patch118: openoffice.org-3.2.0.ooo108846.sfx2.qstartfixes.patch
 
 %define python_py_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(0)")
 %define instdir %{_libdir}
@@ -1718,7 +1719,7 @@ cat %{PATCH11} >> svtools/source/dialogs
 %patch55 -p1 -b .workspace.impress171.patch
 %patch56 -p1 -b .workspace.vcl101.patch
 %patch57 -p2 -b .workspace.slideshow1.patch
-%patch58 -p0 -b .ooo90439.sfx2.qstart.hackaround.patch
+%patch58 -p0 -b .workspace.qstartfix2.patch
 %patch59 -p0 -b .ooo101274.opening-a-directory.patch
 %patch60 -p0 -b .ooo101354.filter.xhtml.do-not-label-list-headers.patch
 %patch61 -p0 -b .ooo101355.filter.no-variables-in-keys.patch
@@ -1778,6 +1779,7 @@ cat %{PATCH11} >> svtools/source/dialogs
 %patch115 -p1 -b .workspace.impress180.patch
 %patch116 -p1 -b .workspace.impress182.patch
 %patch117 -p1 -b .ooo108637.sfx2.uisavedir.patch
+%patch118 -p1 -b .ooo108846.sfx2.qstartfixes.patch
 
 %build
 echo build start time is `date`, diskspace: `df -h . | tail -n 1`
@@ -4333,6 +4335,7 @@ fi
   (dtardon)
 - Resolves: ooo#108637/rhbz#558253 sfx2 uisavedir (caolanm)
 - Resolves: rhbz#560435 rtf dropcap crash (caolanm)
+- Resolves: rhbz#560996/rhbz#560353 qstartfixes (caolanm)
 
 * Tue Dec 22 2009 Caolán McNamara <caolanm at redhat.com> - 1:3.1.1-19.24
 - Resolves: rhbz#545824 bustage in writer with emboldened fonts


--- openoffice.org-3.1.0.ooo90439.sfx2.qstart.hackaround.patch DELETED ---



More information about the scm-commits mailing list