summary refs log tree commit diff stats
path: root/src/fe-gtk
diff options
context:
space:
mode:
authorPatrick Griffis <tingping@tingping.se>2016-11-11 01:25:12 -0500
committerPatrick Griffis <tingping@tingping.se>2016-11-11 01:25:12 -0500
commit539949973c484f14d40f1886d67ec09df057315c (patch)
tree823b900e1cb28b61a567a63a8f7a507767bcaebd /src/fe-gtk
parente7c88e0f83f40f9d020aa7d2783e95dff55f323f (diff)
More fixes for tab color handling with plugins
Part 2 of 03767ee0f9826222

So how the colors work should be pretty straight forward:

- A message comes in and is handled, this sets the state flags:
    nick_said, msg_said, new_data. These map to tab colors.
- This state is reset under one of these conditions:
  - It is commited to the UI when actually printed on unfocused tab
  - Event is interupted by a plugin hook
  - The tab focus is changed
Diffstat (limited to 'src/fe-gtk')
-rw-r--r--src/fe-gtk/fe-gtk.c16
-rw-r--r--src/fe-gtk/maingui.c15
2 files changed, 12 insertions, 19 deletions
diff --git a/src/fe-gtk/fe-gtk.c b/src/fe-gtk/fe-gtk.c
index 6fed4fe8..ef9f3ab3 100644
--- a/src/fe-gtk/fe-gtk.c
+++ b/src/fe-gtk/fe-gtk.c
@@ -660,21 +660,21 @@ fe_print_text (struct session *sess, char *text, time_t stamp,
 {
 	PrintTextRaw (sess->res->buffer, (unsigned char *)text, prefs.hex_text_indent, stamp);
 
-	if (no_activity || sess == current_tab || !sess->gui->is_tab)
+	if (no_activity || !sess->gui->is_tab)
 		return;
 
-	if (sess->nick_said)
+	if (sess == current_tab)
+	{
+		sess->nick_said = FALSE;
+		sess->msg_said = FALSE;
+		sess->new_data = FALSE;
+	}
+	else if (sess->nick_said)
 		fe_set_tab_color (sess, 3);
 	else if (sess->msg_said)
 		fe_set_tab_color (sess, 2);
 	else
 		fe_set_tab_color (sess, 1);
-
-	if (!sess->new_data && !sess->nick_said)
-	{
-		sess->new_data = TRUE;
-		lastact_update (sess);
-	}
 }
 
 void
diff --git a/src/fe-gtk/maingui.c b/src/fe-gtk/maingui.c
index ab4a8156..572f30e4 100644
--- a/src/fe-gtk/maingui.c
+++ b/src/fe-gtk/maingui.c
@@ -540,17 +540,10 @@ mg_focus (session *sess)
 		sess->server->server_session = sess;
 	}
 
-	if (sess->new_data || sess->nick_said || sess->msg_said)
-	{
-		sess->nick_said = FALSE;
-		sess->msg_said = FALSE;
-		sess->new_data = FALSE;
-		lastact_update (sess);
-		/* when called via mg_changui_new, is_tab might be true, but
-			sess->res->tab is still NULL. */
-		if (sess->res->tab)
-			fe_set_tab_color (sess, 0);
-	}
+	/* when called via mg_changui_new, is_tab might be true, but
+		sess->res->tab is still NULL. */
+	if (sess->res->tab)
+		fe_set_tab_color (sess, 0);
 }
 
 static int