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).
This commit is contained in:
Goffi 2020-02-06 00:01:36 +01:00
commit 9a9adb36cb
2 changed files with 12 additions and 6 deletions

View file

@ -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):

View file

@ -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