For convenience, gtk_spell_checker_new()
is created as
GInitiallyUnowned
and
gtk_spell_checker_attach()
will sink the floating
reference. gtk_spell_checker_attach()
also connects the
destroy
signal of the passed-in
GObject
to g_object_unref()
the
GtkSpellChecker
, so in the most common use-case, you
need not worry about cleaning it up.
However, if you want to detach and later reattach the
GtkSpellChecker
to a (possibly different)
GtkTextView
, you must get a pointer to it with
gtk_spell_checker_get_from_text_view()
, call
g_object_ref()
on the resulting pointer, call
gtk_spell_checker_detach()
on it, call
gtk_spell_checker_attach()
with the new
GtkTextView
, and finally call
g_object_unref()
to release the reference that you took at
the beginning, like this:
GtkTextView* view = gtk_text_view_new (); GtkSpellChecker* spell = gtk_spell_checker_new (); gtk_spell_checker_set_language (spell, "en_US", NULL); gtk_spell_checker_attach (GTK_TEXT_VIEW (view)); /* ... */ // Detach g_object_ref (spell); gtk_spell_checker_detach (spell); /* ... */ // Reattach gtk_spell_checker_attach (spell, GTK_TEXT_VIEW (view)); g_object_unref (spell);
Alternatively, you can sink the GtkSpellChecker
immediately upon construction with g_object_ref_sink()
,
in which case you will retain the ownership of the
GtkSpellChecker
throughout the lifetime of the program,
and you must remember to call g_object_unref()
when you
don't need it any more, like this:
GtkTextView* view = gtk_text_view_new (); GtkSpellChecker* spell = gtk_spell_checker_new (); g_object_ref_sink (spell); gtk_spell_checker_set_language (spell, "en_US", NULL); gtk_spell_checker_attach (GTK_TEXT_VIEW (view)); /* ... */ // Detach gtk_spell_checker_detach (spell); /* ... */ // Reattach gtk_spell_checker_attach (spell, GTK_TEXT_VIEW (view)); /* ... */ // End of life time g_object_unref (spell);