From 306abbf97487d50700c1e63ca2ecba021638cf0e Mon Sep 17 00:00:00 2001
From: mathieui <mathieui@mathieui.net>
Date: Thu, 23 Jun 2011 23:33:02 +0200
Subject: Fixes #1736

---
 src/core.py    |  6 +++---
 src/room.py    |  4 ++--
 src/windows.py | 12 +++++++++---
 3 files changed, 14 insertions(+), 8 deletions(-)

(limited to 'src')

diff --git a/src/core.py b/src/core.py
index df3cf0d8..f3c406ad 100644
--- a/src/core.py
+++ b/src/core.py
@@ -982,12 +982,12 @@ class Core(object):
         body = xhtml.get_body_from_message_stanza(message)
         if body:
             date = date if delayed == True else None
-            self.add_message_to_text_buffer(room, body, date, nick_from)
+            self.add_message_to_text_buffer(room, body, date, nick_from, history=True if date else False)
             if tab is self.current_tab():
                 tab.text_win.refresh(tab._room)
             self.refresh_tab_win()
 
-    def add_message_to_text_buffer(self, room, txt, time=None, nickname=None):
+    def add_message_to_text_buffer(self, room, txt, time=None, nickname=None, history=None):
         """
         Add the message to the room if possible, else, add it to the Info window
         (in the Info tab of the info window in the RosterTab)
@@ -995,7 +995,7 @@ class Core(object):
         if not room:
             self.information('Trying to add a message in no room: %s' % txt, 'Error')
         else:
-            room.add_message(txt, time, nickname)
+            room.add_message(txt, time, nickname, history=history)
 
     def command_help(self, arg):
         """
diff --git a/src/room.py b/src/room.py
index 45ebddbd..a112fc7b 100644
--- a/src/room.py
+++ b/src/room.py
@@ -95,7 +95,7 @@ class Room(TextBuffer):
         """
         self.color_state = color
 
-    def add_message(self, txt, time=None, nickname=None, forced_user=None, nick_color=None):
+    def add_message(self, txt, time=None, nickname=None, forced_user=None, nick_color=None, history=None):
         """
         Note that user can be None even if nickname is not None. It happens
         when we receive an history message said by someone who is not
@@ -130,7 +130,7 @@ class Room(TextBuffer):
         self.messages.append(message)
         for window in self.windows: # make the associated windows
             # build the lines from the new message
-            nb = window.build_new_message(message)
+            nb = window.build_new_message(message, history=history)
             if window.pos != 0:
                 window.scroll_up(nb)
         return nb
diff --git a/src/windows.py b/src/windows.py
index eb6dde43..4fa358d4 100644
--- a/src/windows.py
+++ b/src/windows.py
@@ -534,7 +534,7 @@ class TextWin(Win):
         if None not in self.built_lines:
             self.built_lines.append(None)
 
-    def build_new_message(self, message):
+    def build_new_message(self, message, history=None):
         """
         Take one message, build it and add it to the list
         Return the number of lines that are built for the given
@@ -566,7 +566,10 @@ class TextWin(Win):
         else:
             txt = txt.replace('\t', '    ')
         # length of the time
-        offset = 9
+        if history:
+            offset = 20
+        else:
+            offset = 9
         if theme.CHAR_TIME_RIGHT:
             offset += 1
         if theme.CHAR_TIME_RIGHT:
@@ -592,7 +595,10 @@ class TextWin(Win):
             else:
                 color = None
             if first:
-                time = message.time.strftime("%H:%M:%S")
+                if history:
+                    time = message.time.strftime("%Y-%m-%d %H:%M:%S")
+                else:
+                    time = message.time.strftime("%H:%M:%S")
                 nickname = nick
             else:
                 time = None
-- 
cgit v1.2.3