summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Engber <engber@src.gnome.org>2001-03-06 19:00:36 +0000
committerMike Engber <engber@src.gnome.org>2001-03-06 19:00:36 +0000
commit27a5f817aede5ccc01cc50144133a4fbb8c5c522 (patch)
treed07b77e6c0d9c9af76bdf93f8c1135fb2c41f89c
parentbce77bc843cc9e7233f64938342c608befdeed04 (diff)
downloadnautilus-27a5f817aede5ccc01cc50144133a4fbb8c5c522.tar.gz
reviewed by: Darin Adler <darin@eazel.com>
reviewed by: Darin Adler <darin@eazel.com> * libnautilus-extensions/nautilus-bonobo-extensions.h: Added NAUTILUS_BONOBO_X_BOILERPLATE. * libnautilus-extensions/nautilus-directory-metafile-monitor.c: (nautilus_metafile_monitor_class_init), (nautilus_metafile_monitor_init): * libnautilus-extensions/nautilus-directory-metafile-monitor.h: * libnautilus-extensions/nautilus-metafile-factory.c: (nautilus_metafile_factory_class_init), (nautilus_metafile_factory_init): * libnautilus-extensions/nautilus-metafile-factory.h: * libnautilus-extensions/nautilus-metafile.c: (nautilus_metafile_class_init), (nautilus_metafile_init): * libnautilus-extensions/nautilus-metafile.h: Switched NautilusMetafile, MetafileMonitor, and Metafile factory to be based on BonoboXObject - this causes our corba object to get freed properly - bug 7335.
-rw-r--r--ChangeLog22
-rw-r--r--libnautilus-extensions/nautilus-bonobo-extensions.h37
-rw-r--r--libnautilus-extensions/nautilus-directory-metafile-monitor.c59
-rw-r--r--libnautilus-extensions/nautilus-directory-metafile-monitor.h8
-rw-r--r--libnautilus-extensions/nautilus-metafile-factory.c57
-rw-r--r--libnautilus-extensions/nautilus-metafile-factory.h8
-rw-r--r--libnautilus-extensions/nautilus-metafile.c77
-rw-r--r--libnautilus-extensions/nautilus-metafile.h8
-rw-r--r--libnautilus-private/nautilus-bonobo-extensions.h37
-rw-r--r--libnautilus-private/nautilus-directory-metafile-monitor.c59
-rw-r--r--libnautilus-private/nautilus-directory-metafile-monitor.h8
-rw-r--r--libnautilus-private/nautilus-metafile-factory.c57
-rw-r--r--libnautilus-private/nautilus-metafile-factory.h8
-rw-r--r--libnautilus-private/nautilus-metafile.c77
-rw-r--r--libnautilus-private/nautilus-metafile.h8
15 files changed, 196 insertions, 334 deletions
diff --git a/ChangeLog b/ChangeLog
index cc83486a1..9c65e078c 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2001-03-06 Michael Engber <engber@eazel.com>
+
+ reviewed by: Darin Adler <darin@eazel.com>
+
+ * libnautilus-extensions/nautilus-bonobo-extensions.h:
+ Added NAUTILUS_BONOBO_X_BOILERPLATE.
+
+ * libnautilus-extensions/nautilus-directory-metafile-monitor.c:
+ (nautilus_metafile_monitor_class_init),
+ (nautilus_metafile_monitor_init):
+ * libnautilus-extensions/nautilus-directory-metafile-monitor.h:
+ * libnautilus-extensions/nautilus-metafile-factory.c:
+ (nautilus_metafile_factory_class_init),
+ (nautilus_metafile_factory_init):
+ * libnautilus-extensions/nautilus-metafile-factory.h:
+ * libnautilus-extensions/nautilus-metafile.c:
+ (nautilus_metafile_class_init), (nautilus_metafile_init):
+ * libnautilus-extensions/nautilus-metafile.h:
+ Switched NautilusMetafile, MetafileMonitor, and Metafile factory
+ to be based on BonoboXObject - this causes our corba object to
+ get freed properly - bug 7335.
+
2001-03-06 Darin Adler <darin@eazel.com>
reviewed by: John Sullivan <sullivan@eazel.com>
diff --git a/libnautilus-extensions/nautilus-bonobo-extensions.h b/libnautilus-extensions/nautilus-bonobo-extensions.h
index 72714a47d..57ed6db2f 100644
--- a/libnautilus-extensions/nautilus-bonobo-extensions.h
+++ b/libnautilus-extensions/nautilus-bonobo-extensions.h
@@ -28,6 +28,7 @@
#define NAUTILUS_BONOBO_EXTENSIONS_H
#include <bonobo/bonobo-ui-component.h>
+#include <bonobo/bonobo-xobject.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
typedef struct NautilusBonoboActivationHandle NautilusBonoboActivationHandle;
@@ -93,4 +94,40 @@ NautilusBonoboActivationHandle *nautilus_bonobo_activate_from_id
gpointer callback_data);
void nautilus_bonobo_activate_cancel (NautilusBonoboActivationHandle *handle);
+
+/* This macro is a copy of BONOBO_X_TYPE_FUNC_FULL (from bonobo-xobject.h)
+ * with the addition of support for the parent_class which is defined by
+ * NAUTILUS_DEFINE_CLASS_BOILERPLATE and used by NAUTILUS_CALL_PARENT.
+ *
+ * Note: the argument order matches BONOBO_X_TYPE_FUNC_FULL which is different
+ * than NAUTILUS_DEFINE_CLASS_BOILERPLATE.
+ */
+#define NAUTILUS_BONOBO_X_BOILERPLATE(class_name, corba_name, parent, prefix) \
+static gpointer parent_class; /* Nautilus change */ \
+GtkType \
+prefix##_get_type (void) \
+{ \
+ GtkType ptype; \
+ static GtkType type = 0; \
+ \
+ if (type == 0) { \
+ static GtkTypeInfo info = { \
+ #class_name, \
+ sizeof (class_name), \
+ sizeof (class_name##Class), \
+ (GtkClassInitFunc)prefix##_class_init, \
+ (GtkObjectInitFunc)prefix##_init, \
+ NULL, NULL, (GtkClassInitFunc) NULL \
+ }; \
+ ptype = (parent); \
+ type = bonobo_x_type_unique (ptype, \
+ POA_##corba_name##__init, POA_##corba_name##__fini, \
+ GTK_STRUCT_OFFSET (class_name##Class, epv), \
+ &info); \
+ parent_class = gtk_type_class (ptype); /* Nautilus change */ \
+ } \
+ return type; \
+}
+
+
#endif /* NAUTILUS_BONOBO_EXTENSIONS_H */
diff --git a/libnautilus-extensions/nautilus-directory-metafile-monitor.c b/libnautilus-extensions/nautilus-directory-metafile-monitor.c
index 4c4810ab9..c90a640a7 100644
--- a/libnautilus-extensions/nautilus-directory-metafile-monitor.c
+++ b/libnautilus-extensions/nautilus-directory-metafile-monitor.c
@@ -22,21 +22,21 @@
#include <config.h>
#include "nautilus-directory-metafile-monitor.h"
-#include "nautilus-metafile-server.h"
#include "nautilus-directory-private.h"
#include "nautilus-file-private.h"
#include <libnautilus-extensions/nautilus-gtk-macros.h>
#include <libnautilus-extensions/nautilus-glib-extensions.h>
+#include <libnautilus-extensions/nautilus-bonobo-extensions.h>
#include <libnautilus/nautilus-bonobo-workarounds.h>
struct NautilusMetafileMonitorDetails {
NautilusDirectory *directory;
};
-static void nautilus_metafile_monitor_initialize (NautilusMetafileMonitor *monitor);
-static void nautilus_metafile_monitor_initialize_class (NautilusMetafileMonitorClass *klass);
+static void nautilus_metafile_monitor_init (NautilusMetafileMonitor *monitor);
+static void nautilus_metafile_monitor_class_init (NautilusMetafileMonitorClass *klass);
static void destroy (GtkObject *monitor);
@@ -47,64 +47,21 @@ static void corba_metafile_changed (PortableServer_Servant servant,
static void corba_metafile_ready (PortableServer_Servant servant,
CORBA_Environment *ev);
-NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafileMonitor, nautilus_metafile_monitor, BONOBO_OBJECT_TYPE)
+NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafileMonitor, Nautilus_MetafileMonitor, BONOBO_X_OBJECT_TYPE, nautilus_metafile_monitor)
static void
-nautilus_metafile_monitor_initialize_class (NautilusMetafileMonitorClass *klass)
+nautilus_metafile_monitor_class_init (NautilusMetafileMonitorClass *klass)
{
GTK_OBJECT_CLASS (klass)->destroy = destroy;
-}
-
-static POA_Nautilus_MetafileMonitor__epv *
-nautilus_metafile_monitor_get_epv (void)
-{
- static POA_Nautilus_MetafileMonitor__epv epv;
-
- epv.metafile_changed = corba_metafile_changed;
- epv.metafile_ready = corba_metafile_ready;
-
- return &epv;
-}
-
-static POA_Nautilus_MetafileMonitor__vepv *
-nautilus_metafile_monitor_get_vepv (void)
-{
- static POA_Nautilus_MetafileMonitor__vepv vepv;
- vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv ();
- vepv.Nautilus_MetafileMonitor_epv = nautilus_metafile_monitor_get_epv ();
-
- return &vepv;
-}
-
-static POA_Nautilus_MetafileMonitor *
-nautilus_metafile_monitor_create_servant (void)
-{
- POA_Nautilus_MetafileMonitor *servant;
- CORBA_Environment ev;
-
- servant = (POA_Nautilus_MetafileMonitor *) g_new0 (BonoboObjectServant, 1);
- servant->vepv = nautilus_metafile_monitor_get_vepv ();
- CORBA_exception_init (&ev);
- POA_Nautilus_MetafileMonitor__init ((PortableServer_Servant) servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION){
- g_error ("can't initialize Nautilus metafile monitor");
- }
- CORBA_exception_free (&ev);
-
- return servant;
+ klass->epv.metafile_changed = corba_metafile_changed;
+ klass->epv.metafile_ready = corba_metafile_ready;
}
static void
-nautilus_metafile_monitor_initialize (NautilusMetafileMonitor *monitor)
+nautilus_metafile_monitor_init (NautilusMetafileMonitor *monitor)
{
- Nautilus_MetafileMonitor corba_monitor;
-
monitor->details = g_new0 (NautilusMetafileMonitorDetails, 1);
-
- corba_monitor = bonobo_object_activate_servant
- (BONOBO_OBJECT (monitor), nautilus_metafile_monitor_create_servant ());
- bonobo_object_construct (BONOBO_OBJECT (monitor), corba_monitor);
}
static void
diff --git a/libnautilus-extensions/nautilus-directory-metafile-monitor.h b/libnautilus-extensions/nautilus-directory-metafile-monitor.h
index cb464fa63..ef8e0ee22 100644
--- a/libnautilus-extensions/nautilus-directory-metafile-monitor.h
+++ b/libnautilus-extensions/nautilus-directory-metafile-monitor.h
@@ -23,7 +23,10 @@
#ifndef NAUTILUS_METAFILE_MONITOR_H
#define NAUTILUS_METAFILE_MONITOR_H
+#include "nautilus-metafile-server.h"
+
#include <bonobo/bonobo-object.h>
+#include <bonobo/bonobo-xobject.h>
#include <libnautilus-extensions/nautilus-directory.h>
#define NAUTILUS_TYPE_METAFILE_MONITOR (nautilus_metafile_monitor_get_type ())
@@ -35,12 +38,13 @@
typedef struct NautilusMetafileMonitorDetails NautilusMetafileMonitorDetails;
typedef struct {
- BonoboObject parent_slot;
+ BonoboXObject parent_slot;
NautilusMetafileMonitorDetails *details;
} NautilusMetafileMonitor;
typedef struct {
- BonoboObjectClass parent_slot;
+ BonoboXObjectClass parent_slot;
+ POA_Nautilus_MetafileMonitor__epv epv;
} NautilusMetafileMonitorClass;
GtkType nautilus_metafile_monitor_get_type (void);
diff --git a/libnautilus-extensions/nautilus-metafile-factory.c b/libnautilus-extensions/nautilus-metafile-factory.c
index 272a6bed9..8ca0628bd 100644
--- a/libnautilus-extensions/nautilus-metafile-factory.c
+++ b/libnautilus-extensions/nautilus-metafile-factory.c
@@ -22,17 +22,17 @@
#include <config.h>
#include "nautilus-metafile-factory.h"
-#include "nautilus-metafile-server.h"
#include "nautilus-metafile.h"
#include <libnautilus-extensions/nautilus-gtk-macros.h>
+#include <libnautilus-extensions/nautilus-bonobo-extensions.h>
#include <libnautilus/nautilus-bonobo-workarounds.h>
struct NautilusMetafileFactoryDetails {
};
-static void nautilus_metafile_factory_initialize (NautilusMetafileFactory *factory);
-static void nautilus_metafile_factory_initialize_class (NautilusMetafileFactoryClass *klass);
+static void nautilus_metafile_factory_init (NautilusMetafileFactory *factory);
+static void nautilus_metafile_factory_class_init (NautilusMetafileFactoryClass *klass);
static void destroy (GtkObject *factory);
@@ -40,63 +40,20 @@ static Nautilus_Metafile corba_open (PortableServer_Servant servant,
const Nautilus_URI directory,
CORBA_Environment *ev);
-NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafileFactory, nautilus_metafile_factory, BONOBO_OBJECT_TYPE)
+NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafileFactory, Nautilus_MetafileFactory, BONOBO_X_OBJECT_TYPE, nautilus_metafile_factory)
static void
-nautilus_metafile_factory_initialize_class (NautilusMetafileFactoryClass *klass)
+nautilus_metafile_factory_class_init (NautilusMetafileFactoryClass *klass)
{
GTK_OBJECT_CLASS (klass)->destroy = destroy;
-}
-
-static POA_Nautilus_MetafileFactory__epv *
-nautilus_metafile_factory_get_epv (void)
-{
- static POA_Nautilus_MetafileFactory__epv epv;
-
- epv.open = corba_open;
-
- return &epv;
-}
-
-static POA_Nautilus_MetafileFactory__vepv *
-nautilus_metafile_factory_get_vepv (void)
-{
- static POA_Nautilus_MetafileFactory__vepv vepv;
- vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv ();
- vepv.Nautilus_MetafileFactory_epv = nautilus_metafile_factory_get_epv ();
-
- return &vepv;
-}
-
-static POA_Nautilus_MetafileFactory *
-nautilus_metafile_factory_create_servant (void)
-{
- POA_Nautilus_MetafileFactory *servant;
- CORBA_Environment ev;
-
- servant = (POA_Nautilus_MetafileFactory *) g_new0 (BonoboObjectServant, 1);
- servant->vepv = nautilus_metafile_factory_get_vepv ();
- CORBA_exception_init (&ev);
- POA_Nautilus_MetafileFactory__init ((PortableServer_Servant) servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION){
- g_error ("can't initialize Nautilus metafile factory");
- }
- CORBA_exception_free (&ev);
-
- return servant;
+ klass->epv.open = corba_open;
}
static void
-nautilus_metafile_factory_initialize (NautilusMetafileFactory *factory)
+nautilus_metafile_factory_init (NautilusMetafileFactory *factory)
{
- Nautilus_MetafileFactory corba_factory;
-
factory->details = g_new0 (NautilusMetafileFactoryDetails, 1);
-
- corba_factory = bonobo_object_activate_servant
- (BONOBO_OBJECT (factory), nautilus_metafile_factory_create_servant ());
- bonobo_object_construct (BONOBO_OBJECT (factory), corba_factory);
}
static void
diff --git a/libnautilus-extensions/nautilus-metafile-factory.h b/libnautilus-extensions/nautilus-metafile-factory.h
index ad1737ecf..014b7d627 100644
--- a/libnautilus-extensions/nautilus-metafile-factory.h
+++ b/libnautilus-extensions/nautilus-metafile-factory.h
@@ -23,7 +23,10 @@
#ifndef NAUTILUS_METAFILE_FACTORY_H
#define NAUTILUS_METAFILE_FACTORY_H
+#include "nautilus-metafile-server.h"
+
#include <bonobo/bonobo-object.h>
+#include <bonobo/bonobo-xobject.h>
#define NAUTILUS_TYPE_METAFILE_FACTORY (nautilus_metafile_factory_get_type ())
#define NAUTILUS_METAFILE_FACTORY(obj) (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_METAFILE_FACTORY, NautilusMetafileFactory))
@@ -34,12 +37,13 @@
typedef struct NautilusMetafileFactoryDetails NautilusMetafileFactoryDetails;
typedef struct {
- BonoboObject parent_slot;
+ BonoboXObject parent_slot;
NautilusMetafileFactoryDetails *details;
} NautilusMetafileFactory;
typedef struct {
- BonoboObjectClass parent_slot;
+ BonoboXObjectClass parent_slot;
+ POA_Nautilus_MetafileFactory__epv epv;
} NautilusMetafileFactoryClass;
GtkType nautilus_metafile_factory_get_type (void);
diff --git a/libnautilus-extensions/nautilus-metafile.c b/libnautilus-extensions/nautilus-metafile.c
index 783f912a7..2850a442c 100644
--- a/libnautilus-extensions/nautilus-metafile.c
+++ b/libnautilus-extensions/nautilus-metafile.c
@@ -22,11 +22,11 @@
#include <config.h>
#include "nautilus-metafile.h"
-#include "nautilus-metafile-server.h"
-#include <libnautilus/nautilus-bonobo-workarounds.h>
#include <libnautilus-extensions/nautilus-gtk-macros.h>
#include <libnautilus-extensions/nautilus-directory.h>
+#include <libnautilus-extensions/nautilus-bonobo-extensions.h>
+#include <libnautilus/nautilus-bonobo-workarounds.h>
#include "nautilus-string.h"
#include "nautilus-metadata.h"
@@ -40,8 +40,8 @@
#define METAFILE_XML_VERSION "1.0"
-static void nautilus_metafile_initialize (NautilusMetafile *metafile);
-static void nautilus_metafile_initialize_class (NautilusMetafileClass *klass);
+static void nautilus_metafile_init (NautilusMetafile *metafile);
+static void nautilus_metafile_class_init (NautilusMetafileClass *klass);
static void destroy (GtkObject *metafile);
@@ -124,72 +124,29 @@ static void remove_file_metadata (NautilusDirectory *directory,
static void call_metafile_changed_for_one_file (NautilusDirectory *directory,
const CORBA_char *file_name);
-NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafile, nautilus_metafile, BONOBO_OBJECT_TYPE)
+NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafile, Nautilus_Metafile, BONOBO_X_OBJECT_TYPE, nautilus_metafile)
static void
-nautilus_metafile_initialize_class (NautilusMetafileClass *klass)
+nautilus_metafile_class_init (NautilusMetafileClass *klass)
{
GTK_OBJECT_CLASS (klass)->destroy = destroy;
-}
-
-static POA_Nautilus_Metafile__epv *
-nautilus_metafile_get_epv (void)
-{
- static POA_Nautilus_Metafile__epv epv;
-
- epv.is_read = corba_is_read;
- epv.get = corba_get;
- epv.get_list = corba_get_list;
- epv.set = corba_set;
- epv.set_list = corba_set_list;
- epv.copy = corba_copy;
- epv.remove = corba_remove;
- epv.rename = corba_rename;
- epv.register_monitor = corba_register_monitor;
- epv.unregister_monitor = corba_unregister_monitor;
-
- return &epv;
-}
-
-static POA_Nautilus_Metafile__vepv *
-nautilus_metafile_get_vepv (void)
-{
- static POA_Nautilus_Metafile__vepv vepv;
-
- vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv ();
- vepv.Nautilus_Metafile_epv = nautilus_metafile_get_epv ();
- return &vepv;
-}
-
-static POA_Nautilus_Metafile *
-nautilus_metafile_create_servant (void)
-{
- POA_Nautilus_Metafile *servant;
- CORBA_Environment ev;
-
- servant = (POA_Nautilus_Metafile *) g_new0 (BonoboObjectServant, 1);
- servant->vepv = nautilus_metafile_get_vepv ();
- CORBA_exception_init (&ev);
- POA_Nautilus_Metafile__init ((PortableServer_Servant) servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION){
- g_error ("can't initialize Nautilus metafile");
- }
- CORBA_exception_free (&ev);
-
- return servant;
+ klass->epv.is_read = corba_is_read;
+ klass->epv.get = corba_get;
+ klass->epv.get_list = corba_get_list;
+ klass->epv.set = corba_set;
+ klass->epv.set_list = corba_set_list;
+ klass->epv.copy = corba_copy;
+ klass->epv.remove = corba_remove;
+ klass->epv.rename = corba_rename;
+ klass->epv.register_monitor = corba_register_monitor;
+ klass->epv.unregister_monitor = corba_unregister_monitor;
}
static void
-nautilus_metafile_initialize (NautilusMetafile *metafile)
+nautilus_metafile_init (NautilusMetafile *metafile)
{
- Nautilus_Metafile corba_metafile;
-
metafile->details = g_new0 (NautilusMetafileDetails, 1);
-
- corba_metafile = bonobo_object_activate_servant
- (BONOBO_OBJECT (metafile), nautilus_metafile_create_servant ());
- bonobo_object_construct (BONOBO_OBJECT (metafile), corba_metafile);
}
static void
diff --git a/libnautilus-extensions/nautilus-metafile.h b/libnautilus-extensions/nautilus-metafile.h
index ca2f65bda..94e2c3a44 100644
--- a/libnautilus-extensions/nautilus-metafile.h
+++ b/libnautilus-extensions/nautilus-metafile.h
@@ -23,7 +23,10 @@
#ifndef NAUTILUS_METAFILE_H
#define NAUTILUS_METAFILE_H
+#include "nautilus-metafile-server.h"
+
#include <bonobo/bonobo-object.h>
+#include <bonobo/bonobo-xobject.h>
#include <gnome-xml/tree.h>
#include "nautilus-directory.h"
@@ -37,7 +40,7 @@
typedef struct NautilusMetafileDetails NautilusMetafileDetails;
typedef struct {
- BonoboObject parent_slot;
+ BonoboXObject parent_slot;
NautilusMetafileDetails *details;
} NautilusMetafile;
@@ -52,7 +55,8 @@ struct NautilusMetafileDetails {
};
typedef struct {
- BonoboObjectClass parent_slot;
+ BonoboXObjectClass parent_slot;
+ POA_Nautilus_Metafile__epv epv;
} NautilusMetafileClass;
GtkType nautilus_metafile_get_type (void);
diff --git a/libnautilus-private/nautilus-bonobo-extensions.h b/libnautilus-private/nautilus-bonobo-extensions.h
index 72714a47d..57ed6db2f 100644
--- a/libnautilus-private/nautilus-bonobo-extensions.h
+++ b/libnautilus-private/nautilus-bonobo-extensions.h
@@ -28,6 +28,7 @@
#define NAUTILUS_BONOBO_EXTENSIONS_H
#include <bonobo/bonobo-ui-component.h>
+#include <bonobo/bonobo-xobject.h>
#include <gdk-pixbuf/gdk-pixbuf.h>
typedef struct NautilusBonoboActivationHandle NautilusBonoboActivationHandle;
@@ -93,4 +94,40 @@ NautilusBonoboActivationHandle *nautilus_bonobo_activate_from_id
gpointer callback_data);
void nautilus_bonobo_activate_cancel (NautilusBonoboActivationHandle *handle);
+
+/* This macro is a copy of BONOBO_X_TYPE_FUNC_FULL (from bonobo-xobject.h)
+ * with the addition of support for the parent_class which is defined by
+ * NAUTILUS_DEFINE_CLASS_BOILERPLATE and used by NAUTILUS_CALL_PARENT.
+ *
+ * Note: the argument order matches BONOBO_X_TYPE_FUNC_FULL which is different
+ * than NAUTILUS_DEFINE_CLASS_BOILERPLATE.
+ */
+#define NAUTILUS_BONOBO_X_BOILERPLATE(class_name, corba_name, parent, prefix) \
+static gpointer parent_class; /* Nautilus change */ \
+GtkType \
+prefix##_get_type (void) \
+{ \
+ GtkType ptype; \
+ static GtkType type = 0; \
+ \
+ if (type == 0) { \
+ static GtkTypeInfo info = { \
+ #class_name, \
+ sizeof (class_name), \
+ sizeof (class_name##Class), \
+ (GtkClassInitFunc)prefix##_class_init, \
+ (GtkObjectInitFunc)prefix##_init, \
+ NULL, NULL, (GtkClassInitFunc) NULL \
+ }; \
+ ptype = (parent); \
+ type = bonobo_x_type_unique (ptype, \
+ POA_##corba_name##__init, POA_##corba_name##__fini, \
+ GTK_STRUCT_OFFSET (class_name##Class, epv), \
+ &info); \
+ parent_class = gtk_type_class (ptype); /* Nautilus change */ \
+ } \
+ return type; \
+}
+
+
#endif /* NAUTILUS_BONOBO_EXTENSIONS_H */
diff --git a/libnautilus-private/nautilus-directory-metafile-monitor.c b/libnautilus-private/nautilus-directory-metafile-monitor.c
index 4c4810ab9..c90a640a7 100644
--- a/libnautilus-private/nautilus-directory-metafile-monitor.c
+++ b/libnautilus-private/nautilus-directory-metafile-monitor.c
@@ -22,21 +22,21 @@
#include <config.h>
#include "nautilus-directory-metafile-monitor.h"
-#include "nautilus-metafile-server.h"
#include "nautilus-directory-private.h"
#include "nautilus-file-private.h"
#include <libnautilus-extensions/nautilus-gtk-macros.h>
#include <libnautilus-extensions/nautilus-glib-extensions.h>
+#include <libnautilus-extensions/nautilus-bonobo-extensions.h>
#include <libnautilus/nautilus-bonobo-workarounds.h>
struct NautilusMetafileMonitorDetails {
NautilusDirectory *directory;
};
-static void nautilus_metafile_monitor_initialize (NautilusMetafileMonitor *monitor);
-static void nautilus_metafile_monitor_initialize_class (NautilusMetafileMonitorClass *klass);
+static void nautilus_metafile_monitor_init (NautilusMetafileMonitor *monitor);
+static void nautilus_metafile_monitor_class_init (NautilusMetafileMonitorClass *klass);
static void destroy (GtkObject *monitor);
@@ -47,64 +47,21 @@ static void corba_metafile_changed (PortableServer_Servant servant,
static void corba_metafile_ready (PortableServer_Servant servant,
CORBA_Environment *ev);
-NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafileMonitor, nautilus_metafile_monitor, BONOBO_OBJECT_TYPE)
+NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafileMonitor, Nautilus_MetafileMonitor, BONOBO_X_OBJECT_TYPE, nautilus_metafile_monitor)
static void
-nautilus_metafile_monitor_initialize_class (NautilusMetafileMonitorClass *klass)
+nautilus_metafile_monitor_class_init (NautilusMetafileMonitorClass *klass)
{
GTK_OBJECT_CLASS (klass)->destroy = destroy;
-}
-
-static POA_Nautilus_MetafileMonitor__epv *
-nautilus_metafile_monitor_get_epv (void)
-{
- static POA_Nautilus_MetafileMonitor__epv epv;
-
- epv.metafile_changed = corba_metafile_changed;
- epv.metafile_ready = corba_metafile_ready;
-
- return &epv;
-}
-
-static POA_Nautilus_MetafileMonitor__vepv *
-nautilus_metafile_monitor_get_vepv (void)
-{
- static POA_Nautilus_MetafileMonitor__vepv vepv;
- vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv ();
- vepv.Nautilus_MetafileMonitor_epv = nautilus_metafile_monitor_get_epv ();
-
- return &vepv;
-}
-
-static POA_Nautilus_MetafileMonitor *
-nautilus_metafile_monitor_create_servant (void)
-{
- POA_Nautilus_MetafileMonitor *servant;
- CORBA_Environment ev;
-
- servant = (POA_Nautilus_MetafileMonitor *) g_new0 (BonoboObjectServant, 1);
- servant->vepv = nautilus_metafile_monitor_get_vepv ();
- CORBA_exception_init (&ev);
- POA_Nautilus_MetafileMonitor__init ((PortableServer_Servant) servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION){
- g_error ("can't initialize Nautilus metafile monitor");
- }
- CORBA_exception_free (&ev);
-
- return servant;
+ klass->epv.metafile_changed = corba_metafile_changed;
+ klass->epv.metafile_ready = corba_metafile_ready;
}
static void
-nautilus_metafile_monitor_initialize (NautilusMetafileMonitor *monitor)
+nautilus_metafile_monitor_init (NautilusMetafileMonitor *monitor)
{
- Nautilus_MetafileMonitor corba_monitor;
-
monitor->details = g_new0 (NautilusMetafileMonitorDetails, 1);
-
- corba_monitor = bonobo_object_activate_servant
- (BONOBO_OBJECT (monitor), nautilus_metafile_monitor_create_servant ());
- bonobo_object_construct (BONOBO_OBJECT (monitor), corba_monitor);
}
static void
diff --git a/libnautilus-private/nautilus-directory-metafile-monitor.h b/libnautilus-private/nautilus-directory-metafile-monitor.h
index cb464fa63..ef8e0ee22 100644
--- a/libnautilus-private/nautilus-directory-metafile-monitor.h
+++ b/libnautilus-private/nautilus-directory-metafile-monitor.h
@@ -23,7 +23,10 @@
#ifndef NAUTILUS_METAFILE_MONITOR_H
#define NAUTILUS_METAFILE_MONITOR_H
+#include "nautilus-metafile-server.h"
+
#include <bonobo/bonobo-object.h>
+#include <bonobo/bonobo-xobject.h>
#include <libnautilus-extensions/nautilus-directory.h>
#define NAUTILUS_TYPE_METAFILE_MONITOR (nautilus_metafile_monitor_get_type ())
@@ -35,12 +38,13 @@
typedef struct NautilusMetafileMonitorDetails NautilusMetafileMonitorDetails;
typedef struct {
- BonoboObject parent_slot;
+ BonoboXObject parent_slot;
NautilusMetafileMonitorDetails *details;
} NautilusMetafileMonitor;
typedef struct {
- BonoboObjectClass parent_slot;
+ BonoboXObjectClass parent_slot;
+ POA_Nautilus_MetafileMonitor__epv epv;
} NautilusMetafileMonitorClass;
GtkType nautilus_metafile_monitor_get_type (void);
diff --git a/libnautilus-private/nautilus-metafile-factory.c b/libnautilus-private/nautilus-metafile-factory.c
index 272a6bed9..8ca0628bd 100644
--- a/libnautilus-private/nautilus-metafile-factory.c
+++ b/libnautilus-private/nautilus-metafile-factory.c
@@ -22,17 +22,17 @@
#include <config.h>
#include "nautilus-metafile-factory.h"
-#include "nautilus-metafile-server.h"
#include "nautilus-metafile.h"
#include <libnautilus-extensions/nautilus-gtk-macros.h>
+#include <libnautilus-extensions/nautilus-bonobo-extensions.h>
#include <libnautilus/nautilus-bonobo-workarounds.h>
struct NautilusMetafileFactoryDetails {
};
-static void nautilus_metafile_factory_initialize (NautilusMetafileFactory *factory);
-static void nautilus_metafile_factory_initialize_class (NautilusMetafileFactoryClass *klass);
+static void nautilus_metafile_factory_init (NautilusMetafileFactory *factory);
+static void nautilus_metafile_factory_class_init (NautilusMetafileFactoryClass *klass);
static void destroy (GtkObject *factory);
@@ -40,63 +40,20 @@ static Nautilus_Metafile corba_open (PortableServer_Servant servant,
const Nautilus_URI directory,
CORBA_Environment *ev);
-NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafileFactory, nautilus_metafile_factory, BONOBO_OBJECT_TYPE)
+NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafileFactory, Nautilus_MetafileFactory, BONOBO_X_OBJECT_TYPE, nautilus_metafile_factory)
static void
-nautilus_metafile_factory_initialize_class (NautilusMetafileFactoryClass *klass)
+nautilus_metafile_factory_class_init (NautilusMetafileFactoryClass *klass)
{
GTK_OBJECT_CLASS (klass)->destroy = destroy;
-}
-
-static POA_Nautilus_MetafileFactory__epv *
-nautilus_metafile_factory_get_epv (void)
-{
- static POA_Nautilus_MetafileFactory__epv epv;
-
- epv.open = corba_open;
-
- return &epv;
-}
-
-static POA_Nautilus_MetafileFactory__vepv *
-nautilus_metafile_factory_get_vepv (void)
-{
- static POA_Nautilus_MetafileFactory__vepv vepv;
- vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv ();
- vepv.Nautilus_MetafileFactory_epv = nautilus_metafile_factory_get_epv ();
-
- return &vepv;
-}
-
-static POA_Nautilus_MetafileFactory *
-nautilus_metafile_factory_create_servant (void)
-{
- POA_Nautilus_MetafileFactory *servant;
- CORBA_Environment ev;
-
- servant = (POA_Nautilus_MetafileFactory *) g_new0 (BonoboObjectServant, 1);
- servant->vepv = nautilus_metafile_factory_get_vepv ();
- CORBA_exception_init (&ev);
- POA_Nautilus_MetafileFactory__init ((PortableServer_Servant) servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION){
- g_error ("can't initialize Nautilus metafile factory");
- }
- CORBA_exception_free (&ev);
-
- return servant;
+ klass->epv.open = corba_open;
}
static void
-nautilus_metafile_factory_initialize (NautilusMetafileFactory *factory)
+nautilus_metafile_factory_init (NautilusMetafileFactory *factory)
{
- Nautilus_MetafileFactory corba_factory;
-
factory->details = g_new0 (NautilusMetafileFactoryDetails, 1);
-
- corba_factory = bonobo_object_activate_servant
- (BONOBO_OBJECT (factory), nautilus_metafile_factory_create_servant ());
- bonobo_object_construct (BONOBO_OBJECT (factory), corba_factory);
}
static void
diff --git a/libnautilus-private/nautilus-metafile-factory.h b/libnautilus-private/nautilus-metafile-factory.h
index ad1737ecf..014b7d627 100644
--- a/libnautilus-private/nautilus-metafile-factory.h
+++ b/libnautilus-private/nautilus-metafile-factory.h
@@ -23,7 +23,10 @@
#ifndef NAUTILUS_METAFILE_FACTORY_H
#define NAUTILUS_METAFILE_FACTORY_H
+#include "nautilus-metafile-server.h"
+
#include <bonobo/bonobo-object.h>
+#include <bonobo/bonobo-xobject.h>
#define NAUTILUS_TYPE_METAFILE_FACTORY (nautilus_metafile_factory_get_type ())
#define NAUTILUS_METAFILE_FACTORY(obj) (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_METAFILE_FACTORY, NautilusMetafileFactory))
@@ -34,12 +37,13 @@
typedef struct NautilusMetafileFactoryDetails NautilusMetafileFactoryDetails;
typedef struct {
- BonoboObject parent_slot;
+ BonoboXObject parent_slot;
NautilusMetafileFactoryDetails *details;
} NautilusMetafileFactory;
typedef struct {
- BonoboObjectClass parent_slot;
+ BonoboXObjectClass parent_slot;
+ POA_Nautilus_MetafileFactory__epv epv;
} NautilusMetafileFactoryClass;
GtkType nautilus_metafile_factory_get_type (void);
diff --git a/libnautilus-private/nautilus-metafile.c b/libnautilus-private/nautilus-metafile.c
index 783f912a7..2850a442c 100644
--- a/libnautilus-private/nautilus-metafile.c
+++ b/libnautilus-private/nautilus-metafile.c
@@ -22,11 +22,11 @@
#include <config.h>
#include "nautilus-metafile.h"
-#include "nautilus-metafile-server.h"
-#include <libnautilus/nautilus-bonobo-workarounds.h>
#include <libnautilus-extensions/nautilus-gtk-macros.h>
#include <libnautilus-extensions/nautilus-directory.h>
+#include <libnautilus-extensions/nautilus-bonobo-extensions.h>
+#include <libnautilus/nautilus-bonobo-workarounds.h>
#include "nautilus-string.h"
#include "nautilus-metadata.h"
@@ -40,8 +40,8 @@
#define METAFILE_XML_VERSION "1.0"
-static void nautilus_metafile_initialize (NautilusMetafile *metafile);
-static void nautilus_metafile_initialize_class (NautilusMetafileClass *klass);
+static void nautilus_metafile_init (NautilusMetafile *metafile);
+static void nautilus_metafile_class_init (NautilusMetafileClass *klass);
static void destroy (GtkObject *metafile);
@@ -124,72 +124,29 @@ static void remove_file_metadata (NautilusDirectory *directory,
static void call_metafile_changed_for_one_file (NautilusDirectory *directory,
const CORBA_char *file_name);
-NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetafile, nautilus_metafile, BONOBO_OBJECT_TYPE)
+NAUTILUS_BONOBO_X_BOILERPLATE (NautilusMetafile, Nautilus_Metafile, BONOBO_X_OBJECT_TYPE, nautilus_metafile)
static void
-nautilus_metafile_initialize_class (NautilusMetafileClass *klass)
+nautilus_metafile_class_init (NautilusMetafileClass *klass)
{
GTK_OBJECT_CLASS (klass)->destroy = destroy;
-}
-
-static POA_Nautilus_Metafile__epv *
-nautilus_metafile_get_epv (void)
-{
- static POA_Nautilus_Metafile__epv epv;
-
- epv.is_read = corba_is_read;
- epv.get = corba_get;
- epv.get_list = corba_get_list;
- epv.set = corba_set;
- epv.set_list = corba_set_list;
- epv.copy = corba_copy;
- epv.remove = corba_remove;
- epv.rename = corba_rename;
- epv.register_monitor = corba_register_monitor;
- epv.unregister_monitor = corba_unregister_monitor;
-
- return &epv;
-}
-
-static POA_Nautilus_Metafile__vepv *
-nautilus_metafile_get_vepv (void)
-{
- static POA_Nautilus_Metafile__vepv vepv;
-
- vepv.Bonobo_Unknown_epv = nautilus_bonobo_object_get_epv ();
- vepv.Nautilus_Metafile_epv = nautilus_metafile_get_epv ();
- return &vepv;
-}
-
-static POA_Nautilus_Metafile *
-nautilus_metafile_create_servant (void)
-{
- POA_Nautilus_Metafile *servant;
- CORBA_Environment ev;
-
- servant = (POA_Nautilus_Metafile *) g_new0 (BonoboObjectServant, 1);
- servant->vepv = nautilus_metafile_get_vepv ();
- CORBA_exception_init (&ev);
- POA_Nautilus_Metafile__init ((PortableServer_Servant) servant, &ev);
- if (ev._major != CORBA_NO_EXCEPTION){
- g_error ("can't initialize Nautilus metafile");
- }
- CORBA_exception_free (&ev);
-
- return servant;
+ klass->epv.is_read = corba_is_read;
+ klass->epv.get = corba_get;
+ klass->epv.get_list = corba_get_list;
+ klass->epv.set = corba_set;
+ klass->epv.set_list = corba_set_list;
+ klass->epv.copy = corba_copy;
+ klass->epv.remove = corba_remove;
+ klass->epv.rename = corba_rename;
+ klass->epv.register_monitor = corba_register_monitor;
+ klass->epv.unregister_monitor = corba_unregister_monitor;
}
static void
-nautilus_metafile_initialize (NautilusMetafile *metafile)
+nautilus_metafile_init (NautilusMetafile *metafile)
{
- Nautilus_Metafile corba_metafile;
-
metafile->details = g_new0 (NautilusMetafileDetails, 1);
-
- corba_metafile = bonobo_object_activate_servant
- (BONOBO_OBJECT (metafile), nautilus_metafile_create_servant ());
- bonobo_object_construct (BONOBO_OBJECT (metafile), corba_metafile);
}
static void
diff --git a/libnautilus-private/nautilus-metafile.h b/libnautilus-private/nautilus-metafile.h
index ca2f65bda..94e2c3a44 100644
--- a/libnautilus-private/nautilus-metafile.h
+++ b/libnautilus-private/nautilus-metafile.h
@@ -23,7 +23,10 @@
#ifndef NAUTILUS_METAFILE_H
#define NAUTILUS_METAFILE_H
+#include "nautilus-metafile-server.h"
+
#include <bonobo/bonobo-object.h>
+#include <bonobo/bonobo-xobject.h>
#include <gnome-xml/tree.h>
#include "nautilus-directory.h"
@@ -37,7 +40,7 @@
typedef struct NautilusMetafileDetails NautilusMetafileDetails;
typedef struct {
- BonoboObject parent_slot;
+ BonoboXObject parent_slot;
NautilusMetafileDetails *details;
} NautilusMetafile;
@@ -52,7 +55,8 @@ struct NautilusMetafileDetails {
};
typedef struct {
- BonoboObjectClass parent_slot;
+ BonoboXObjectClass parent_slot;
+ POA_Nautilus_Metafile__epv epv;
} NautilusMetafileClass;
GtkType nautilus_metafile_get_type (void);