diff options
author | Chris Toshok <toshok@ximian.com> | 2003-04-04 06:34:55 +0800 |
---|---|---|
committer | Chris Toshok <toshok@src.gnome.org> | 2003-04-04 06:34:55 +0800 |
commit | 660514490cade113a6f4627ef138c38cddea8d8e (patch) | |
tree | a42cc11b385e863d521db9d7033dcaa18697951e /addressbook/gui/merging | |
parent | 0b48a811d04d7fb29e60bb1e3168f9479992d3b7 (diff) | |
download | gsoc2013-evolution-660514490cade113a6f4627ef138c38cddea8d8e.tar.gz gsoc2013-evolution-660514490cade113a6f4627ef138c38cddea8d8e.tar.zst gsoc2013-evolution-660514490cade113a6f4627ef138c38cddea8d8e.zip |
[ fixes bug #40715 ] add this callback, to unref the book/free the closure
2003-04-03 Chris Toshok <toshok@ximian.com>
[ fixes bug #40715 ]
* gui/merging/e-card-merging.c (final_id_cb): add this callback,
to unref the book/free the closure after calling the user's
callback.
(final_cb): same.
(doit): use final{_id}_cb
(cancelit): same.
(response): don't free the lookup struct here.
(match_query_callback): same.
(e_card_merging_book_add_card): ref the book.
(e_card_merging_book_commit_card): same.
* gui/component/e-address-popup.c (card_picker_init): make sure to
set the "text" attribute on the cell renderer so the text actually
shows up. also, g_object_connect -> g_signal_connect *sigh*.
Lastly, get rid of the scrolled window and just make the window
size to show the text.
* gui/widgets/e-minicard.c (e_minicard_style_set): only call
set_selected if we're realized (we create all the canvas objects
that set_selected manipulates in our realize method.)
svn path=/trunk/; revision=20662
Diffstat (limited to 'addressbook/gui/merging')
-rw-r--r-- | addressbook/gui/merging/e-card-merging.c | 41 |
1 files changed, 32 insertions, 9 deletions
diff --git a/addressbook/gui/merging/e-card-merging.c b/addressbook/gui/merging/e-card-merging.c index 1b3da3e063..3de0a02a6d 100644 --- a/addressbook/gui/merging/e-card-merging.c +++ b/addressbook/gui/merging/e-card-merging.c @@ -31,12 +31,38 @@ typedef struct { } ECardMergingLookup; static void +final_id_cb (EBook *book, EBookStatus status, const char *id, gpointer closure) +{ + ECardMergingLookup *lookup = closure; + + if (lookup->id_cb) + lookup->id_cb (lookup->book, status, id, lookup->closure); + + g_object_unref (lookup->book); + + g_free (lookup); +} + +static void +final_cb (EBook *book, EBookStatus status, gpointer closure) +{ + ECardMergingLookup *lookup = closure; + + if (lookup->cb) + lookup->cb (lookup->book, status, lookup->closure); + + g_object_unref (lookup->book); + + g_free (lookup); +} + +static void doit (ECardMergingLookup *lookup) { if (lookup->op == E_CARD_MERGING_ADD) - e_book_add_card (lookup->book, lookup->card, lookup->id_cb, lookup->closure); + e_book_add_card (lookup->book, lookup->card, final_id_cb, lookup); else if (lookup->op == E_CARD_MERGING_COMMIT) - e_book_commit_card (lookup->book, lookup->card, lookup->cb, lookup->closure); + e_book_commit_card (lookup->book, lookup->card, final_cb, lookup); } static void @@ -44,10 +70,10 @@ cancelit (ECardMergingLookup *lookup) { if (lookup->op == E_CARD_MERGING_ADD) { if (lookup->id_cb) - lookup->id_cb (lookup->book, E_BOOK_STATUS_CANCELLED, NULL, lookup->closure); + final_id_cb (lookup->book, E_BOOK_STATUS_CANCELLED, NULL, lookup); } else if (lookup->op == E_CARD_MERGING_COMMIT) { if (lookup->cb) - lookup->cb (lookup->book, E_BOOK_STATUS_CANCELLED, lookup->closure); + final_cb (lookup->book, E_BOOK_STATUS_CANCELLED, lookup); } } @@ -64,7 +90,6 @@ response (GtkWidget *dialog, int response, ECardMergingLookup *lookup) cancelit (lookup); break; } - g_free (lookup); } static void @@ -74,7 +99,6 @@ match_query_callback (ECard *card, ECard *match, ECardMatchType type, gpointer c if ((gint) type <= (gint) E_CARD_MATCH_VAGUE) { doit (lookup); - g_free (lookup); } else { GladeXML *ui; @@ -86,7 +110,6 @@ match_query_callback (ECard *card, ECard *match, ECardMatchType type, gpointer c ui = glade_xml_new (EVOLUTION_GLADEDIR "/e-card-merging-book-commit-duplicate-detected.glade", NULL, NULL); else { doit (lookup); - g_free (lookup); return; } @@ -120,7 +143,7 @@ e_card_merging_book_add_card (EBook *book, lookup = g_new (ECardMergingLookup, 1); lookup->op = E_CARD_MERGING_ADD; - lookup->book = book; + lookup->book = g_object_ref (book); lookup->card = card; lookup->id_cb = cb; lookup->closure = closure; @@ -142,7 +165,7 @@ e_card_merging_book_commit_card (EBook *book, lookup = g_new (ECardMergingLookup, 1); lookup->op = E_CARD_MERGING_COMMIT; - lookup->book = book; + lookup->book = g_object_ref (book); lookup->card = card; lookup->cb = cb; lookup->closure = closure; |