Only display the supported features when they change

also, check the features every rejoin for PrivateTabs
and refresh the window after displaying the features
This commit is contained in:
mathieui 2014-05-17 15:51:42 +02:00
parent a1f86720d1
commit 2dafd6d5cf
2 changed files with 12 additions and 0 deletions

View file

@ -714,6 +714,8 @@ class OneToOneTab(ChatTab):
def __init__(self, jid=''):
ChatTab.__init__(self, jid)
# Set to true once the first disco is done
self.__initial_disco = False
# change this to True or False when
# we know that the remote user wants chatstates, or not.
# None means we dont know yet, and we send only "active" chatstates
@ -803,10 +805,18 @@ class OneToOneTab(ChatTab):
"Features check callback"
features = iq['disco_info'].get_features() or []
log.debug('\n\nFEATURES:\n%s\n\n%s\n\n', iq, features)
before = ('correct' in self.commands,
self.remote_supports_attention,
self.remote_supports_receipts)
correct = self._feature_correct(features)
attention = self._feature_attention(features)
receipts = self._feature_receipts(features)
if (correct, attention, receipts) == before and self.__initial_disco:
return
else:
self.__initial_disco = True
features = []
if correct:
features.append(_('message correction (/correct)'))
@ -826,5 +836,6 @@ class OneToOneTab(ChatTab):
color = dump_tuple(get_theme().COLOR_INFORMATION_TEXT)
msg = msg % (color, features_str)
self.add_message(msg, typ=0)
self.core.refresh_window()

View file

@ -331,6 +331,7 @@ class PrivateTab(OneToOneTab):
The user (or at least someone with the same nick) came back in the MUC
"""
self.activate()
self.check_features()
tab = self.core.get_tab_by_name(safeJID(self.name).bare, MucTab)
color = 3
if tab and config.get_by_tabname('display_user_color_in_join_part', '', self.general_jid, True):