Use g_object_weak_ref rather than connecting to destroy.
2002-11-14 Jeffrey Stedfast <fejj@ximian.com> * mail-accounts.c (account_edit_clicked): Use g_object_weak_ref rather than connecting to destroy. (account_add_clicked): Same. * mail-callbacks.c (addrbook_sender): Make this use g_object_weak_notify also. (subscribe_dialog_destroy): Add NULL guards here since I think we really do want to connect to the "destroy" signal in the function that connects us to that signal. * mail-config-factory.c (config_control_factory_cb): Same. * mail-display.c (save_part): Here too. (make_popup_window): And here. * mail-send-recv.c (build_dialogue): Same here. * mail-summary.c (create_summary_view): Use g_object_weak_notify instead of connecting to the destroy signal. svn path=/trunk/; revision=18764
This commit is contained in:

committed by
Jeffrey Stedfast

parent
334b42bda1
commit
4ff0a43cd4
@ -1,3 +1,25 @@
|
||||
2002-11-14 Jeffrey Stedfast <fejj@ximian.com>
|
||||
|
||||
* mail-accounts.c (account_edit_clicked): Use g_object_weak_ref
|
||||
rather than connecting to destroy.
|
||||
(account_add_clicked): Same.
|
||||
|
||||
* mail-callbacks.c (addrbook_sender): Make this use
|
||||
g_object_weak_notify also.
|
||||
(subscribe_dialog_destroy): Add NULL guards here since I think we
|
||||
really do want to connect to the "destroy" signal in the function
|
||||
that connects us to that signal.
|
||||
|
||||
* mail-config-factory.c (config_control_factory_cb): Same.
|
||||
|
||||
* mail-display.c (save_part): Here too.
|
||||
(make_popup_window): And here.
|
||||
|
||||
* mail-send-recv.c (build_dialogue): Same here.
|
||||
|
||||
* mail-summary.c (create_summary_view): Use g_object_weak_notify
|
||||
instead of connecting to the destroy signal.
|
||||
|
||||
2002-11-14 Ettore Perazzoli <ettore@ximian.com>
|
||||
|
||||
* component-factory.c (owner_set_cb): Want a (GWeakNotify) cast
|
||||
|
@ -121,20 +121,18 @@ mail_accounts_tab_finalise (GObject *obj)
|
||||
}
|
||||
|
||||
static void
|
||||
account_add_finished (GtkWidget *widget, gpointer user_data)
|
||||
account_add_finished (MailAccountsTab *prefs, GObject *deadbeef)
|
||||
{
|
||||
/* Either Cancel or Finished was clicked in the druid so reload the accounts */
|
||||
MailAccountsTab *prefs = user_data;
|
||||
|
||||
prefs->druid = NULL;
|
||||
|
||||
|
||||
#warning "GTK_OBJECT_DESTROYED"
|
||||
#if 0
|
||||
if (!GTK_OBJECT_DESTROYED (prefs))
|
||||
#endif
|
||||
mail_accounts_load (prefs);
|
||||
|
||||
g_object_unref ((GtkObject *) prefs);
|
||||
g_object_unref (prefs);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -144,29 +142,28 @@ account_add_clicked (GtkButton *button, gpointer user_data)
|
||||
|
||||
if (prefs->druid == NULL) {
|
||||
prefs->druid = (GtkWidget *) mail_config_druid_new (prefs->shell);
|
||||
g_signal_connect((prefs->druid), "destroy",
|
||||
G_CALLBACK (account_add_finished), prefs);
|
||||
g_object_weak_ref ((GObject *) prefs->druid,
|
||||
(GWeakNotify) account_add_finished, prefs);
|
||||
|
||||
gtk_widget_show (prefs->druid);
|
||||
g_object_ref ((GtkObject *) prefs);
|
||||
g_object_ref (prefs);
|
||||
} else {
|
||||
gdk_window_raise (prefs->druid->window);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
account_edit_finished (GtkWidget *widget, gpointer user_data)
|
||||
account_edit_finished (MailAccountsTab *prefs, GObject *deadbeef)
|
||||
{
|
||||
MailAccountsTab *prefs = user_data;
|
||||
|
||||
prefs->editor = NULL;
|
||||
|
||||
#warning "GTK_OBJECT_DESTROYED"
|
||||
#if 0
|
||||
if (!GTK_OBJECT_DESTROYED (prefs))
|
||||
#endif
|
||||
mail_accounts_load (prefs);
|
||||
|
||||
g_object_unref(prefs);
|
||||
g_object_unref (prefs);
|
||||
}
|
||||
|
||||
static void
|
||||
@ -193,11 +190,9 @@ account_edit_clicked (GtkButton *button, gpointer user_data)
|
||||
account = gtk_clist_get_row_data (prefs->table, row);
|
||||
#endif
|
||||
prefs->editor = (GtkWidget *) mail_account_editor_new (account, GTK_WINDOW (window), prefs);
|
||||
g_signal_connect((prefs->editor), "destroy",
|
||||
G_CALLBACK (account_edit_finished),
|
||||
prefs);
|
||||
g_object_weak_notify ((GObject *) prefs->editor, (GWeakNotify) account_edit_finished, prefs);
|
||||
gtk_widget_show (prefs->editor);
|
||||
g_object_ref ((GtkObject *) prefs);
|
||||
g_object_ref (prefs);
|
||||
}
|
||||
} else {
|
||||
gdk_window_raise (prefs->editor->window);
|
||||
|
@ -1806,10 +1806,8 @@ addrbook_sender (GtkWidget *widget, gpointer user_data)
|
||||
popup_listener_cb, NULL, NULL, win);
|
||||
|
||||
socket = find_socket (GTK_CONTAINER (control));
|
||||
gtk_signal_connect_object (GTK_OBJECT (socket),
|
||||
"destroy",
|
||||
G_CALLBACK (gtk_widget_destroy),
|
||||
GTK_OBJECT (win));
|
||||
|
||||
g_object_weak_ref ((GObject *) socket, (GWeakNotify) gtk_widget_destroy, win);
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (win), control);
|
||||
gtk_widget_show_all (win);
|
||||
@ -3225,8 +3223,10 @@ static GtkObject *subscribe_dialog = NULL;
|
||||
static void
|
||||
subscribe_dialog_destroy (GtkWidget *widget, gpointer user_data)
|
||||
{
|
||||
g_object_unref (subscribe_dialog);
|
||||
subscribe_dialog = NULL;
|
||||
if (subscribe_dialog) {
|
||||
g_object_unref (subscribe_dialog);
|
||||
subscribe_dialog = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@ -3234,8 +3234,8 @@ manage_subscriptions (BonoboUIComponent *uih, void *user_data, const char *path)
|
||||
{
|
||||
if (!subscribe_dialog) {
|
||||
subscribe_dialog = subscribe_dialog_new ();
|
||||
g_signal_connect(SUBSCRIBE_DIALOG (subscribe_dialog)->app, "destroy",
|
||||
G_CALLBACK(subscribe_dialog_destroy), NULL);
|
||||
g_signal_connect (SUBSCRIBE_DIALOG (subscribe_dialog)->app, "destroy",
|
||||
G_CALLBACK (subscribe_dialog_destroy), NULL);
|
||||
|
||||
subscribe_dialog_show (subscribe_dialog);
|
||||
} else {
|
||||
|
@ -48,16 +48,14 @@ struct _config_data {
|
||||
};
|
||||
|
||||
static void
|
||||
config_control_destroy_callback (EvolutionConfigControl *config_control, void *user_data)
|
||||
config_control_destroy_cb (struct _config_data *data, GObject *deadbeef)
|
||||
{
|
||||
struct _config_data *data = user_data;
|
||||
|
||||
g_object_unref (data->prefs);
|
||||
g_free (data);
|
||||
}
|
||||
|
||||
static void
|
||||
config_control_apply_callback (EvolutionConfigControl *config_control, void *user_data)
|
||||
config_control_apply_cb (EvolutionConfigControl *config_control, void *user_data)
|
||||
{
|
||||
struct _config_data *data = user_data;
|
||||
|
||||
@ -116,8 +114,8 @@ config_control_factory_cb (BonoboGenericFactory *factory, const char *component_
|
||||
g_assert_not_reached ();
|
||||
}
|
||||
|
||||
g_signal_connect(control, "apply", G_CALLBACK (config_control_apply_callback), data);
|
||||
g_signal_connect(control, "destroy", G_CALLBACK (config_control_destroy_callback), data);
|
||||
g_signal_connect (control, "apply", G_CALLBACK (config_control_apply_cb), data);
|
||||
g_object_weak_ref (control, (GWeakNotify) config_control_destroy_cb, data);
|
||||
|
||||
return BONOBO_OBJECT (control);
|
||||
}
|
||||
|
@ -252,7 +252,7 @@ save_data_cb (GtkWidget *widget, gpointer user_data)
|
||||
}
|
||||
|
||||
static void
|
||||
save_destroy_cb (GtkWidget *widget, CamelMimePart *part)
|
||||
save_destroy_cb (CamelMimePart *part, GObject *deadbeef)
|
||||
{
|
||||
camel_object_unref (part);
|
||||
}
|
||||
@ -330,9 +330,8 @@ save_part (CamelMimePart *part)
|
||||
G_CALLBACK (gtk_widget_destroy),
|
||||
GTK_OBJECT (file_select));
|
||||
|
||||
g_signal_connect(file_select, "destroy",
|
||||
G_CALLBACK (save_destroy_cb), part);
|
||||
|
||||
g_object_weak_ref ((GObject *) file_select, (GWeakNotify) save_destroy_cb, part);
|
||||
|
||||
gtk_widget_show (GTK_WIDGET (file_select));
|
||||
}
|
||||
|
||||
@ -1114,13 +1113,13 @@ do_signature (GtkHTML *html, GtkHTMLEmbedded *eb,
|
||||
gtk_widget_set_size_request (pbl->pixmap, 24, 24);
|
||||
pbl->eb = eb;
|
||||
pbl->destroy_id = g_signal_connect(eb, "destroy", G_CALLBACK(embeddable_destroy_cb), pbl);
|
||||
|
||||
|
||||
g_idle_add_full (G_PRIORITY_LOW, (GSourceFunc)pixbuf_gen_idle, pbl, NULL);
|
||||
|
||||
|
||||
button = gtk_button_new ();
|
||||
GTK_WIDGET_UNSET_FLAGS (button, GTK_CAN_FOCUS);
|
||||
g_object_set_data(G_OBJECT(button), "MailDisplay", md);
|
||||
g_signal_connect(button, "clicked", G_CALLBACK (button_press), part);
|
||||
g_object_set_data ((GObject *) button, "MailDisplay", md);
|
||||
g_signal_connect (button, "clicked", G_CALLBACK (button_press), part);
|
||||
gtk_container_add (GTK_CONTAINER (button), pbl->pixmap);
|
||||
gtk_widget_show_all (button);
|
||||
gtk_container_add (GTK_CONTAINER (eb), button);
|
||||
@ -2144,12 +2143,10 @@ popup_info_free (PopupInfo *pop)
|
||||
}
|
||||
|
||||
static void
|
||||
popup_window_destroy_cb (GtkWidget *w, gpointer user_data)
|
||||
popup_window_destroy_cb (PopupInfo *pop, GObject *deadbeef)
|
||||
{
|
||||
PopupInfo *pop = (PopupInfo *) user_data;
|
||||
|
||||
the_popup = NULL;
|
||||
|
||||
|
||||
popup_info_free (pop);
|
||||
}
|
||||
|
||||
@ -2228,30 +2225,31 @@ make_popup_window (GtkWidget *w)
|
||||
{
|
||||
PopupInfo *pop = g_new0 (PopupInfo, 1);
|
||||
GtkWidget *fr;
|
||||
|
||||
|
||||
/* Only allow for one popup at a time. Ugly. */
|
||||
if (the_popup)
|
||||
gtk_widget_destroy (the_popup);
|
||||
|
||||
|
||||
pop->w = w;
|
||||
the_popup = pop->win = gtk_window_new (GTK_WINDOW_POPUP);
|
||||
fr = gtk_frame_new (NULL);
|
||||
|
||||
|
||||
gtk_container_add (GTK_CONTAINER (pop->win), fr);
|
||||
gtk_container_add (GTK_CONTAINER (fr), w);
|
||||
|
||||
|
||||
gtk_window_set_policy (GTK_WINDOW (pop->win), FALSE, FALSE, FALSE);
|
||||
|
||||
g_signal_connect(pop->win, "destroy", G_CALLBACK (popup_window_destroy_cb), pop);
|
||||
g_signal_connect(pop->win, "enter_notify_event", G_CALLBACK (popup_enter_cb), pop);
|
||||
g_signal_connect(pop->win, "leave_notify_event", G_CALLBACK (popup_leave_cb), pop);
|
||||
|
||||
g_signal_connect (pop->win, "enter_notify_event", G_CALLBACK (popup_enter_cb), pop);
|
||||
g_signal_connect (pop->win, "leave_notify_event", G_CALLBACK (popup_leave_cb), pop);
|
||||
g_signal_connect_after (pop->win, "realize", G_CALLBACK (popup_realize_cb), pop);
|
||||
g_signal_connect(pop->win, "size_allocate", G_CALLBACK (popup_size_allocate_cb), pop);
|
||||
|
||||
g_signal_connect (pop->win, "size_allocate", G_CALLBACK (popup_size_allocate_cb), pop);
|
||||
|
||||
g_object_weak_ref ((GObject *) pop->win, (GWeakNotify) popup_window_destroy_cb, pop);
|
||||
|
||||
gtk_widget_show (w);
|
||||
gtk_widget_show (fr);
|
||||
gtk_widget_show (pop->win);
|
||||
|
||||
|
||||
return pop;
|
||||
}
|
||||
|
||||
|
@ -171,7 +171,7 @@ toggled_fwd_cb (GtkToggleButton *b, MailSearch *ms)
|
||||
#endif
|
||||
|
||||
static void
|
||||
dialog_destroy_cb (GtkWidget *w, MailSearch *ms)
|
||||
dialog_destroy_cb (GtkWidget *w, MailSearch *ms)
|
||||
{
|
||||
ESearchingTokenizer *st = mail_search_tokenizer (ms);
|
||||
|
||||
|
@ -206,7 +206,7 @@ static void hide_send_info(void *key, struct _send_info *info, void *data)
|
||||
}
|
||||
|
||||
static void
|
||||
dialog_destroy (struct _send_data *data, GtkProgressBar *bar)
|
||||
dialog_destroy_cb (struct _send_data *data, GObject *deadbeef)
|
||||
{
|
||||
g_hash_table_foreach (data->active, (GHFunc) hide_send_info, NULL);
|
||||
data->gd = NULL;
|
||||
@ -432,8 +432,9 @@ build_dialogue (GSList *sources, CamelFolder *outbox, const char *destination)
|
||||
|
||||
gtk_widget_show (GTK_WIDGET (gd));
|
||||
|
||||
g_signal_connect(gd, "response", G_CALLBACK(dialogue_response), data);
|
||||
g_signal_connect(gd, "destroy", G_CALLBACK(dialog_destroy), data);
|
||||
g_signal_connect (gd, "response", G_CALLBACK (dialogue_response), data);
|
||||
|
||||
g_object_weak_notify ((GObject *) gd, (GWeakNotify) dialog_destroy_cb, data);
|
||||
|
||||
data->infos = list;
|
||||
data->gd = gd;
|
||||
|
@ -274,7 +274,7 @@ request_password(struct _pass_msg *m)
|
||||
title = e_utf8_to_gtk_string (GTK_WIDGET (check_label), m->prompt);
|
||||
password_dialogue = (GnomeDialog *)dialogue = gnome_request_dialog (m->secret, title, NULL, 0, pass_got, m, NULL);
|
||||
g_free(title);
|
||||
password_destroy_id = g_signal_connect((GtkObject *)dialogue, "destroy", request_password_deleted, m);
|
||||
password_destroy_id = g_signal_connect (dialogue, "destroy", request_password_deleted, m);
|
||||
|
||||
check = gtk_check_button_new ();
|
||||
gtk_misc_set_alignment (GTK_MISC (check_label), 0.0, 0.5);
|
||||
|
@ -162,8 +162,7 @@ summary_free (MailSummary *summary)
|
||||
}
|
||||
|
||||
static void
|
||||
view_destroy_cb (GtkObject *object,
|
||||
MailSummary *summary)
|
||||
view_destroy_cb (MailSummary *summary, GObject *deadbeef)
|
||||
{
|
||||
summary_free (summary);
|
||||
g_free (summary);
|
||||
@ -478,8 +477,8 @@ create_summary_view (ExecutiveSummaryComponentFactory *_factory,
|
||||
view = executive_summary_html_view_new_full (event_source);
|
||||
bonobo_object_add_interface (component, view);
|
||||
summary->view = view;
|
||||
gtk_signal_connect (GTK_OBJECT (view), "destroy",
|
||||
GTK_SIGNAL_FUNC (view_destroy_cb), summary);
|
||||
|
||||
g_object_weak_notify ((GObject *) view, (GWeakNotify) view_destroy_cb, summary);
|
||||
|
||||
bag = bonobo_property_bag_new_full (get_property, NULL,
|
||||
event_source, summary);
|
||||
|
Reference in New Issue
Block a user