summary refs log tree commit diff stats
diff options
context:
space:
mode:
authorDiogo Sousa <diogogsousa@gmail.com>2013-10-08 23:59:36 +0100
committerTingPing <tingping@tingping.se>2013-10-09 21:34:02 -0400
commit5ad955236528d3962e63ce486bcbda2ee6896a63 (patch)
tree660321d8b6c38b47db64307c8585c826959d3c7c
parent111a58f1ef3948d3e15c3aff5c5cbdbb7f1a4123 (diff)
Fix messages with server-time not showing as new activity
Added a parameter to fe_print_text() to say that the message does not represent
new activity. This is used when a log from an old session is loaded. This used
to be implicit whenever the timestamp was non-zero, but with server-time this no
longer makes sense.

Fixes issue #746.
-rw-r--r--src/common/fe.h3
-rw-r--r--src/common/text.c6
-rw-r--r--src/fe-gtk/fe-gtk.c7
-rw-r--r--src/fe-text/fe-text.c10
4 files changed, 15 insertions, 11 deletions
diff --git a/src/common/fe.h b/src/common/fe.h
index 91bf0a5b..24fde989 100644
--- a/src/common/fe.h
+++ b/src/common/fe.h
@@ -86,7 +86,8 @@ void fe_text_clear (struct session *sess, int lines);
 void fe_close_window (struct session *sess);
 void fe_progressbar_start (struct session *sess);
 void fe_progressbar_end (struct server *serv);
-void fe_print_text (struct session *sess, char *text, time_t stamp);
+void fe_print_text (struct session *sess, char *text, time_t stamp,
+					gboolean no_activity);
 void fe_userlist_insert (struct session *sess, struct User *newuser, int row, int sel);
 int fe_userlist_remove (struct session *sess, struct User *user);
 void fe_userlist_rehash (struct session *sess, struct User *user);
diff --git a/src/common/text.c b/src/common/text.c
index d18b9c1a..0b66c5fd 100644
--- a/src/common/text.c
+++ b/src/common/text.c
@@ -314,7 +314,7 @@ scrollback_load (session *sess)
 						text = strip_color (text + 1, -1, STRIP_COLOR);
 					}
 
-					fe_print_text (sess, text, stamp);
+					fe_print_text (sess, text, stamp, TRUE);
 
 					if (prefs.hex_text_stripcolor_replay)
 					{
@@ -340,7 +340,7 @@ scrollback_load (session *sess)
 		text = ctime (&stamp);
 		text[24] = 0;	/* get rid of the \n */
 		buf = g_strdup_printf ("\n*\t%s %s\n\n", _("Loaded log from"), text);
-		fe_print_text (sess, buf, 0);
+		fe_print_text (sess, buf, 0, TRUE);
 		g_free (buf);
 		/*EMIT_SIGNAL (XP_TE_GENMSG, sess, "*", buf, NULL, NULL, NULL, 0);*/
 	}
@@ -895,7 +895,7 @@ PrintTextTimeStamp (session *sess, char *text, time_t timestamp)
 
 	log_write (sess, text);
 	scrollback_save (sess, text);
-	fe_print_text (sess, text, timestamp);
+	fe_print_text (sess, text, timestamp, FALSE);
 
 	if (conv)
 		g_free (conv);
diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c
index 97067f90..af3173e1 100644
--- a/src/fe-gtk/fe-gtk.c
+++ b/src/fe-gtk/fe-gtk.c
@@ -607,12 +607,13 @@ fe_progressbar_end (server *serv)
 }
 
 void
-fe_print_text (struct session *sess, char *text, time_t stamp)
+fe_print_text (struct session *sess, char *text, time_t stamp,
+			   gboolean no_activity)
 {
 	PrintTextRaw (sess->res->buffer, (unsigned char *)text, prefs.hex_text_indent, stamp);
 
-	if (!sess->new_data && sess != current_tab &&
-		 sess->gui->is_tab && !sess->nick_said && stamp == 0)
+	if (!no_activity && !sess->new_data && sess != current_tab &&
+		sess->gui->is_tab && !sess->nick_said)
 	{
 		sess->new_data = TRUE;
 		lastact_update (sess);
diff --git a/src/fe-text/fe-text.c b/src/fe-text/fe-text.c
index f5454dd2..b218e862 100644
--- a/src/fe-text/fe-text.c
+++ b/src/fe-text/fe-text.c
@@ -99,7 +99,7 @@ fe_new_window (struct session *sess, int focus)
 				" \017This binary compiled \00310"__DATE__"\017\n",
 				get_sys_str (1),
 				glib_major_version, glib_minor_version, glib_micro_version);
-	fe_print_text (sess, buf, 0);
+	fe_print_text (sess, buf, 0, FALSE);
 
 	fe_print_text (sess, "\n\nCompiled in Features\0032:\017 "
 #ifdef USE_PLUGIN
@@ -114,7 +114,7 @@ fe_new_window (struct session *sess, int focus)
 #ifdef USE_IPV6
 	"IPv6"
 #endif
-	"\n\n", 0);
+	"\n\n", 0, FALSE);
 	fflush (stdout);
 }
 
@@ -144,7 +144,8 @@ timecat (char *buf, time_t stamp)
 static const short colconv[] = { 0, 7, 4, 2, 1, 3, 5, 11, 13, 12, 6, 16, 14, 15, 10, 7 };
 
 void
-fe_print_text (struct session *sess, char *text, time_t stamp)
+fe_print_text (struct session *sess, char *text, time_t stamp,
+			   gboolean no_activity)
 {
 	int dotime = FALSE;
 	char num[8];
@@ -312,7 +313,8 @@ fe_print_text (struct session *sess, char *text, time_t stamp)
 #else
 /* The win32 version for cmd.exe */
 void
-fe_print_text (struct session *sess, char *text, time_t stamp)
+fe_print_text (struct session *sess, char *text, time_t stamp,
+			   gboolean no_activity)
 {
 	int dotime = FALSE;
 	int comma, k, i = 0, j = 0, len = strlen (text);