diff options
author | Cosimo Cecchi <cosimoc@gnome.org> | 2012-02-01 13:19:52 -0500 |
---|---|---|
committer | Cosimo Cecchi <cosimoc@gnome.org> | 2012-02-01 13:21:43 -0500 |
commit | 2ae2c443d0413d129893573a44afadcd182ce243 (patch) | |
tree | 431c6ae64912133ba0107618a8b0a7d0a9aefa6f /gtk/gtkappchooserdialog.c | |
parent | 623b5192cc5d466cee5ed5e9bbb7f343df7dbba8 (diff) | |
download | gtk+-2ae2c443d0413d129893573a44afadcd182ce243.tar.gz |
app-chooser-dialog: cancel the PK operation when the dialog is dismissed
This doesn't really seem to have any effect; probably PK doesn't listen
for changes on the passed-in cancellable, but it's correct.
Related to: https://bugzilla.gnome.org/show_bug.cgi?id=649121
Diffstat (limited to 'gtk/gtkappchooserdialog.c')
-rw-r--r-- | gtk/gtkappchooserdialog.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/gtk/gtkappchooserdialog.c b/gtk/gtkappchooserdialog.c index c0ee59ceaa..2b8c815f90 100644 --- a/gtk/gtkappchooserdialog.c +++ b/gtk/gtkappchooserdialog.c @@ -146,6 +146,7 @@ search_for_mimetype_ready_cb (GObject *source, } out: + g_clear_object (&self->priv->online_cancellable); g_clear_error (&error); g_object_unref (self); @@ -297,6 +298,16 @@ add_or_find_application (GtkAppChooserDialog *self) } static void +cancel_and_clear_cancellable (GtkAppChooserDialog *self) +{ + if (self->priv->online_cancellable != NULL) + { + g_cancellable_cancel (self->priv->online_cancellable); + g_clear_object (&self->priv->online_cancellable); + } +} + +static void gtk_app_chooser_dialog_response (GtkDialog *dialog, gint response_id, gpointer user_data) @@ -310,6 +321,7 @@ gtk_app_chooser_dialog_response (GtkDialog *dialog, break; case GTK_RESPONSE_CANCEL: case GTK_RESPONSE_DELETE_EVENT: + cancel_and_clear_cancellable (self); self->priv->dismissed = TRUE; default : break; @@ -631,14 +643,9 @@ gtk_app_chooser_dialog_dispose (GObject *object) GtkAppChooserDialog *self = GTK_APP_CHOOSER_DIALOG (object); g_clear_object (&self->priv->gfile); + cancel_and_clear_cancellable (self); g_clear_object (&self->priv->online); - if (self->priv->online_cancellable != NULL) - { - g_cancellable_cancel (self->priv->online_cancellable); - g_clear_object (&self->priv->online_cancellable); - } - G_OBJECT_CLASS (gtk_app_chooser_dialog_parent_class)->dispose (object); } |