Daniel Brötzmann pushed to branch master at gajim / gajim


Commits:
8e969eaa by wurstsalat at 2025-08-23T11:57:32+02:00
fix: File transfers: Fix cancelling file transfers

Fixes #12442

- - - - -


3 changed files:

- gajim/gtk/conversation/rows/base.py
- gajim/gtk/conversation/rows/file_transfer.py
- gajim/gtk/conversation/view.py


Changes:

=====================================
gajim/gtk/conversation/rows/base.py
=====================================
@@ -4,6 +4,7 @@
 
 from __future__ import annotations
 
+from gi.repository import GObject
 from gi.repository import Gtk
 from gi.repository import Pango
 
@@ -15,6 +16,11 @@
 
 
 class BaseRow(Gtk.ListBoxRow, SignalManager):
+
+    __gsignals__ = {
+        "remove": (GObject.SignalFlags.RUN_LAST, None, ()),
+    }
+
     def __init__(self, account: str, widget: str | None = None) -> None:
         Gtk.ListBoxRow.__init__(self, selectable=False)
         SignalManager.__init__(self)


=====================================
gajim/gtk/conversation/rows/file_transfer.py
=====================================
@@ -2,8 +2,6 @@
 #
 # SPDX-License-Identifier: GPL-3.0-only
 
-from typing import cast
-
 import time
 
 from gi.repository import GLib
@@ -77,7 +75,7 @@ def _on_cancel_clicked(self, _button: Gtk.Button) -> None:
         if self._transfer.state.is_active:
             self._transfer.cancel()
 
-        cast(Gtk.ListBox, self.get_parent()).remove(self)
+        self.emit("remove")
 
     def _on_transfer_state_change(
         self, transfer: HTTPFileTransfer, _signal_name: str, state: FTState
@@ -87,10 +85,11 @@ def _on_transfer_state_change(
 
         if state.is_error:
             InformationAlertDialog(_("Error"), transfer.error_text)
-            cast(Gtk.ListBox, self.get_parent()).remove(self)
+            self.emit("remove")
+            return
 
         if state.is_finished or state.is_cancelled:
-            cast(Gtk.ListBox, self.get_parent()).remove(self)
+            self.emit("remove")
             return
 
         description = transfer.get_state_description()


=====================================
gajim/gtk/conversation/view.py
=====================================
@@ -466,6 +466,7 @@ def add_info_message(self, text: str, timestamp: datetime | 
None = None) -> None
 
     def add_file_transfer(self, transfer: HTTPFileTransfer) -> None:
         transfer_row = FileTransferRow(self.contact.account, transfer)
+        transfer_row.connect("remove", self._on_remove_row)
         self._insert_message(transfer_row)
 
     def add_jingle_file_transfer(
@@ -603,6 +604,9 @@ def _update_descendants(self, message: MessageRow) -> None:
             row.set_merged(merge)
             return
 
+    def _on_remove_row(self, row: BaseRow) -> None:
+        self._list_box.remove(row)
+
     def _on_message_row_state_flags_changed(
         self, row: MessageRow, previous_flags: Gtk.StateFlags
     ) -> None:



View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/8e969eaa10b6cf6f07095613213080f513d88cc8

-- 
View it on GitLab: 
https://dev.gajim.org/gajim/gajim/-/commit/8e969eaa10b6cf6f07095613213080f513d88cc8
You're receiving this email because of your account on dev.gajim.org.


_______________________________________________
Commits mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to