finch/gntxfer.c

changeset 40256
39eb6d1b71ff
parent 40255
42922708e18e
child 40257
e6692de3b4de
--- a/finch/gntxfer.c	Sat Dec 21 20:44:34 2019 -0500
+++ b/finch/gntxfer.c	Sat Dec 21 21:09:12 2019 -0500
@@ -497,6 +497,17 @@
 }
 
 static void
+finch_xfer_status_notify(PurpleXfer *xfer, G_GNUC_UNUSED GParamSpec *pspec,
+                         G_GNUC_UNUSED gpointer data)
+{
+	if (xfer_dialog) {
+		if (purple_xfer_is_cancelled(xfer)) {
+			finch_xfer_dialog_cancel_xfer(xfer);
+		}
+	}
+}
+
+static void
 finch_xfer_add_xfer(PurpleXfer *xfer)
 {
 	if (!xfer_dialog)
@@ -507,20 +518,8 @@
 
 	g_signal_connect(xfer, "notify::progress",
 	                 G_CALLBACK(finch_xfer_progress_notify), NULL);
-}
-
-static void
-finch_xfer_cancel_local(PurpleXfer *xfer)
-{
-	if (xfer_dialog)
-		finch_xfer_dialog_cancel_xfer(xfer);
-}
-
-static void
-finch_xfer_cancel_remote(PurpleXfer *xfer)
-{
-	if (xfer_dialog)
-		finch_xfer_dialog_cancel_xfer(xfer);
+	g_signal_connect(xfer, "notify::status",
+	                 G_CALLBACK(finch_xfer_status_notify), NULL);
 }
 
 static PurpleXferUiOps ops =
@@ -528,8 +527,6 @@
 	finch_xfer_new_xfer,
 	finch_xfer_destroy,
 	finch_xfer_add_xfer,
-	finch_xfer_cancel_local,
-	finch_xfer_cancel_remote,
 	NULL  /* add_thumbnail */
 };
 

mercurial