From 9a9adb36cbdecd79363bfe694ff98c2f94df9277 Mon Sep 17 00:00:00 2001 From: Goffi Date: Thu, 6 Feb 2020 00:01:36 +0100 Subject: [PATCH] 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). --- sat_frontends/quick_frontend/quick_app.py | 3 ++- sat_frontends/quick_frontend/quick_widgets.py | 15 ++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/sat_frontends/quick_frontend/quick_app.py b/sat_frontends/quick_frontend/quick_app.py index 3c896b37..e503e884 100644 --- a/sat_frontends/quick_frontend/quick_app.py +++ b/sat_frontends/quick_frontend/quick_app.py @@ -886,7 +886,8 @@ class QuickApp(object): 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): diff --git a/sat_frontends/quick_frontend/quick_widgets.py b/sat_frontends/quick_frontend/quick_widgets.py index 1e5b7c9d..abf4ce33 100644 --- a/sat_frontends/quick_frontend/quick_widgets.py +++ b/sat_frontends/quick_frontend/quick_widgets.py @@ -274,11 +274,16 @@ class QuickWidgetsManager(object): @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