[gthumb/gthumb-2-12] progress_dialog: make the code more solid adding some extra-check
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gthumb/gthumb-2-12] progress_dialog: make the code more solid adding some extra-check
- Date: Sun, 23 Jan 2011 10:30:01 +0000 (UTC)
commit 0286f5182f88ae717c8e3e7705cc531f4b92a5f9
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sun Jan 23 09:36:35 2011 +0100
progress_dialog: make the code more solid adding some extra-check
gthumb/gth-progress-dialog.c | 21 +++++++++++++++------
1 files changed, 15 insertions(+), 6 deletions(-)
---
diff --git a/gthumb/gth-progress-dialog.c b/gthumb/gth-progress-dialog.c
index ecb579b..789872f 100644
--- a/gthumb/gth-progress-dialog.c
+++ b/gthumb/gth-progress-dialog.c
@@ -68,10 +68,12 @@ gth_task_progress_finalize (GObject *base)
if (self->pulse_event != 0)
g_source_remove (self->pulse_event);
- g_signal_handler_disconnect (self->task, self->task_progress);
- g_signal_handler_disconnect (self->task, self->task_completed);
- gth_task_cancel (self->task);
- g_object_unref (self->task);
+ if (self->task_progress != 0)
+ g_signal_handler_disconnect (self->task, self->task_progress);
+ if (self->task_completed != 0)
+ g_signal_handler_disconnect (self->task, self->task_completed);
+ if (self->task != NULL)
+ g_object_unref (self->task);
G_OBJECT_CLASS (gth_task_progress_parent_class)->finalize (base);
}
@@ -101,6 +103,8 @@ gth_task_progress_init (GthTaskProgress *self)
GtkWidget *image;
self->task = NULL;
+ self->task_progress = 0;
+ self->task_completed = 0;
self->pulse_event = 0;
vbox = gtk_vbox_new (FALSE, 3);
@@ -221,12 +225,16 @@ task_completed_cb (GthTask *task,
gpointer user_data)
{
GthTaskProgress *self = user_data;
+ GtkWidget *toplevel;
if (self->pulse_event != 0) {
g_source_remove (self->pulse_event);
self->pulse_event = 0;
}
- gth_progress_dialog_remove_child (GTH_PROGRESS_DIALOG (gtk_widget_get_toplevel (GTK_WIDGET (self))), GTK_WIDGET (self));
+
+ toplevel = gtk_widget_get_toplevel (GTK_WIDGET (self));
+ if (gtk_widget_is_toplevel (toplevel))
+ gth_progress_dialog_remove_child (GTH_PROGRESS_DIALOG (toplevel), GTK_WIDGET (self));
}
@@ -431,7 +439,8 @@ static void
gth_progress_dialog_remove_child (GthProgressDialog *self,
GtkWidget *child)
{
- gtk_container_remove (GTK_CONTAINER (self->priv->task_box), child);
+ gtk_widget_destroy (child);
+
if (_gtk_container_get_n_children (GTK_CONTAINER (self->priv->task_box)) == 0) {
if (self->priv->show_event != 0) {
g_source_remove (self->priv->show_event);
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]