summaryrefslogtreecommitdiff
path: root/gtk/gtkappchooserdialog.c
diff options
context:
space:
mode:
authorCosimo Cecchi <cosimoc@gnome.org>2012-02-01 13:19:52 -0500
committerCosimo Cecchi <cosimoc@gnome.org>2012-02-01 13:21:43 -0500
commit2ae2c443d0413d129893573a44afadcd182ce243 (patch)
tree431c6ae64912133ba0107618a8b0a7d0a9aefa6f /gtk/gtkappchooserdialog.c
parent623b5192cc5d466cee5ed5e9bbb7f343df7dbba8 (diff)
downloadgtk+-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.c19
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);
}