From 3411d8ca83591adf9a92b3c1c78fbd74a4612fe7 Mon Sep 17 00:00:00 2001
From: mathieui <mathieui@mathieui.net>
Date: Thu, 17 May 2012 17:15:15 +0200
Subject: Add a shortcut to go to the first unread message (separator) with M-p

---
 src/tabs.py    | 6 ++++++
 src/windows.py | 6 +++---
 2 files changed, 9 insertions(+), 3 deletions(-)

(limited to 'src')

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):
         """
-- 
cgit v1.2.3