void fcitx_im_widget_finalize(GObject* object) { FcitxImWidget* self = FCITX_IM_WIDGET(object); if (self->array) { g_ptr_array_set_free_func(self->array, fcitx_im_item_free); g_ptr_array_free(self->array, FALSE); self->array = NULL; } g_object_unref(self->improxy); g_free(self->focus); G_OBJECT_CLASS (fcitx_im_widget_parent_class)->finalize (object); }
static GObject * fcitx_im_widget_constructor (GType gtype, guint n_properties, GObjectConstructParam *properties) { GObject *obj; FcitxImWidget *self; GtkWidget *widget; obj = G_OBJECT_CLASS (fcitx_im_widget_parent_class)->constructor (gtype, n_properties, properties); self = FCITX_IM_WIDGET (obj); widget = GTK_WIDGET(gtk_builder_get_object (self->builder, "im_widget")); gtk_widget_reparent (widget, GTK_WIDGET(self)); _fcitx_im_widget_connect(self); return obj; }
void fcitx_im_widget_dispose(GObject* object) { FcitxImWidget* self = FCITX_IM_WIDGET(object); if (self->array) { g_ptr_array_set_free_func(self->array, (GDestroyNotify) fcitx_im_item_free); g_ptr_array_free(self->array, FALSE); self->array = NULL; } if (self->improxy) { g_signal_handlers_disconnect_by_func(self->improxy, G_CALLBACK(_fcitx_im_widget_imlist_changed_cb), self); g_object_unref(self->improxy); self->improxy = NULL; } if (self->focus) { g_free(self->focus); self->focus = NULL; } G_OBJECT_CLASS (fcitx_im_widget_parent_class)->dispose (object); }