# HG changeset patch # User Goffi # Date 1580943696 -3600 # Node ID 6032245c927ec29f35718512d1788b8bbceeffcb # Parent 8b4354b5c05fcf8802d867281afc1fdbdc35cbdd 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). diff -r 8b4354b5c05f -r 6032245c927e sat_frontends/quick_frontend/quick_app.py --- 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): diff -r 8b4354b5c05f -r 6032245c927e sat_frontends/quick_frontend/quick_widgets.py --- 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