diff options
-rw-r--r-- | src/core.py | 3 | ||||
-rw-r--r-- | src/tabs.py | 12 |
2 files changed, 10 insertions, 5 deletions
diff --git a/src/core.py b/src/core.py index 766061bd..169df31f 100644 --- a/src/core.py +++ b/src/core.py @@ -3272,6 +3272,7 @@ class Core(object): identifier=message['id'], jid=message['from'], typ=1) + if tab.remote_wants_chatstates is None: if message['chat_state']: tab.remote_wants_chatstates = True @@ -3317,6 +3318,7 @@ class Core(object): tab = self.get_conversation_by_jid(message['from'], False) if not tab: return False + tab.remote_wants_chatstates = True self.events.trigger('normal_chatstate', message, tab) tab.chatstate = state if state == 'gone' and isinstance(tab, tabs.DynamicConversationTab): @@ -3333,6 +3335,7 @@ class Core(object): tab = self.get_tab_by_name(message['from'].full, tabs.PrivateTab) if not tab: return + tab.remote_wants_chatstates = True self.events.trigger('private_chatstate', message, tab) tab.chatstate = state if tab == self.current_tab(): diff --git a/src/tabs.py b/src/tabs.py index c44b5bf0..12a3cd62 100644 --- a/src/tabs.py +++ b/src/tabs.py @@ -576,11 +576,13 @@ class ChatTab(Tab): if not isinstance(self, MucTab) or self.joined: if state in ('active', 'inactive', 'gone') and self.inactive and not always_send: return - msg = self.core.xmpp.make_message(self.get_dest_jid()) - msg['type'] = self.message_type - msg['chat_state'] = state - self.chat_state = state - msg.send() + if config.get_by_tabname('send_chat_states', 'true', self.general_jid, True) and \ + self.remote_wants_chatstates is not False: + msg = self.core.xmpp.make_message(self.get_dest_jid()) + msg['type'] = self.message_type + msg['chat_state'] = state + self.chat_state = state + msg.send() def send_composing_chat_state(self, empty_after): """ |