summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/core.py3
-rw-r--r--src/tabs.py12
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):
"""