From caaa753d80914c0286e5c0ba7c97b4dc7aa5c1ca Mon Sep 17 00:00:00 2001 From: Goffi Date: Sun, 21 Aug 2016 17:04:33 +0200 Subject: [PATCH] quick frontend (chat): fixed messageNew signal dispatching when several widgets are handling the target --- frontends/src/quick_frontend/quick_app.py | 9 +++++---- frontends/src/quick_frontend/quick_chat.py | 2 +- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/frontends/src/quick_frontend/quick_app.py b/frontends/src/quick_frontend/quick_app.py index 65772e2e..283451c2 100644 --- a/frontends/src/quick_frontend/quick_app.py +++ b/frontends/src/quick_frontend/quick_app.py @@ -479,7 +479,8 @@ class QuickApp(object): from_me = from_jid.bare == self.profiles[profile].whoami.bare target = to_jid if from_me else from_jid contact_list = self.contact_lists[profile] - chat_widget = self.widgets.getOrCreateWidget(quick_chat.QuickChat, target, type_=C.CHAT_ONE2ONE, on_new_widget=None, profile=profile) + # we want to be sure to have at least one QuickChat instance + self.widgets.getOrCreateWidget(quick_chat.QuickChat, target, type_=C.CHAT_ONE2ONE, on_new_widget=None, profile=profile) self.current_action_ids = set() # FIXME: to be removed self.current_action_ids_cb = {} # FIXME: to be removed @@ -489,9 +490,9 @@ class QuickApp(object): # presence information and which are not in roster contact_list.setContact(from_jid) - # we display the message in the widget - - chat_widget.messageNew(uid, timestamp, from_jid, target, msg, subject, type_, extra, profile) + # we dispatch the message in the widgets + for widget in self.widgets.getWidgets(quick_chat.QuickChat, target=target, profiles=(profile,)): + widget.messageNew(uid, timestamp, from_jid, target, msg, subject, type_, extra, profile) def messageStateHandler(self, uid, status, profile): for widget in self.widgets.getWidgets(quick_chat.QuickChat, profiles=(profile,)): diff --git a/frontends/src/quick_frontend/quick_chat.py b/frontends/src/quick_frontend/quick_chat.py index b42fb3bd..f2ea0282 100644 --- a/frontends/src/quick_frontend/quick_chat.py +++ b/frontends/src/quick_frontend/quick_chat.py @@ -180,7 +180,7 @@ class Occupant(object): class QuickChat(quick_widgets.QuickWidget): - visible_states = ['chat_state'] + visible_states = ['chat_state'] # FIXME: to be removed, used only in quick_games def __init__(self, host, target, type_=C.CHAT_ONE2ONE, occupants=None, subject=None, profiles=None): """