Mercurial > pidgin.yaz
changeset 12642:022bf81f4087
[gaim-migrate @ 14978]
--enable-fatal-asserts lead me to a small bug here. I discovered that I could let the GObject system manage the freeing callback, and saved a bunch of code.
committer: Tailor Script <tailor@pidgin.im>
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Fri, 23 Dec 2005 12:47:02 +0000 |
parents | e0e8b0735c5a |
children | 29c034547358 |
files | plugins/spellchk.c |
diffstat | 1 files changed, 7 insertions(+), 22 deletions(-) [+] |
line wrap: on
line diff
--- a/plugins/spellchk.c Fri Dec 23 12:02:01 2005 +0000 +++ b/plugins/spellchk.c Fri Dec 23 12:47:02 2005 +0000 @@ -282,10 +282,6 @@ buffer = gtk_text_view_get_buffer(spell->view); - g_signal_handlers_disconnect_matched(spell->view, - G_SIGNAL_MATCH_DATA, - 0, 0, NULL, NULL, - spell); g_signal_handlers_disconnect_matched(buffer, G_SIGNAL_MATCH_DATA, 0, 0, NULL, NULL, @@ -548,14 +544,15 @@ } static void -spellchk_new_attach(GaimConversation *c) { +spellchk_new_attach(GaimConversation *conv) +{ spellchk *spell; GtkTextBuffer *buffer; GtkTextIter start, end; GaimGtkConversation *gtkconv; GtkTextView *view; - gtkconv = GAIM_GTK_CONVERSATION(c); + gtkconv = GAIM_GTK_CONVERSATION(conv); view = GTK_TEXT_VIEW(gtkconv->entry); @@ -567,10 +564,8 @@ spell = g_new0(spellchk, 1); spell->view = view; - g_object_set_data(G_OBJECT(view), SPELLCHK_OBJECT_KEY, spell); - - g_signal_connect_swapped(G_OBJECT(view), "destroy", - G_CALLBACK(spellchk_free), spell); + g_object_set_data_full(G_OBJECT(view), SPELLCHK_OBJECT_KEY, spell, + (GDestroyNotify)spellchk_free); buffer = gtk_text_view_get_buffer(view); @@ -597,17 +592,6 @@ return; } -static void -spellchk_detach(GaimConversation *conv) -{ - GaimGtkConversation *gtkconv; - spellchk *spell; - - gtkconv = GAIM_GTK_CONVERSATION(conv); - spell = g_object_steal_data(G_OBJECT(gtkconv->entry), SPELLCHK_OBJECT_KEY); - spellchk_free(spell); -} - static int buf_get_line(char *ibuf, char **buf, int *position, int len) { int pos = *position; @@ -2030,7 +2014,8 @@ /* Detach from existing conversations */ for (convs = gaim_get_conversations(); convs != NULL; convs = convs->next) { - spellchk_detach((GaimConversation *)convs->data); + GaimGtkConversation *gtkconv = GAIM_GTK_CONVERSATION((GaimConversation *)convs->data); + g_object_set_data(G_OBJECT(gtkconv->entry), SPELLCHK_OBJECT_KEY, NULL); } return TRUE;