summaryrefslogtreecommitdiff
path: root/src/tabs.py
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2013-03-09 22:38:31 +0100
committermathieui <mathieui@mathieui.net>2013-03-09 22:38:31 +0100
commitf00dd1b8feedf4ec9dade18617ce855d447b420c (patch)
tree36f2593f8f4ad6c9efb2759d123563cc44d384cb /src/tabs.py
parent9885203c6799c121f5bc8a733dc1937fe8c1b4d6 (diff)
downloadpoezio-f00dd1b8feedf4ec9dade18617ce855d447b420c.tar.gz
poezio-f00dd1b8feedf4ec9dade18617ce855d447b420c.tar.bz2
poezio-f00dd1b8feedf4ec9dade18617ce855d447b420c.tar.xz
poezio-f00dd1b8feedf4ec9dade18617ce855d447b420c.zip
Fix #2254
(add a new theming option, too)
Diffstat (limited to 'src/tabs.py')
-rw-r--r--src/tabs.py13
1 files changed, 12 insertions, 1 deletions
diff --git a/src/tabs.py b/src/tabs.py
index 3e7dc5f3..7f879aab 100644
--- a/src/tabs.py
+++ b/src/tabs.py
@@ -68,6 +68,7 @@ NS_MUC_USER = 'http://jabber.org/protocol/muc#user'
STATE_COLORS = {
'disconnected': lambda: get_theme().COLOR_TAB_DISCONNECTED,
+ 'scrolled': lambda: get_theme().COLOR_TAB_SCROLLED,
'joined': lambda: get_theme().COLOR_TAB_JOINED,
'message': lambda: get_theme().COLOR_TAB_NEW_MESSAGE,
'highlight': lambda: get_theme().COLOR_TAB_HIGHLIGHT,
@@ -79,6 +80,7 @@ STATE_COLORS = {
VERTICAL_STATE_COLORS = {
'disconnected': lambda: get_theme().COLOR_VERTICAL_TAB_DISCONNECTED,
+ 'scrolled': lambda: get_theme().COLOR_VERTICAL_TAB_SCROLLED,
'joined': lambda: get_theme().COLOR_VERTICAL_TAB_JOINED,
'message': lambda: get_theme().COLOR_VERTICAL_TAB_NEW_MESSAGE,
'highlight': lambda: get_theme().COLOR_VERTICAL_TAB_HIGHLIGHT,
@@ -93,6 +95,7 @@ STATE_PRIORITY = {
'normal': -1,
'current': -1,
'disconnected': 0,
+ 'scrolled': 0.5,
'message': 1,
'joined': 1,
'highlight': 2,
@@ -173,7 +176,8 @@ class Tab(object):
if not value in STATE_COLORS:
log.debug("Invalid value for tab state: %s", value)
elif STATE_PRIORITY[value] < STATE_PRIORITY[self._state] and \
- value not in ('current', 'disconnected'):
+ value not in ('current', 'disconnected') and \
+ not (self._state == 'scrolled' and value == 'disconnected'):
log.debug("Did not set state because of lower priority, asked: %s, kept: %s", value, self._state)
elif self._state == 'disconnected' and value not in ('joined', 'current'):
log.debug('Did not set state because disconnected tabs remain visible')
@@ -655,6 +659,10 @@ class ChatTab(Tab):
def get_conversation_messages(self):
return self._text_buffer.messages
+ def check_scrolled(self):
+ if self.text_win.pos != 0:
+ self.state = 'scrolled'
+
def command_say(self, line, correct=False):
pass
@@ -1361,6 +1369,7 @@ class MucTab(ChatTab):
self.text_win.add_line_separator(self._text_buffer)
if config.get_by_tabname('send_chat_states', 'true', self.general_jid, True) == 'true' and not self.input.get_text():
self.send_chat_state('inactive')
+ self.check_scrolled()
def on_gain_focus(self):
self.state = 'current'
@@ -1970,6 +1979,7 @@ class PrivateTab(ChatTab):
'send_chat_states', 'true', self.general_jid, True) == 'true'\
and not self.input.get_text() and self.on:
self.send_chat_state('inactive')
+ self.check_scrolled()
def on_gain_focus(self):
self.state = 'current'
@@ -3158,6 +3168,7 @@ class ConversationTab(ChatTab):
if config.get_by_tabname('send_chat_states', 'true', self.general_jid, True) == 'true' and (not self.input.get_text() or not self.input.get_text().startswith('//')):
if resource:
self.send_chat_state('inactive')
+ self.check_scrolled()
def on_gain_focus(self):
contact = roster[self.get_dest_jid()]