[smuxi] Frontend-GNOME: show unseen messages from engine correctly



commit 780a9026aac1e404984cd87f5d1ff9a06d1f9535
Author: Mirco Bauer <meebey meebey net>
Date:   Thu May 14 07:54:15 2015 +0200

    Frontend-GNOME: show unseen messages from engine correctly
    
    Since 3f72df0 (protocol 0.13) we do track (push) seen messages and thus we
    can now properly show them when reconnecting to the engine.

 src/Frontend-GNOME/Views/Chats/ChatView.cs |   22 ++++++++++++++++------
 1 files changed, 16 insertions(+), 6 deletions(-)
---
diff --git a/src/Frontend-GNOME/Views/Chats/ChatView.cs b/src/Frontend-GNOME/Views/Chats/ChatView.cs
index 5d6ca20..98e768d 100644
--- a/src/Frontend-GNOME/Views/Chats/ChatView.cs
+++ b/src/Frontend-GNOME/Views/Chats/ChatView.cs
@@ -1,7 +1,7 @@
 /*
  * Smuxi - Smart MUltipleXed Irc
  *
- * Copyright (c) 2005-2014 Mirco Bauer <meebey meebey net>
+ * Copyright (c) 2005-2015 Mirco Bauer <meebey meebey net>
  *
  * Full GPL License: <http://www.gnu.org/licenses/gpl.txt>
  *
@@ -570,11 +570,16 @@ namespace Smuxi.Frontend.Gnome
                 }
             }
 
-            // as we don't track which messages were already seen it would
-            // show all chats with message activity after the frontend connect
+            // as we don't track which events have already been seen it would
+            // show all chats with unseen events after the frontend connect
             if (!HasHighlight) {
-                HasActivity = false;
                 HasEvent = false;
+                // Smuxi protocol < 0.13 does not support remembering seen
+                // messages thus we mark all message as seen as we can't tell
+                // which ones are new
+                if (Frontend.EngineProtocolVersion < new Version(0, 13)) {
+                    HasActivity = false;
+                }
             }
 
             // reset tab icon to normal
@@ -590,7 +595,7 @@ namespace Smuxi.Frontend.Gnome
             _OutputMessageTextView.UpdateMarkerline();
             
             if (Frontend.EngineProtocolVersion == null ||
-                Frontend.EngineProtocolVersion < new Version(0, 12)) {
+                Frontend.EngineProtocolVersion < new Version(0, 13)) {
                 return;
             }
             
@@ -724,7 +729,7 @@ namespace Smuxi.Frontend.Gnome
         
         protected virtual void OnMessageTextViewMessageAdded(object sender, 
MessageTextViewMessageAddedEventArgs e)
         {
-            if (!IsActive) {
+            if (_IsSynced && !IsActive) {
                 switch (e.Message.MessageType) {
                     case MessageType.Normal:
                         HasActivity = true;
@@ -733,6 +738,11 @@ namespace Smuxi.Frontend.Gnome
                         HasEvent = true;
                         break;
                 }
+            } else if (!IsActive) {
+                if (Frontend.EngineProtocolVersion >= new Version(0, 13) &&
+                    e.Message.TimeStamp > SyncedLastSeenMessage) {
+                    HasActivity = true;
+                }
             }
 
             var buffer = _OutputMessageTextView.Buffer;


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]