diff options
-rw-r--r-- | addressbook/ChangeLog | 24 | ||||
-rw-r--r-- | addressbook/gui/component/e-address-popup.c | 15 | ||||
-rw-r--r-- | addressbook/gui/merging/e-card-merging.c | 41 | ||||
-rw-r--r-- | addressbook/gui/widgets/e-minicard.c | 3 |
4 files changed, 63 insertions, 20 deletions
diff --git a/addressbook/ChangeLog b/addressbook/ChangeLog index f23378cf9e..2cda395415 100644 --- a/addressbook/ChangeLog +++ b/addressbook/ChangeLog @@ -1,5 +1,29 @@ 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.) + +2003-04-03 Chris Toshok <toshok@ximian.com> + * gui/component/select-names/Makefile.am (INCLUDES): add EVOLUTION_IMAGESDIR diff --git a/addressbook/gui/component/e-address-popup.c b/addressbook/gui/component/e-address-popup.c index 1cb080bf62..7ccacd1769 100644 --- a/addressbook/gui/component/e-address-popup.c +++ b/addressbook/gui/component/e-address-popup.c @@ -590,7 +590,7 @@ card_picker_init (MiniWizard *wiz, const GList *cards, const gchar *new_name, co { CardPicker *pick; gchar *str; - GtkWidget *w, *swin; + GtkWidget *w; GtkTreeIter iter; pick = g_new (CardPicker, 1); @@ -607,6 +607,7 @@ card_picker_init (MiniWizard *wiz, const GList *cards, const gchar *new_name, co COLUMN_ACTION, _("Select an Action"), gtk_cell_renderer_text_new (), + "text", COLUMN_ACTION, NULL); gtk_tree_selection_set_mode (gtk_tree_view_get_selection (GTK_TREE_VIEW (pick->list)), @@ -652,8 +653,8 @@ card_picker_init (MiniWizard *wiz, const GList *cards, const gchar *new_name, co wiz->ok_cb = card_picker_ok_cb; wiz->cleanup_cb = card_picker_cleanup_cb; - g_object_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (pick->list)), - "changed", card_picker_selection_changed, + g_signal_connect (gtk_tree_view_get_selection (GTK_TREE_VIEW (pick->list)), + "changed", G_CALLBACK (card_picker_selection_changed), wiz); /* Build our widget */ @@ -661,13 +662,7 @@ card_picker_init (MiniWizard *wiz, const GList *cards, const gchar *new_name, co w = gtk_label_new (new_email); gtk_box_pack_start (GTK_BOX (pick->body), w, FALSE, TRUE, 3); - swin = gtk_scrolled_window_new (NULL, NULL); - gtk_scrolled_window_set_policy (GTK_SCROLLED_WINDOW (swin), - GTK_POLICY_AUTOMATIC, GTK_POLICY_AUTOMATIC); - - gtk_scrolled_window_add_with_viewport (GTK_SCROLLED_WINDOW (swin), pick->list); - - gtk_box_pack_start (GTK_BOX (pick->body), swin, TRUE, TRUE, 2); + gtk_box_pack_start (GTK_BOX (pick->body), pick->list, TRUE, TRUE, 2); gtk_widget_show_all (pick->body); 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; diff --git a/addressbook/gui/widgets/e-minicard.c b/addressbook/gui/widgets/e-minicard.c index 15ecbf05f3..bb9234083d 100644 --- a/addressbook/gui/widgets/e-minicard.c +++ b/addressbook/gui/widgets/e-minicard.c @@ -448,7 +448,8 @@ e_minicard_finalize (GObject *object) static void e_minicard_style_set (EMinicard *minicard, GtkStyle *previous_style) { - set_selected (minicard, minicard->selected); + if ( (GTK_OBJECT_FLAGS( minicard ) & GNOME_CANVAS_ITEM_REALIZED) ) + set_selected (minicard, minicard->selected); } static void |