summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormathieui <mathieui@mathieui.net>2012-05-17 17:15:15 +0200
committermathieui <mathieui@mathieui.net>2012-05-17 17:15:15 +0200
commit3411d8ca83591adf9a92b3c1c78fbd74a4612fe7 (patch)
tree5b98602736bc9e55aabb9c238f92cfc295942bbe
parent0f8a5abdc0818b4071bf4623a12ee95223b11ba3 (diff)
downloadpoezio-3411d8ca83591adf9a92b3c1c78fbd74a4612fe7.tar.gz
poezio-3411d8ca83591adf9a92b3c1c78fbd74a4612fe7.tar.bz2
poezio-3411d8ca83591adf9a92b3c1c78fbd74a4612fe7.tar.xz
poezio-3411d8ca83591adf9a92b3c1c78fbd74a4612fe7.zip
Add a shortcut to go to the first unread message (separator) with M-p
-rw-r--r--doc/en/keys.txt1
-rw-r--r--src/tabs.py6
-rw-r--r--src/windows.py6
3 files changed, 10 insertions, 3 deletions
diff --git a/doc/en/keys.txt b/doc/en/keys.txt
index 07fd7d17..874614df 100644
--- a/doc/en/keys.txt
+++ b/doc/en/keys.txt
@@ -95,6 +95,7 @@ height of the conversation window - 1.
*Alt-v*:: Move the separator at the bottom of the tab.
+*Alt-h*:: Scroll to the separator, if there is one.
MultiUserChat tab input keys
~~~~~~~~~~~~~~~~~~~~~~~~~~~~
diff --git a/src/tabs.py b/src/tabs.py
index 92b913b0..61b322a0 100644
--- a/src/tabs.py
+++ b/src/tabs.py
@@ -394,6 +394,7 @@ class ChatTab(Tab):
# since the last input
self.remote_supports_attention = False
self.key_func['M-v'] = self.move_separator
+ self.key_func['M-h'] = self.scroll_separator
self.key_func['M-/'] = self.last_words_completion
self.key_func['^M'] = self.on_enter
self.commands['say'] = (self.command_say,
@@ -566,6 +567,11 @@ class ChatTab(Tab):
def on_half_scroll_down(self):
self.text_win.scroll_down((self.text_win.height-1) // 2)
+ def scroll_separator(self):
+ self.text_win.scroll_to_separator()
+ self.refresh()
+ self.core.doupdate()
+
class MucTab(ChatTab):
"""
diff --git a/src/windows.py b/src/windows.py
index e5973ec9..29bf5953 100644
--- a/src/windows.py
+++ b/src/windows.py
@@ -731,11 +731,11 @@ class TextWin(Win):
present, scroll at the top of the window
"""
if None in self.built_lines:
- self.pos = self.built_lines.index(None)
+ self.pos = len(self.built_lines) - self.built_lines.index(None) - self.height + 1
+ if self.pos < 0:
+ self.pos = 0
# Chose a proper position (not too high)
self.scroll_up(0)
- else: # Go at the top of the win
- self.pos = len(self.built_lines) - self.height
def remove_line_separator(self):
"""