mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-09-12 20:41:34 +00:00
Connect to the "destroy" signal of the view_frame rather than the sample
* components/sample/main.c (sample_make_object): Connect to the "destroy" signal of the view_frame rather than the sample content view object, to avoid a race condition where we might exit before the view_frame is fully unreffed and has a chance to clean up. components/sample/nautilus-sample-content-view.c (nautilus_sample_content_view_destroy): Unref the NautilusViewFrame when we are destroyed. * libnautilus/nautilus-zoomable.c, libnautilus/ntl-view-frame.c, libnautilus/ntl-content-view-frame.c, libnautilus/ntl-meta-view-frame.c: Use boilerplate macros for get_type method and to invoke parent destroy method. * libnautilus/nautilus-zoomable.c, libnautilus/ntl-view-frame.c: Unref the interface we query_local_interface for, to avoid holding a superfluous ref to ourselves, since we eventually add_interface that interface. * src/ntl-view.c (nautilus_view_destroy_client): Use bonobo_object_unref instead of bonobo_object_destroy.
This commit is contained in:
parent
ac2b76bea9
commit
4f01fe3665
|
@ -1,3 +1,26 @@
|
|||
2000-03-30 Maciej Stachowiak <mjs@eazel.com>
|
||||
|
||||
* components/sample/main.c (sample_make_object): Connect to the
|
||||
"destroy" signal of the view_frame rather than the sample content
|
||||
view object, to avoid a race condition where we might exit before
|
||||
the view_frame is fully unreffed and has a chance to clean up.
|
||||
components/sample/nautilus-sample-content-view.c
|
||||
(nautilus_sample_content_view_destroy): Unref the
|
||||
NautilusViewFrame when we are destroyed.
|
||||
|
||||
* libnautilus/nautilus-zoomable.c, libnautilus/ntl-view-frame.c,
|
||||
libnautilus/ntl-content-view-frame.c,
|
||||
libnautilus/ntl-meta-view-frame.c: Use boilerplate macros for
|
||||
get_type method and to invoke parent destroy method.
|
||||
|
||||
* libnautilus/nautilus-zoomable.c, libnautilus/ntl-view-frame.c:
|
||||
Unref the interface we query_local_interface for, to avoid holding
|
||||
a superfluous ref to ourselves, since we eventually add_interface
|
||||
that interface.
|
||||
|
||||
* src/ntl-view.c (nautilus_view_destroy_client): Use
|
||||
bonobo_object_unref instead of bonobo_object_destroy.
|
||||
|
||||
2000-03-29 Andy Hertzfeld <andy@eazel.com>
|
||||
|
||||
* src/nautilus-index-tabs.c:
|
||||
|
|
|
@ -36,7 +36,6 @@ static int object_count = 0;
|
|||
static void
|
||||
sample_object_destroyed(GtkObject *obj)
|
||||
{
|
||||
puts ("destroying object.");
|
||||
object_count--;
|
||||
if (object_count <= 0) {
|
||||
gtk_main_quit ();
|
||||
|
@ -51,22 +50,17 @@ sample_make_object (BonoboGenericFactory *factory,
|
|||
NautilusSampleContentView *view;
|
||||
NautilusViewFrame *view_frame;
|
||||
|
||||
puts ("Trying to create object.");
|
||||
|
||||
if (strcmp (goad_id, "nautilus_sample_content_view")) {
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
view = NAUTILUS_SAMPLE_CONTENT_VIEW (gtk_object_new (NAUTILUS_TYPE_SAMPLE_CONTENT_VIEW, NULL));
|
||||
|
||||
object_count++;
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (view), "destroy", sample_object_destroyed, NULL);
|
||||
|
||||
view_frame = NAUTILUS_VIEW_FRAME (nautilus_sample_content_view_get_view_frame (view));
|
||||
|
||||
printf ("Returning new object %x\n", (unsigned) view_frame);
|
||||
|
||||
gtk_signal_connect (GTK_OBJECT (view_frame), "destroy", sample_object_destroyed, NULL);
|
||||
|
||||
return BONOBO_OBJECT (view_frame);
|
||||
}
|
||||
|
|
|
@ -101,6 +101,8 @@ nautilus_sample_content_view_destroy (GtkObject *object)
|
|||
|
||||
view = NAUTILUS_SAMPLE_CONTENT_VIEW (object);
|
||||
|
||||
bonobo_object_unref (view->details->view_frame);
|
||||
|
||||
g_free (view->details->uri);
|
||||
g_free (view->details);
|
||||
|
||||
|
@ -259,7 +261,9 @@ sample_merge_bonobo_items_callback (BonoboObject *control, gboolean state, gpoin
|
|||
0, /* accelerator key modifiers */
|
||||
bonobo_sample_callback, /* callback function */
|
||||
view); /* callback function's data */
|
||||
}
|
||||
} else {
|
||||
/* Do nothing. */
|
||||
}
|
||||
|
||||
/*
|
||||
* Note that we do nothing if state is FALSE. Nautilus content views are activated
|
||||
|
|
|
@ -407,12 +407,9 @@ nautilus_zoomable_new_from_bonobo_control (BonoboObject *bonobo_control,
|
|||
static void
|
||||
nautilus_zoomable_destroy (NautilusZoomable *view)
|
||||
{
|
||||
gtk_object_unref (GTK_OBJECT (view->private->control));
|
||||
|
||||
g_free (view->private);
|
||||
|
||||
if(((GtkObjectClass *)parent_class)->destroy)
|
||||
((GtkObjectClass *)parent_class)->destroy((GtkObject *)view);
|
||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, GTK_OBJECT (view));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -484,8 +481,9 @@ nautilus_zoomable_real_set_bonobo_control (NautilusZoomable *view,
|
|||
|
||||
/* FIXME: what if this fails? Create a new control, or bomb somehow? */
|
||||
view->private->control = bonobo_object_query_local_interface (bonobo_control, "IDL:Bonobo/Control:1.0");
|
||||
gtk_object_ref (GTK_OBJECT (view->private->control));
|
||||
gtk_object_sink (GTK_OBJECT (view->private->control));
|
||||
|
||||
/* We don't need the extra ref the above creates. */
|
||||
bonobo_object_unref (view->private->control);
|
||||
|
||||
bonobo_object_add_interface (BONOBO_OBJECT (view), view->private->control);
|
||||
|
||||
|
|
|
@ -407,12 +407,9 @@ nautilus_zoomable_new_from_bonobo_control (BonoboObject *bonobo_control,
|
|||
static void
|
||||
nautilus_zoomable_destroy (NautilusZoomable *view)
|
||||
{
|
||||
gtk_object_unref (GTK_OBJECT (view->private->control));
|
||||
|
||||
g_free (view->private);
|
||||
|
||||
if(((GtkObjectClass *)parent_class)->destroy)
|
||||
((GtkObjectClass *)parent_class)->destroy((GtkObject *)view);
|
||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, GTK_OBJECT (view));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -484,8 +481,9 @@ nautilus_zoomable_real_set_bonobo_control (NautilusZoomable *view,
|
|||
|
||||
/* FIXME: what if this fails? Create a new control, or bomb somehow? */
|
||||
view->private->control = bonobo_object_query_local_interface (bonobo_control, "IDL:Bonobo/Control:1.0");
|
||||
gtk_object_ref (GTK_OBJECT (view->private->control));
|
||||
gtk_object_sink (GTK_OBJECT (view->private->control));
|
||||
|
||||
/* We don't need the extra ref the above creates. */
|
||||
bonobo_object_unref (view->private->control);
|
||||
|
||||
bonobo_object_add_interface (BONOBO_OBJECT (view), view->private->control);
|
||||
|
||||
|
|
|
@ -30,8 +30,10 @@
|
|||
#include <config.h>
|
||||
#include "ntl-content-view-frame.h"
|
||||
#include "nautilus-view-frame-private.h"
|
||||
#include <libnautilus/nautilus-gtk-macros.h>
|
||||
#include <bonobo/bonobo-control.h>
|
||||
|
||||
|
||||
typedef struct {
|
||||
POA_Nautilus_View servant;
|
||||
gpointer bonobo_object;
|
||||
|
@ -55,37 +57,14 @@ static POA_Nautilus_ContentView__vepv impl_Nautilus_ContentView_vepv =
|
|||
&impl_Nautilus_ContentView_epv
|
||||
};
|
||||
|
||||
static void nautilus_content_view_frame_init (NautilusContentViewFrame *view);
|
||||
static void nautilus_content_view_frame_destroy (NautilusContentViewFrame *view);
|
||||
static void nautilus_content_view_frame_class_init (NautilusContentViewFrameClass *klass);
|
||||
static void nautilus_content_view_frame_initialize (NautilusContentViewFrame *view);
|
||||
static void nautilus_content_view_frame_destroy (NautilusContentViewFrame *view);
|
||||
static void nautilus_content_view_frame_initialize_class (NautilusContentViewFrameClass *klass);
|
||||
|
||||
GtkType
|
||||
nautilus_content_view_frame_get_type (void)
|
||||
{
|
||||
static GtkType view_frame_type = 0;
|
||||
|
||||
if (!view_frame_type)
|
||||
{
|
||||
const GtkTypeInfo view_frame_info =
|
||||
{
|
||||
"NautilusContentViewFrame",
|
||||
sizeof (NautilusContentViewFrame),
|
||||
sizeof (NautilusContentViewFrameClass),
|
||||
(GtkClassInitFunc) nautilus_content_view_frame_class_init,
|
||||
(GtkObjectInitFunc) nautilus_content_view_frame_init,
|
||||
/* reserved_1 */ NULL,
|
||||
/* reserved_2 */ NULL,
|
||||
(GtkClassInitFunc) NULL,
|
||||
};
|
||||
|
||||
view_frame_type = gtk_type_unique (nautilus_view_frame_get_type(), &view_frame_info);
|
||||
}
|
||||
|
||||
return view_frame_type;
|
||||
}
|
||||
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusContentViewFrame, nautilus_content_view_frame, NAUTILUS_TYPE_VIEW_FRAME)
|
||||
|
||||
static void
|
||||
nautilus_content_view_frame_init (NautilusContentViewFrame *view)
|
||||
nautilus_content_view_frame_initialize (NautilusContentViewFrame *view)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -113,20 +92,20 @@ nautilus_content_view_frame_new_from_bonobo_control (BonoboObject *bonobo_contro
|
|||
|
||||
static void
|
||||
nautilus_content_view_frame_destroy (NautilusContentViewFrame *view)
|
||||
{
|
||||
NautilusViewFrameClass *klass = NAUTILUS_VIEW_FRAME_CLASS(GTK_OBJECT(view)->klass);
|
||||
|
||||
if(((GtkObjectClass *)klass->parent_class)->destroy)
|
||||
((GtkObjectClass *)klass->parent_class)->destroy((GtkObject *)view);
|
||||
{
|
||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, GTK_OBJECT (view));
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_content_view_frame_class_init (NautilusContentViewFrameClass *klass)
|
||||
nautilus_content_view_frame_initialize_class (NautilusContentViewFrameClass *klass)
|
||||
{
|
||||
NautilusViewFrameClass *view_class = ((NautilusViewFrameClass *)klass);
|
||||
NautilusViewFrameClass *view_class;
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
GTK_OBJECT_CLASS(klass)->destroy = (void (*)(GtkObject *))nautilus_content_view_frame_destroy;
|
||||
object_class = (GtkObjectClass*) klass;
|
||||
object_class->destroy = (void (*)(GtkObject *))nautilus_content_view_frame_destroy;
|
||||
|
||||
view_class = (NautilusViewFrameClass *) klass;
|
||||
view_class->servant_init_func = POA_Nautilus_ContentView__init;
|
||||
view_class->servant_destroy_func = POA_Nautilus_ContentView__fini;
|
||||
view_class->vepv = &impl_Nautilus_ContentView_vepv;
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
#include <libgnome/gnome-i18n.h>
|
||||
#include <bonobo/bonobo-control.h>
|
||||
#include <bonobo/bonobo-property-bag.h>
|
||||
#include <libnautilus/nautilus-gtk-macros.h>
|
||||
|
||||
|
||||
typedef struct {
|
||||
POA_Nautilus_View servant;
|
||||
|
@ -57,37 +59,15 @@ static POA_Nautilus_MetaView__vepv impl_Nautilus_MetaView_vepv =
|
|||
&impl_Nautilus_MetaView_epv
|
||||
};
|
||||
|
||||
static void nautilus_meta_view_frame_init (NautilusMetaViewFrame *view);
|
||||
static void nautilus_meta_view_frame_destroy (NautilusMetaViewFrame *view);
|
||||
static void nautilus_meta_view_frame_class_init (NautilusMetaViewFrameClass *klass);
|
||||
static void nautilus_meta_view_frame_initialize (NautilusMetaViewFrame *view);
|
||||
static void nautilus_meta_view_frame_destroy (NautilusMetaViewFrame *view);
|
||||
static void nautilus_meta_view_frame_initialize_class (NautilusMetaViewFrameClass *klass);
|
||||
|
||||
GtkType
|
||||
nautilus_meta_view_frame_get_type (void)
|
||||
{
|
||||
static GtkType view_frame_type = 0;
|
||||
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetaViewFrame, nautilus_meta_view_frame, NAUTILUS_TYPE_VIEW_FRAME)
|
||||
|
||||
if (!view_frame_type)
|
||||
{
|
||||
const GtkTypeInfo view_frame_info =
|
||||
{
|
||||
"NautilusMetaViewFrame",
|
||||
sizeof (NautilusMetaViewFrame),
|
||||
sizeof (NautilusMetaViewFrameClass),
|
||||
(GtkClassInitFunc) nautilus_meta_view_frame_class_init,
|
||||
(GtkObjectInitFunc) nautilus_meta_view_frame_init,
|
||||
/* reserved_1 */ NULL,
|
||||
/* reserved_2 */ NULL,
|
||||
(GtkClassInitFunc) NULL,
|
||||
};
|
||||
|
||||
view_frame_type = gtk_type_unique (nautilus_view_frame_get_type(), &view_frame_info);
|
||||
}
|
||||
|
||||
return view_frame_type;
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_meta_view_frame_init (NautilusMetaViewFrame *view)
|
||||
nautilus_meta_view_frame_initialize (NautilusMetaViewFrame *view)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -116,14 +96,11 @@ nautilus_meta_view_frame_new_from_bonobo_control (BonoboObject *bonobo_control)
|
|||
static void
|
||||
nautilus_meta_view_frame_destroy (NautilusMetaViewFrame *view)
|
||||
{
|
||||
NautilusViewFrameClass *klass = NAUTILUS_VIEW_FRAME_CLASS(GTK_OBJECT(view)->klass);
|
||||
|
||||
if(((GtkObjectClass *)klass->parent_class)->destroy)
|
||||
((GtkObjectClass *)klass->parent_class)->destroy((GtkObject *)view);
|
||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, GTK_OBJECT (view));
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_meta_view_frame_class_init (NautilusMetaViewFrameClass *klass)
|
||||
nautilus_meta_view_frame_initialize_class (NautilusMetaViewFrameClass *klass)
|
||||
{
|
||||
NautilusViewFrameClass *view_class = ((NautilusViewFrameClass *)klass);
|
||||
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
#include <gtk/gtksignal.h>
|
||||
#include <bonobo/bonobo-main.h>
|
||||
#include <bonobo/bonobo-control.h>
|
||||
#include <libnautilus/nautilus-gtk-macros.h>
|
||||
|
||||
|
||||
enum {
|
||||
NOTIFY_LOCATION_CHANGE,
|
||||
|
@ -203,9 +205,9 @@ impl_Nautilus_View__create(NautilusViewFrame *view, CORBA_Environment * ev)
|
|||
return retval;
|
||||
}
|
||||
|
||||
static void nautilus_view_frame_init (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_destroy (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_class_init (NautilusViewFrameClass *klass);
|
||||
static void nautilus_view_frame_initialize (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_destroy (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_initialize_class (NautilusViewFrameClass *klass);
|
||||
static void nautilus_view_frame_set_arg (GtkObject *object,
|
||||
GtkArg *arg,
|
||||
guint arg_id);
|
||||
|
@ -213,33 +215,11 @@ static void nautilus_view_frame_get_arg (GtkObject *object,
|
|||
GtkArg *arg,
|
||||
guint arg_id);
|
||||
|
||||
GtkType
|
||||
nautilus_view_frame_get_type (void)
|
||||
{
|
||||
static GtkType view_frame_type = 0;
|
||||
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusViewFrame, nautilus_view_frame, BONOBO_OBJECT_TYPE)
|
||||
|
||||
if (!view_frame_type)
|
||||
{
|
||||
const GtkTypeInfo view_frame_info =
|
||||
{
|
||||
"NautilusViewFrame",
|
||||
sizeof (NautilusViewFrame),
|
||||
sizeof (NautilusViewFrameClass),
|
||||
(GtkClassInitFunc) nautilus_view_frame_class_init,
|
||||
(GtkObjectInitFunc) nautilus_view_frame_init,
|
||||
/* reserved_1 */ NULL,
|
||||
/* reserved_2 */ NULL,
|
||||
(GtkClassInitFunc) NULL,
|
||||
};
|
||||
|
||||
view_frame_type = gtk_type_unique (bonobo_object_get_type(), &view_frame_info);
|
||||
}
|
||||
|
||||
return view_frame_type;
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_view_frame_class_init (NautilusViewFrameClass *klass)
|
||||
nautilus_view_frame_initialize_class (NautilusViewFrameClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
|
@ -331,7 +311,7 @@ nautilus_view_frame_get_arg (GtkObject *object,
|
|||
}
|
||||
|
||||
static void
|
||||
nautilus_view_frame_init (NautilusViewFrame *view)
|
||||
nautilus_view_frame_initialize (NautilusViewFrame *view)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
CORBA_exception_init(&ev);
|
||||
|
@ -368,14 +348,13 @@ nautilus_view_frame_new_from_bonobo_control (BonoboObject *bonobo_control)
|
|||
static void
|
||||
nautilus_view_frame_destroy (NautilusViewFrame *view)
|
||||
{
|
||||
NautilusViewFrameClass *klass = NAUTILUS_VIEW_FRAME_CLASS(GTK_OBJECT(view)->klass);
|
||||
NautilusViewFrameClass *klass;
|
||||
|
||||
bonobo_object_destroy(view->private->control);
|
||||
klass = NAUTILUS_VIEW_FRAME_CLASS (GTK_OBJECT (view)->klass);
|
||||
|
||||
g_free (view->private);
|
||||
|
||||
if(((GtkObjectClass *)klass->parent_class)->destroy)
|
||||
((GtkObjectClass *)klass->parent_class)->destroy((GtkObject *)view);
|
||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, GTK_OBJECT (view));
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
@ -518,6 +497,7 @@ nautilus_view_frame_real_set_bonobo_control (NautilusViewFrame *view,
|
|||
|
||||
/* FIXME: what if this fails? Create a new control, or bomb somehow? */
|
||||
view->private->control = bonobo_object_query_local_interface (bonobo_control, "IDL:Bonobo/Control:1.0");
|
||||
bonobo_object_unref (view->private->control); /* we don't want this spare ref */
|
||||
|
||||
bonobo_object_add_interface (BONOBO_OBJECT (view), view->private->control);
|
||||
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
#include <gtk/gtksignal.h>
|
||||
#include <bonobo/bonobo-main.h>
|
||||
#include <bonobo/bonobo-control.h>
|
||||
#include <libnautilus/nautilus-gtk-macros.h>
|
||||
|
||||
|
||||
enum {
|
||||
NOTIFY_LOCATION_CHANGE,
|
||||
|
@ -203,9 +205,9 @@ impl_Nautilus_View__create(NautilusViewFrame *view, CORBA_Environment * ev)
|
|||
return retval;
|
||||
}
|
||||
|
||||
static void nautilus_view_frame_init (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_destroy (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_class_init (NautilusViewFrameClass *klass);
|
||||
static void nautilus_view_frame_initialize (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_destroy (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_initialize_class (NautilusViewFrameClass *klass);
|
||||
static void nautilus_view_frame_set_arg (GtkObject *object,
|
||||
GtkArg *arg,
|
||||
guint arg_id);
|
||||
|
@ -213,33 +215,11 @@ static void nautilus_view_frame_get_arg (GtkObject *object,
|
|||
GtkArg *arg,
|
||||
guint arg_id);
|
||||
|
||||
GtkType
|
||||
nautilus_view_frame_get_type (void)
|
||||
{
|
||||
static GtkType view_frame_type = 0;
|
||||
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusViewFrame, nautilus_view_frame, BONOBO_OBJECT_TYPE)
|
||||
|
||||
if (!view_frame_type)
|
||||
{
|
||||
const GtkTypeInfo view_frame_info =
|
||||
{
|
||||
"NautilusViewFrame",
|
||||
sizeof (NautilusViewFrame),
|
||||
sizeof (NautilusViewFrameClass),
|
||||
(GtkClassInitFunc) nautilus_view_frame_class_init,
|
||||
(GtkObjectInitFunc) nautilus_view_frame_init,
|
||||
/* reserved_1 */ NULL,
|
||||
/* reserved_2 */ NULL,
|
||||
(GtkClassInitFunc) NULL,
|
||||
};
|
||||
|
||||
view_frame_type = gtk_type_unique (bonobo_object_get_type(), &view_frame_info);
|
||||
}
|
||||
|
||||
return view_frame_type;
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_view_frame_class_init (NautilusViewFrameClass *klass)
|
||||
nautilus_view_frame_initialize_class (NautilusViewFrameClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
|
@ -331,7 +311,7 @@ nautilus_view_frame_get_arg (GtkObject *object,
|
|||
}
|
||||
|
||||
static void
|
||||
nautilus_view_frame_init (NautilusViewFrame *view)
|
||||
nautilus_view_frame_initialize (NautilusViewFrame *view)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
CORBA_exception_init(&ev);
|
||||
|
@ -368,14 +348,13 @@ nautilus_view_frame_new_from_bonobo_control (BonoboObject *bonobo_control)
|
|||
static void
|
||||
nautilus_view_frame_destroy (NautilusViewFrame *view)
|
||||
{
|
||||
NautilusViewFrameClass *klass = NAUTILUS_VIEW_FRAME_CLASS(GTK_OBJECT(view)->klass);
|
||||
NautilusViewFrameClass *klass;
|
||||
|
||||
bonobo_object_destroy(view->private->control);
|
||||
klass = NAUTILUS_VIEW_FRAME_CLASS (GTK_OBJECT (view)->klass);
|
||||
|
||||
g_free (view->private);
|
||||
|
||||
if(((GtkObjectClass *)klass->parent_class)->destroy)
|
||||
((GtkObjectClass *)klass->parent_class)->destroy((GtkObject *)view);
|
||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, GTK_OBJECT (view));
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
@ -518,6 +497,7 @@ nautilus_view_frame_real_set_bonobo_control (NautilusViewFrame *view,
|
|||
|
||||
/* FIXME: what if this fails? Create a new control, or bomb somehow? */
|
||||
view->private->control = bonobo_object_query_local_interface (bonobo_control, "IDL:Bonobo/Control:1.0");
|
||||
bonobo_object_unref (view->private->control); /* we don't want this spare ref */
|
||||
|
||||
bonobo_object_add_interface (BONOBO_OBJECT (view), view->private->control);
|
||||
|
||||
|
|
|
@ -407,12 +407,9 @@ nautilus_zoomable_new_from_bonobo_control (BonoboObject *bonobo_control,
|
|||
static void
|
||||
nautilus_zoomable_destroy (NautilusZoomable *view)
|
||||
{
|
||||
gtk_object_unref (GTK_OBJECT (view->private->control));
|
||||
|
||||
g_free (view->private);
|
||||
|
||||
if(((GtkObjectClass *)parent_class)->destroy)
|
||||
((GtkObjectClass *)parent_class)->destroy((GtkObject *)view);
|
||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, GTK_OBJECT (view));
|
||||
}
|
||||
|
||||
static gboolean
|
||||
|
@ -484,8 +481,9 @@ nautilus_zoomable_real_set_bonobo_control (NautilusZoomable *view,
|
|||
|
||||
/* FIXME: what if this fails? Create a new control, or bomb somehow? */
|
||||
view->private->control = bonobo_object_query_local_interface (bonobo_control, "IDL:Bonobo/Control:1.0");
|
||||
gtk_object_ref (GTK_OBJECT (view->private->control));
|
||||
gtk_object_sink (GTK_OBJECT (view->private->control));
|
||||
|
||||
/* We don't need the extra ref the above creates. */
|
||||
bonobo_object_unref (view->private->control);
|
||||
|
||||
bonobo_object_add_interface (BONOBO_OBJECT (view), view->private->control);
|
||||
|
||||
|
|
|
@ -30,8 +30,10 @@
|
|||
#include <config.h>
|
||||
#include "ntl-content-view-frame.h"
|
||||
#include "nautilus-view-frame-private.h"
|
||||
#include <libnautilus/nautilus-gtk-macros.h>
|
||||
#include <bonobo/bonobo-control.h>
|
||||
|
||||
|
||||
typedef struct {
|
||||
POA_Nautilus_View servant;
|
||||
gpointer bonobo_object;
|
||||
|
@ -55,37 +57,14 @@ static POA_Nautilus_ContentView__vepv impl_Nautilus_ContentView_vepv =
|
|||
&impl_Nautilus_ContentView_epv
|
||||
};
|
||||
|
||||
static void nautilus_content_view_frame_init (NautilusContentViewFrame *view);
|
||||
static void nautilus_content_view_frame_destroy (NautilusContentViewFrame *view);
|
||||
static void nautilus_content_view_frame_class_init (NautilusContentViewFrameClass *klass);
|
||||
static void nautilus_content_view_frame_initialize (NautilusContentViewFrame *view);
|
||||
static void nautilus_content_view_frame_destroy (NautilusContentViewFrame *view);
|
||||
static void nautilus_content_view_frame_initialize_class (NautilusContentViewFrameClass *klass);
|
||||
|
||||
GtkType
|
||||
nautilus_content_view_frame_get_type (void)
|
||||
{
|
||||
static GtkType view_frame_type = 0;
|
||||
|
||||
if (!view_frame_type)
|
||||
{
|
||||
const GtkTypeInfo view_frame_info =
|
||||
{
|
||||
"NautilusContentViewFrame",
|
||||
sizeof (NautilusContentViewFrame),
|
||||
sizeof (NautilusContentViewFrameClass),
|
||||
(GtkClassInitFunc) nautilus_content_view_frame_class_init,
|
||||
(GtkObjectInitFunc) nautilus_content_view_frame_init,
|
||||
/* reserved_1 */ NULL,
|
||||
/* reserved_2 */ NULL,
|
||||
(GtkClassInitFunc) NULL,
|
||||
};
|
||||
|
||||
view_frame_type = gtk_type_unique (nautilus_view_frame_get_type(), &view_frame_info);
|
||||
}
|
||||
|
||||
return view_frame_type;
|
||||
}
|
||||
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusContentViewFrame, nautilus_content_view_frame, NAUTILUS_TYPE_VIEW_FRAME)
|
||||
|
||||
static void
|
||||
nautilus_content_view_frame_init (NautilusContentViewFrame *view)
|
||||
nautilus_content_view_frame_initialize (NautilusContentViewFrame *view)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -113,20 +92,20 @@ nautilus_content_view_frame_new_from_bonobo_control (BonoboObject *bonobo_contro
|
|||
|
||||
static void
|
||||
nautilus_content_view_frame_destroy (NautilusContentViewFrame *view)
|
||||
{
|
||||
NautilusViewFrameClass *klass = NAUTILUS_VIEW_FRAME_CLASS(GTK_OBJECT(view)->klass);
|
||||
|
||||
if(((GtkObjectClass *)klass->parent_class)->destroy)
|
||||
((GtkObjectClass *)klass->parent_class)->destroy((GtkObject *)view);
|
||||
{
|
||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, GTK_OBJECT (view));
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_content_view_frame_class_init (NautilusContentViewFrameClass *klass)
|
||||
nautilus_content_view_frame_initialize_class (NautilusContentViewFrameClass *klass)
|
||||
{
|
||||
NautilusViewFrameClass *view_class = ((NautilusViewFrameClass *)klass);
|
||||
NautilusViewFrameClass *view_class;
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
GTK_OBJECT_CLASS(klass)->destroy = (void (*)(GtkObject *))nautilus_content_view_frame_destroy;
|
||||
object_class = (GtkObjectClass*) klass;
|
||||
object_class->destroy = (void (*)(GtkObject *))nautilus_content_view_frame_destroy;
|
||||
|
||||
view_class = (NautilusViewFrameClass *) klass;
|
||||
view_class->servant_init_func = POA_Nautilus_ContentView__init;
|
||||
view_class->servant_destroy_func = POA_Nautilus_ContentView__fini;
|
||||
view_class->vepv = &impl_Nautilus_ContentView_vepv;
|
||||
|
|
|
@ -33,6 +33,8 @@
|
|||
#include <libgnome/gnome-i18n.h>
|
||||
#include <bonobo/bonobo-control.h>
|
||||
#include <bonobo/bonobo-property-bag.h>
|
||||
#include <libnautilus/nautilus-gtk-macros.h>
|
||||
|
||||
|
||||
typedef struct {
|
||||
POA_Nautilus_View servant;
|
||||
|
@ -57,37 +59,15 @@ static POA_Nautilus_MetaView__vepv impl_Nautilus_MetaView_vepv =
|
|||
&impl_Nautilus_MetaView_epv
|
||||
};
|
||||
|
||||
static void nautilus_meta_view_frame_init (NautilusMetaViewFrame *view);
|
||||
static void nautilus_meta_view_frame_destroy (NautilusMetaViewFrame *view);
|
||||
static void nautilus_meta_view_frame_class_init (NautilusMetaViewFrameClass *klass);
|
||||
static void nautilus_meta_view_frame_initialize (NautilusMetaViewFrame *view);
|
||||
static void nautilus_meta_view_frame_destroy (NautilusMetaViewFrame *view);
|
||||
static void nautilus_meta_view_frame_initialize_class (NautilusMetaViewFrameClass *klass);
|
||||
|
||||
GtkType
|
||||
nautilus_meta_view_frame_get_type (void)
|
||||
{
|
||||
static GtkType view_frame_type = 0;
|
||||
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusMetaViewFrame, nautilus_meta_view_frame, NAUTILUS_TYPE_VIEW_FRAME)
|
||||
|
||||
if (!view_frame_type)
|
||||
{
|
||||
const GtkTypeInfo view_frame_info =
|
||||
{
|
||||
"NautilusMetaViewFrame",
|
||||
sizeof (NautilusMetaViewFrame),
|
||||
sizeof (NautilusMetaViewFrameClass),
|
||||
(GtkClassInitFunc) nautilus_meta_view_frame_class_init,
|
||||
(GtkObjectInitFunc) nautilus_meta_view_frame_init,
|
||||
/* reserved_1 */ NULL,
|
||||
/* reserved_2 */ NULL,
|
||||
(GtkClassInitFunc) NULL,
|
||||
};
|
||||
|
||||
view_frame_type = gtk_type_unique (nautilus_view_frame_get_type(), &view_frame_info);
|
||||
}
|
||||
|
||||
return view_frame_type;
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_meta_view_frame_init (NautilusMetaViewFrame *view)
|
||||
nautilus_meta_view_frame_initialize (NautilusMetaViewFrame *view)
|
||||
{
|
||||
}
|
||||
|
||||
|
@ -116,14 +96,11 @@ nautilus_meta_view_frame_new_from_bonobo_control (BonoboObject *bonobo_control)
|
|||
static void
|
||||
nautilus_meta_view_frame_destroy (NautilusMetaViewFrame *view)
|
||||
{
|
||||
NautilusViewFrameClass *klass = NAUTILUS_VIEW_FRAME_CLASS(GTK_OBJECT(view)->klass);
|
||||
|
||||
if(((GtkObjectClass *)klass->parent_class)->destroy)
|
||||
((GtkObjectClass *)klass->parent_class)->destroy((GtkObject *)view);
|
||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, GTK_OBJECT (view));
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_meta_view_frame_class_init (NautilusMetaViewFrameClass *klass)
|
||||
nautilus_meta_view_frame_initialize_class (NautilusMetaViewFrameClass *klass)
|
||||
{
|
||||
NautilusViewFrameClass *view_class = ((NautilusViewFrameClass *)klass);
|
||||
|
||||
|
|
|
@ -34,6 +34,8 @@
|
|||
#include <gtk/gtksignal.h>
|
||||
#include <bonobo/bonobo-main.h>
|
||||
#include <bonobo/bonobo-control.h>
|
||||
#include <libnautilus/nautilus-gtk-macros.h>
|
||||
|
||||
|
||||
enum {
|
||||
NOTIFY_LOCATION_CHANGE,
|
||||
|
@ -203,9 +205,9 @@ impl_Nautilus_View__create(NautilusViewFrame *view, CORBA_Environment * ev)
|
|||
return retval;
|
||||
}
|
||||
|
||||
static void nautilus_view_frame_init (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_destroy (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_class_init (NautilusViewFrameClass *klass);
|
||||
static void nautilus_view_frame_initialize (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_destroy (NautilusViewFrame *view);
|
||||
static void nautilus_view_frame_initialize_class (NautilusViewFrameClass *klass);
|
||||
static void nautilus_view_frame_set_arg (GtkObject *object,
|
||||
GtkArg *arg,
|
||||
guint arg_id);
|
||||
|
@ -213,33 +215,11 @@ static void nautilus_view_frame_get_arg (GtkObject *object,
|
|||
GtkArg *arg,
|
||||
guint arg_id);
|
||||
|
||||
GtkType
|
||||
nautilus_view_frame_get_type (void)
|
||||
{
|
||||
static GtkType view_frame_type = 0;
|
||||
NAUTILUS_DEFINE_CLASS_BOILERPLATE (NautilusViewFrame, nautilus_view_frame, BONOBO_OBJECT_TYPE)
|
||||
|
||||
if (!view_frame_type)
|
||||
{
|
||||
const GtkTypeInfo view_frame_info =
|
||||
{
|
||||
"NautilusViewFrame",
|
||||
sizeof (NautilusViewFrame),
|
||||
sizeof (NautilusViewFrameClass),
|
||||
(GtkClassInitFunc) nautilus_view_frame_class_init,
|
||||
(GtkObjectInitFunc) nautilus_view_frame_init,
|
||||
/* reserved_1 */ NULL,
|
||||
/* reserved_2 */ NULL,
|
||||
(GtkClassInitFunc) NULL,
|
||||
};
|
||||
|
||||
view_frame_type = gtk_type_unique (bonobo_object_get_type(), &view_frame_info);
|
||||
}
|
||||
|
||||
return view_frame_type;
|
||||
}
|
||||
|
||||
static void
|
||||
nautilus_view_frame_class_init (NautilusViewFrameClass *klass)
|
||||
nautilus_view_frame_initialize_class (NautilusViewFrameClass *klass)
|
||||
{
|
||||
GtkObjectClass *object_class;
|
||||
|
||||
|
@ -331,7 +311,7 @@ nautilus_view_frame_get_arg (GtkObject *object,
|
|||
}
|
||||
|
||||
static void
|
||||
nautilus_view_frame_init (NautilusViewFrame *view)
|
||||
nautilus_view_frame_initialize (NautilusViewFrame *view)
|
||||
{
|
||||
CORBA_Environment ev;
|
||||
CORBA_exception_init(&ev);
|
||||
|
@ -368,14 +348,13 @@ nautilus_view_frame_new_from_bonobo_control (BonoboObject *bonobo_control)
|
|||
static void
|
||||
nautilus_view_frame_destroy (NautilusViewFrame *view)
|
||||
{
|
||||
NautilusViewFrameClass *klass = NAUTILUS_VIEW_FRAME_CLASS(GTK_OBJECT(view)->klass);
|
||||
NautilusViewFrameClass *klass;
|
||||
|
||||
bonobo_object_destroy(view->private->control);
|
||||
klass = NAUTILUS_VIEW_FRAME_CLASS (GTK_OBJECT (view)->klass);
|
||||
|
||||
g_free (view->private);
|
||||
|
||||
if(((GtkObjectClass *)klass->parent_class)->destroy)
|
||||
((GtkObjectClass *)klass->parent_class)->destroy((GtkObject *)view);
|
||||
NAUTILUS_CALL_PARENT_CLASS (GTK_OBJECT_CLASS, destroy, GTK_OBJECT (view));
|
||||
}
|
||||
|
||||
gboolean
|
||||
|
@ -518,6 +497,7 @@ nautilus_view_frame_real_set_bonobo_control (NautilusViewFrame *view,
|
|||
|
||||
/* FIXME: what if this fails? Create a new control, or bomb somehow? */
|
||||
view->private->control = bonobo_object_query_local_interface (bonobo_control, "IDL:Bonobo/Control:1.0");
|
||||
bonobo_object_unref (view->private->control); /* we don't want this spare ref */
|
||||
|
||||
bonobo_object_add_interface (BONOBO_OBJECT (view), view->private->control);
|
||||
|
||||
|
|
|
@ -233,9 +233,9 @@ nautilus_view_destroy_client(NautilusView *view)
|
|||
|
||||
g_free(view->iid); view->iid = NULL;
|
||||
|
||||
bonobo_object_destroy(BONOBO_OBJECT(view->client_object)); view->client_object = NULL;
|
||||
bonobo_object_unref (BONOBO_OBJECT (view->client_object)); view->client_object = NULL;
|
||||
|
||||
gtk_container_remove(GTK_CONTAINER(view), view->client_widget); view->client_widget = NULL;
|
||||
gtk_container_remove (GTK_CONTAINER(view), view->client_widget); view->client_widget = NULL;
|
||||
|
||||
if(view->component_class->destroy)
|
||||
{
|
||||
|
@ -245,7 +245,7 @@ nautilus_view_destroy_client(NautilusView *view)
|
|||
CORBA_exception_free(&ev);
|
||||
}
|
||||
|
||||
bonobo_object_destroy(view->view_frame); view->view_frame = NULL;
|
||||
bonobo_object_unref (view->view_frame); view->view_frame = NULL;
|
||||
|
||||
view->component_class = NULL;
|
||||
view->component_data = NULL;
|
||||
|
|
|
@ -233,9 +233,9 @@ nautilus_view_destroy_client(NautilusView *view)
|
|||
|
||||
g_free(view->iid); view->iid = NULL;
|
||||
|
||||
bonobo_object_destroy(BONOBO_OBJECT(view->client_object)); view->client_object = NULL;
|
||||
bonobo_object_unref (BONOBO_OBJECT (view->client_object)); view->client_object = NULL;
|
||||
|
||||
gtk_container_remove(GTK_CONTAINER(view), view->client_widget); view->client_widget = NULL;
|
||||
gtk_container_remove (GTK_CONTAINER(view), view->client_widget); view->client_widget = NULL;
|
||||
|
||||
if(view->component_class->destroy)
|
||||
{
|
||||
|
@ -245,7 +245,7 @@ nautilus_view_destroy_client(NautilusView *view)
|
|||
CORBA_exception_free(&ev);
|
||||
}
|
||||
|
||||
bonobo_object_destroy(view->view_frame); view->view_frame = NULL;
|
||||
bonobo_object_unref (view->view_frame); view->view_frame = NULL;
|
||||
|
||||
view->component_class = NULL;
|
||||
view->component_data = NULL;
|
||||
|
|
Loading…
Reference in a new issue