[ooo-build-commit] Branch 'ooo/OOO320' - libegg/source

Jan Holesovsky kendy at kemper.freedesktop.org
Fri Dec 11 18:30:24 PST 2009


 libegg/source/eggtrayicon.c |   48 +++++++++++++++++++++++++-------------------
 1 file changed, 28 insertions(+), 20 deletions(-)

New commits:
commit e73cb80daedab6d921ebfb34aadc2057aa619335
Author: Oliver Bolte <obo at openoffice.org>
Date:   Fri Dec 11 10:15:07 2009 +0000

    CWS-TOOLING: integrate CWS qstartfix2
    2009-10-23 12:50:38 +0200 mmeeks  r277141 : fix i#101245#
    2009-10-23 12:50:22 +0200 mmeeks  r277140 : Fix i#101245#

diff --git a/libegg/source/eggtrayicon.c b/libegg/source/eggtrayicon.c
index ded899e..7207b5f 100644
--- a/libegg/source/eggtrayicon.c
+++ b/libegg/source/eggtrayicon.c
@@ -76,6 +76,14 @@ static void egg_tray_icon_update_manager_window    (EggTrayIcon *icon,
 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 @@ egg_tray_icon_get_type (void)
     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 @@ egg_tray_icon_class_init (EggTrayIconClass *klass)
 
   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 @@ egg_tray_icon_new_for_screen (GdkScreen *screen, const char *name)
 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


More information about the ooo-build-commit mailing list