mirror of
https://github.com/ZoiteChat/zoitechat.git
synced 2026-03-12 16:50:19 +00:00
Further tab color improvements
- Combine the three properties into a single one - Finally fully fix the handling with plugins handling events TODO: Look into lastact handling of these, seems wrong
This commit is contained in:
@@ -664,14 +664,10 @@ fe_print_text (struct session *sess, char *text, time_t stamp,
|
||||
return;
|
||||
|
||||
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, 0);
|
||||
else if (sess->tab_state & TAB_STATE_NEW_HILIGHT)
|
||||
fe_set_tab_color (sess, 3);
|
||||
else if (sess->msg_said)
|
||||
else if (sess->tab_state & TAB_STATE_NEW_MSG)
|
||||
fe_set_tab_color (sess, 2);
|
||||
else
|
||||
fe_set_tab_color (sess, 1);
|
||||
|
||||
@@ -178,62 +178,50 @@ fe_set_tab_color (struct session *sess, int col)
|
||||
switch (col)
|
||||
{
|
||||
case 0: /* no particular color (theme default) */
|
||||
sess->new_data = FALSE;
|
||||
sess->msg_said = FALSE;
|
||||
sess->nick_said = FALSE;
|
||||
sess->tab_state = TAB_STATE_NONE;
|
||||
chan_set_color (sess->res->tab, plain_list);
|
||||
break;
|
||||
case 1: /* new data has been displayed (dark red) */
|
||||
sess->new_data = TRUE;
|
||||
sess->msg_said = FALSE;
|
||||
sess->nick_said = FALSE;
|
||||
sess->tab_state = TAB_STATE_NEW_DATA;
|
||||
chan_set_color (sess->res->tab, newdata_list);
|
||||
|
||||
if (chan_is_collapsed (sess->res->tab)
|
||||
&& !(server_sess->msg_said || server_sess->nick_said)
|
||||
&& !((server_sess->tab_state & TAB_STATE_NEW_MSG)
|
||||
|| (server_sess->tab_state & TAB_STATE_NEW_HILIGHT))
|
||||
&& !(server_sess == current_tab))
|
||||
{
|
||||
server_sess->new_data = TRUE;
|
||||
server_sess->msg_said = FALSE;
|
||||
server_sess->nick_said = FALSE;
|
||||
server_sess->tab_state = TAB_STATE_NEW_DATA;
|
||||
chan_set_color (chan_get_parent (sess->res->tab), newdata_list);
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
case 2: /* new message arrived in channel (light red) */
|
||||
sess->new_data = FALSE;
|
||||
sess->msg_said = TRUE;
|
||||
sess->nick_said = FALSE;
|
||||
sess->tab_state = TAB_STATE_NEW_MSG;
|
||||
chan_set_color (sess->res->tab, newmsg_list);
|
||||
|
||||
if (chan_is_collapsed (sess->res->tab)
|
||||
&& !server_sess->nick_said
|
||||
|
||||
if (chan_is_collapsed (sess->res->tab)
|
||||
&& !(server_sess->tab_state & TAB_STATE_NEW_HILIGHT)
|
||||
&& !(server_sess == current_tab))
|
||||
{
|
||||
server_sess->new_data = FALSE;
|
||||
server_sess->msg_said = TRUE;
|
||||
server_sess->nick_said = FALSE;
|
||||
server_sess->tab_state = TAB_STATE_NEW_MSG;
|
||||
chan_set_color (chan_get_parent (sess->res->tab), newmsg_list);
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
case 3: /* your nick has been seen (blue) */
|
||||
sess->new_data = FALSE;
|
||||
sess->msg_said = FALSE;
|
||||
sess->nick_said = TRUE;
|
||||
sess->tab_state = TAB_STATE_NEW_HILIGHT;
|
||||
chan_set_color (sess->res->tab, nickseen_list);
|
||||
|
||||
if (chan_is_collapsed (sess->res->tab) && !(server_sess == current_tab))
|
||||
{
|
||||
server_sess->new_data = FALSE;
|
||||
server_sess->msg_said = FALSE;
|
||||
server_sess->nick_said = TRUE;
|
||||
server_sess->tab_state = TAB_STATE_NEW_MSG;
|
||||
chan_set_color (chan_get_parent (sess->res->tab), nickseen_list);
|
||||
}
|
||||
|
||||
|
||||
break;
|
||||
}
|
||||
lastact_update (sess);
|
||||
sess->last_tab_state = sess->tab_state; /* For plugins handling future prints */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user