changeset 3158:6032245c927e

quick frontend (app): added "explicit_close" to deleteWidget, and use it on mucRoomLeftHandler: This flag can be used by frontends to decide if the widget must be really closed or not (otherwise, it may be interesting to keep a widget in memory to avoir recreating a new one each time that the chat must be displayed).
author Goffi <goffi@goffi.org>
date Thu, 06 Feb 2020 00:01:36 +0100
parents 8b4354b5c05f
children 30e08d904208
files sat_frontends/quick_frontend/quick_app.py sat_frontends/quick_frontend/quick_widgets.py
diffstat 2 files changed, 12 insertions(+), 6 deletions(-) [+]
line wrap: on
line diff
--- a/sat_frontends/quick_frontend/quick_app.py	Wed Feb 05 23:59:19 2020 +0100
+++ b/sat_frontends/quick_frontend/quick_app.py	Thu Feb 06 00:01:36 2020 +0100
@@ -886,7 +886,8 @@
         room_jid = jid.JID(room_jid_s)
         chat_widget = self.widgets.getWidget(quick_chat.QuickChat, room_jid, profile)
         if chat_widget:
-            self.widgets.deleteWidget(chat_widget)
+            self.widgets.deleteWidget(
+                chat_widget, all_instances=True, explicit_close=True)
         self.contact_lists[profile].removeContact(room_jid)
 
     def mucRoomUserChangedNickHandler(self, room_jid_s, old_nick, new_nick, profile):
--- a/sat_frontends/quick_frontend/quick_widgets.py	Wed Feb 05 23:59:19 2020 +0100
+++ b/sat_frontends/quick_frontend/quick_widgets.py	Thu Feb 06 00:01:36 2020 +0100
@@ -274,11 +274,16 @@
         @param widget_to_delete(QuickWidget): widget which need to deleted
         @param *args: extra arguments to pass to onDelete
         @param *kwargs: extra keywords arguments to pass to onDelete
-            the extra arguments are not use by QuickFrontend, it's is up to
-            the frontend to use them or not
-            "all_instances" can be used as kwarg, if it evaluate to True, all
-            instances of the widget will be deleted (if onDelete is not returning False
-            for any of the instance). This arguments is not sent to onDelete methods.
+            the extra arguments are not used by QuickFrontend, it's is up to
+            the frontend to use them or not.
+            following extra arguments are well known:
+                - "all_instances" can be used as kwarg, if it evaluate to True,
+                  all instances of the widget will be deleted (if onDelete is
+                  not returning False for any of the instance). This arguments
+                  is not sent to onDelete methods.
+                - "explicit_close" is used when the deletion is requested by
+                  the user or a leave signal, "all_instances" is usually set at
+                  the same time.
         """
         # TODO: all_instances must be independante kwargs, this is not possible with Python 2
         #       but will be with Python 3