From 2ed97023a76817a64a4391cc2a789b5d24a0c2ec Mon Sep 17 00:00:00 2001
From: Nico Alt <nicoalt@posteo.org>
Date: Wed, 1 Apr 2020 12:00:00 +0000
Subject: [PATCH] Disconnect from chat entry listener on tab close

Before, more and more listeners got added to the chat entry, resulting
in the bug of message text not being visible after posting.

Fixes https://code.briarproject.org/briar/briar-gtk/issues/25.
---
 briar-gtk/briar_gtk/containers/main_window.py | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/briar-gtk/briar_gtk/containers/main_window.py b/briar-gtk/briar_gtk/containers/main_window.py
index e9a72f2..e167f22 100644
--- a/briar-gtk/briar_gtk/containers/main_window.py
+++ b/briar-gtk/briar_gtk/containers/main_window.py
@@ -96,7 +96,17 @@ class MainWindowContainer(Container):
         private_chat_widget = PrivateChatContainer(contact_name, contact_id)
         self.history_container.add(private_chat_widget)
         self.history_container.show_all()
-        self.chat_entry.connect("activate", private_chat_widget.send_message)
+
+        self._disconnect_chat_entry_signals()
+        self._chat_entry_signal_id = self.chat_entry.connect(
+            "activate", private_chat_widget.send_message
+        )
+
+    def _disconnect_chat_entry_signals(self):
+        if not hasattr(self, "_chat_entry_signal_id"):
+            return
+        self.chat_entry.disconnect(self._chat_entry_signal_id)
+        del self._chat_entry_signal_id
 
     def _no_chat_opened(self):
         return self.chat_placeholder.get_visible()
-- 
GitLab