X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=src%2Fui%2Fgui%2Fpsppire-dict.c;h=acf73af7a75370a4dbb7f0dcd99364b33a04adb2;hb=ceaed4a17cb3b0a14c89f10b72a636f94af97e7a;hp=640598e716a3533c38ff41f5e589348133364404;hpb=96994a54e60e9c95b8bba54c2281acf7059b1203;p=pspp diff --git a/src/ui/gui/psppire-dict.c b/src/ui/gui/psppire-dict.c index 640598e716..acf73af7a7 100644 --- a/src/ui/gui/psppire-dict.c +++ b/src/ui/gui/psppire-dict.c @@ -63,8 +63,6 @@ enum { /* --- prototypes --- */ -static void psppire_dict_class_init (PsppireDictClass *class); -static void psppire_dict_init (PsppireDict *dict); static void psppire_dict_dispose (GObject *object); static void dictionary_tree_model_init (GtkTreeModelIface *iface); @@ -141,55 +139,12 @@ static GObjectClass *parent_class = NULL; static guint signals [n_SIGNALS]; /* --- functions --- */ -/** - * psppire_dict_get_type: - * @returns: the type ID for accelerator groups. - */ -GType -psppire_dict_get_type (void) -{ - static GType object_type = 0; - - if (!object_type) - { - static const GTypeInfo object_info = { - sizeof (PsppireDictClass), - (GBaseInitFunc) NULL, - (GBaseFinalizeFunc) NULL, - (GClassInitFunc) psppire_dict_class_init, - NULL, /* class_finalize */ - NULL, /* class_data */ - sizeof (PsppireDict), - 0, /* n_preallocs */ - (GInstanceInitFunc) psppire_dict_init, - }; - - static const GInterfaceInfo tree_model_info = { - (GInterfaceInitFunc) dictionary_tree_model_init, - NULL, - NULL - }; - - static const GInterfaceInfo list_model_info = { - (GInterfaceInitFunc) ssw_init_iface, - NULL, - NULL - }; - - object_type = g_type_register_static (G_TYPE_OBJECT, - "PsppireDict", - &object_info, 0); - - g_type_add_interface_static (object_type, GTK_TYPE_TREE_MODEL, - &tree_model_info); - - g_type_add_interface_static (object_type, G_TYPE_LIST_MODEL, - &list_model_info); - } - - return object_type; -} +G_DEFINE_TYPE_WITH_CODE (PsppireDict, psppire_dict, G_TYPE_OBJECT, + G_IMPLEMENT_INTERFACE (GTK_TYPE_TREE_MODEL, + dictionary_tree_model_init) + G_IMPLEMENT_INTERFACE (G_TYPE_LIST_MODEL, + ssw_init_iface)) static void psppire_dict_class_init (PsppireDictClass *class) @@ -287,6 +242,11 @@ psppire_dict_dispose (GObject *object) { PsppireDict *d = PSPPIRE_DICT (object); + if (!d->dispose_has_run) + return; + + d->dispose_has_run = TRUE; + dict_set_callbacks (d->dict, NULL, NULL); dict_unref (d->dict); @@ -352,10 +312,12 @@ static const struct dict_callbacks gui_callbacks = }; static void -psppire_dict_init (PsppireDict *psppire_dict) +psppire_dict_init (PsppireDict *d) { - psppire_dict->stamp = g_random_int (); - psppire_dict->disable_insert_signal = FALSE; + d->dispose_has_run = FALSE; + + d->stamp = g_random_int (); + d->disable_insert_signal = FALSE; } /** @@ -473,7 +435,6 @@ psppire_dict_insert_variable (PsppireDict *d, gint idx, const gchar *name) void psppire_dict_delete_variables (PsppireDict *d, gint first, gint n) { - gint idx; g_return_if_fail (d); g_return_if_fail (d->dict); g_return_if_fail (PSPPIRE_IS_DICT (d));