summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVladimir Glazunov <vg@openoffice.org>2009-12-14 10:44:48 +0100
committerVladimir Glazunov <vg@openoffice.org>2009-12-14 10:44:48 +0100
commitda42440ee30c2a15803fe159855f64dec97ad45a (patch)
tree3982cf65347597270fe8a3a561f54758b8151262
parent7f64926887d7fd0aa0f5f479168819b61ce4e72b (diff)
parentdd53fcb33ea52bee0bbe390e7dbbab146dc4e498 (diff)
CWS-TOOLING: integrate CWS qstartfix2_DEV300
Notes
split repo tag: libs-extern_ooo/DEV300_m68
-rw-r--r--libegg/source/eggtrayicon.c48
1 files changed, 28 insertions, 20 deletions
diff --git a/libegg/source/eggtrayicon.c b/libegg/source/eggtrayicon.c
index 9c2b67355826..603e66fbc99d 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