summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/common/hotlist.h7
-rw-r--r--src/common/weeconfig.c7
-rw-r--r--src/common/weeconfig.h1
-rw-r--r--src/gui/curses/gui-display.c24
-rw-r--r--src/gui/gui.h61
-rw-r--r--src/irc/irc-dcc.c66
-rw-r--r--src/irc/irc-recv.c4
7 files changed, 97 insertions, 73 deletions
diff --git a/src/common/hotlist.h b/src/common/hotlist.h
index d6d43efd6..f6779e932 100644
--- a/src/common/hotlist.h
+++ b/src/common/hotlist.h
@@ -23,12 +23,17 @@
#include "../irc/irc.h"
+#define HOTLIST_LOW 0
+#define HOTLIST_MSG 1
+#define HOTLIST_PRIVATE 2
+#define HOTLIST_HIGHLIGHT 3
+
typedef struct t_weechat_hotlist t_weechat_hotlist;
struct t_weechat_hotlist
{
int priority; /* 0=crappy msg (join/part), 1=msg, */
- /* 2=nick highlight */
+ /* 2=pv, 3=nick highlight */
t_gui_buffer *buffer; /* associated buffer */
t_weechat_hotlist *prev_hotlist; /* link to previous hotlist */
t_weechat_hotlist *next_hotlist; /* link to next hotlist */
diff --git a/src/common/weeconfig.c b/src/common/weeconfig.c
index dbbe51c8f..aefe60edb 100644
--- a/src/common/weeconfig.c
+++ b/src/common/weeconfig.c
@@ -203,6 +203,7 @@ int cfg_col_chat_bg;
int cfg_col_status;
int cfg_col_status_delimiters;
int cfg_col_status_data_msg;
+int cfg_col_status_data_private;
int cfg_col_status_data_highlight;
int cfg_col_status_data_other;
int cfg_col_status_more;
@@ -305,10 +306,14 @@ t_config_option weechat_options_colors[] =
N_("color for window with new messages (status bar)"),
OPTION_TYPE_COLOR, 0, 0, 0,
"yellow", NULL, &cfg_col_status_data_msg, NULL, &config_change_color },
+ { "col_status_private", N_("color for window with private message"),
+ N_("color for window with private message (status bar)"),
+ OPTION_TYPE_COLOR, 0, 0, 0,
+ "lightmagenta", NULL, &cfg_col_status_data_private, NULL, &config_change_color },
{ "col_status_highlight", N_("color for window with highlight"),
N_("color for window with highlight (status bar)"),
OPTION_TYPE_COLOR, 0, 0, 0,
- "lightmagenta", NULL, &cfg_col_status_data_highlight, NULL, &config_change_color },
+ "lightred", NULL, &cfg_col_status_data_highlight, NULL, &config_change_color },
{ "col_status_data_other", N_("color for window with new data (not messages)"),
N_("color for window with new data (not messages) (status bar)"),
OPTION_TYPE_COLOR, 0, 0, 0,
diff --git a/src/common/weeconfig.h b/src/common/weeconfig.h
index 5a8c98684..244cf3bc9 100644
--- a/src/common/weeconfig.h
+++ b/src/common/weeconfig.h
@@ -117,6 +117,7 @@ extern int cfg_col_chat_bg;
extern int cfg_col_status;
extern int cfg_col_status_delimiters;
extern int cfg_col_status_data_msg;
+extern int cfg_col_status_data_private;
extern int cfg_col_status_data_highlight;
extern int cfg_col_status_data_other;
extern int cfg_col_status_more;
diff --git a/src/gui/curses/gui-display.c b/src/gui/curses/gui-display.c
index ea9fc91f2..9d8b54bb9 100644
--- a/src/gui/curses/gui-display.c
+++ b/src/gui/curses/gui-display.c
@@ -1254,15 +1254,19 @@ gui_draw_buffer_status (t_gui_buffer *buffer, int erase)
{
switch (ptr_hotlist->priority)
{
- case 0:
+ case HOTLIST_LOW:
gui_window_set_color (ptr_win->win_status,
COLOR_WIN_STATUS_DATA_OTHER);
break;
- case 1:
+ case HOTLIST_MSG:
gui_window_set_color (ptr_win->win_status,
COLOR_WIN_STATUS_DATA_MSG);
break;
- case 2:
+ case HOTLIST_PRIVATE:
+ gui_window_set_color (ptr_win->win_status,
+ COLOR_WIN_STATUS_DATA_PRIVATE);
+ break;
+ case HOTLIST_HIGHLIGHT:
gui_window_set_color (ptr_win->win_status,
COLOR_WIN_STATUS_DATA_HIGHLIGHT);
break;
@@ -2278,6 +2282,8 @@ gui_init_colors ()
cfg_col_status_delimiters, cfg_col_status_bg);
init_pair (COLOR_WIN_STATUS_DATA_MSG,
cfg_col_status_data_msg, cfg_col_status_bg);
+ init_pair (COLOR_WIN_STATUS_DATA_PRIVATE,
+ cfg_col_status_data_private, cfg_col_status_bg);
init_pair (COLOR_WIN_STATUS_DATA_HIGHLIGHT,
cfg_col_status_data_highlight, cfg_col_status_bg);
init_pair (COLOR_WIN_STATUS_DATA_OTHER,
@@ -2356,6 +2362,7 @@ gui_init_colors ()
color_attr[COLOR_WIN_STATUS - 1] = (cfg_col_status >= 0) ? cfg_col_status & A_BOLD : 0;
color_attr[COLOR_WIN_STATUS_DELIMITERS - 1] = (cfg_col_status_delimiters >= 0) ? cfg_col_status_delimiters & A_BOLD : 0;
color_attr[COLOR_WIN_STATUS_DATA_MSG - 1] = (cfg_col_status_data_msg >= 0) ? cfg_col_status_data_msg & A_BOLD : 0;
+ color_attr[COLOR_WIN_STATUS_DATA_PRIVATE - 1] = (cfg_col_status_data_private >= 0) ? cfg_col_status_data_private & A_BOLD : 0;
color_attr[COLOR_WIN_STATUS_DATA_HIGHLIGHT - 1] = (cfg_col_status_data_highlight >= 0) ? cfg_col_status_data_highlight & A_BOLD : 0;
color_attr[COLOR_WIN_STATUS_DATA_OTHER - 1] = (cfg_col_status_data_other >= 0) ? cfg_col_status_data_other & A_BOLD : 0;
color_attr[COLOR_WIN_STATUS_MORE - 1] = (cfg_col_status_more >= 0) ? cfg_col_status_more & A_BOLD : 0;
@@ -2547,9 +2554,14 @@ gui_add_message (t_gui_buffer *buffer, int type, int color, char *message)
buffer->last_line->line_with_highlight <=
buffer->notify_level)
{
- hotlist_add (buffer->last_line->line_with_message +
- buffer->last_line->line_with_highlight,
- buffer);
+ if (buffer->last_line->line_with_highlight)
+ hotlist_add (HOTLIST_HIGHLIGHT, buffer);
+ else if (BUFFER_IS_PRIVATE(buffer))
+ hotlist_add (HOTLIST_PRIVATE, buffer);
+ else if (buffer->last_line->line_with_message)
+ hotlist_add (HOTLIST_MSG, buffer);
+ else
+ hotlist_add (HOTLIST_LOW, buffer);
gui_draw_buffer_status (gui_current_window->buffer, 1);
}
}
diff --git a/src/gui/gui.h b/src/gui/gui.h
index 235842672..5050979f6 100644
--- a/src/gui/gui.h
+++ b/src/gui/gui.h
@@ -26,7 +26,7 @@
#define INPUT_BUFFER_BLOCK_SIZE 256
-#define NUM_COLORS 51
+#define NUM_COLORS 52
#define COLOR_WIN_TITLE 1
#define COLOR_WIN_CHAT 2
#define COLOR_WIN_CHAT_TIME 3
@@ -41,36 +41,37 @@
#define COLOR_WIN_STATUS 12
#define COLOR_WIN_STATUS_DELIMITERS 13
#define COLOR_WIN_STATUS_DATA_MSG 14
-#define COLOR_WIN_STATUS_DATA_HIGHLIGHT 15
-#define COLOR_WIN_STATUS_DATA_OTHER 16
-#define COLOR_WIN_STATUS_MORE 17
-#define COLOR_WIN_INFOBAR 18
-#define COLOR_WIN_INFOBAR_DELIMITERS 19
-#define COLOR_WIN_INFOBAR_HIGHLIGHT 20
-#define COLOR_WIN_INPUT 21
-#define COLOR_WIN_INPUT_CHANNEL 22
-#define COLOR_WIN_INPUT_NICK 23
-#define COLOR_WIN_NICK 24
-#define COLOR_WIN_NICK_AWAY 25
-#define COLOR_WIN_NICK_CHANOWNER 26
-#define COLOR_WIN_NICK_CHANADMIN 27
-#define COLOR_WIN_NICK_OP 28
-#define COLOR_WIN_NICK_HALFOP 29
-#define COLOR_WIN_NICK_VOICE 30
-#define COLOR_WIN_NICK_MORE 31
-#define COLOR_WIN_NICK_SEP 32
-#define COLOR_WIN_NICK_SELF 33
-#define COLOR_WIN_NICK_PRIVATE 34
-#define COLOR_WIN_NICK_FIRST 35
-#define COLOR_WIN_NICK_LAST 44
+#define COLOR_WIN_STATUS_DATA_PRIVATE 15
+#define COLOR_WIN_STATUS_DATA_HIGHLIGHT 16
+#define COLOR_WIN_STATUS_DATA_OTHER 17
+#define COLOR_WIN_STATUS_MORE 18
+#define COLOR_WIN_INFOBAR 19
+#define COLOR_WIN_INFOBAR_DELIMITERS 20
+#define COLOR_WIN_INFOBAR_HIGHLIGHT 21
+#define COLOR_WIN_INPUT 22
+#define COLOR_WIN_INPUT_CHANNEL 23
+#define COLOR_WIN_INPUT_NICK 24
+#define COLOR_WIN_NICK 25
+#define COLOR_WIN_NICK_AWAY 26
+#define COLOR_WIN_NICK_CHANOWNER 27
+#define COLOR_WIN_NICK_CHANADMIN 28
+#define COLOR_WIN_NICK_OP 29
+#define COLOR_WIN_NICK_HALFOP 30
+#define COLOR_WIN_NICK_VOICE 31
+#define COLOR_WIN_NICK_MORE 32
+#define COLOR_WIN_NICK_SEP 33
+#define COLOR_WIN_NICK_SELF 34
+#define COLOR_WIN_NICK_PRIVATE 35
+#define COLOR_WIN_NICK_FIRST 36
+#define COLOR_WIN_NICK_LAST 45
#define COLOR_WIN_NICK_NUMBER (COLOR_WIN_NICK_LAST - COLOR_WIN_NICK_FIRST + 1)
-#define COLOR_DCC_SELECTED 45
-#define COLOR_DCC_WAITING 46
-#define COLOR_DCC_CONNECTING 47
-#define COLOR_DCC_ACTIVE 48
-#define COLOR_DCC_DONE 49
-#define COLOR_DCC_FAILED 50
-#define COLOR_DCC_ABORTED 51
+#define COLOR_DCC_SELECTED 46
+#define COLOR_DCC_WAITING 47
+#define COLOR_DCC_CONNECTING 48
+#define COLOR_DCC_ACTIVE 49
+#define COLOR_DCC_DONE 50
+#define COLOR_DCC_FAILED 51
+#define COLOR_DCC_ABORTED 52
#define SERVER(buffer) ((t_irc_server *)(buffer->server))
#define CHANNEL(buffer) ((t_irc_channel *)(buffer->channel))
diff --git a/src/irc/irc-dcc.c b/src/irc/irc-dcc.c
index 6dd877b29..53f637c97 100644
--- a/src/irc/irc-dcc.c
+++ b/src/irc/irc-dcc.c
@@ -159,7 +159,7 @@ dcc_find_filename (t_irc_dcc *ptr_dcc)
if (!cfg_dcc_auto_rename)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
return;
}
@@ -167,7 +167,7 @@ dcc_find_filename (t_irc_dcc *ptr_dcc)
if (!filename2)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
return;
}
ptr_dcc->filename_suffix = 0;
@@ -405,7 +405,7 @@ dcc_channel_for_chat (t_irc_dcc *ptr_dcc)
"(maybe private buffer has already DCC CHAT?)\n"),
WEECHAT_ERROR);
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
return;
}
@@ -433,7 +433,7 @@ dcc_recv_connect_init (t_irc_dcc *ptr_dcc)
if (!dcc_connect (ptr_dcc))
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
else
{
@@ -458,7 +458,7 @@ dcc_recv_connect_init (t_irc_dcc *ptr_dcc)
dcc_channel_for_chat (ptr_dcc);
}
}
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
/*
@@ -477,7 +477,7 @@ dcc_accept (t_irc_dcc *ptr_dcc)
"PRIVMSG %s :\01DCC RESUME %s %d %u\01\r\n",
ptr_dcc->nick, ptr_dcc->filename,
ptr_dcc->port, ptr_dcc->start_resume);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
else
dcc_recv_connect_init (ptr_dcc);
@@ -515,7 +515,7 @@ dcc_accept_resume (t_irc_server *server, char *filename, int port,
ptr_dcc->filename);
gui_printf (ptr_dcc->server->buffer, _("resumed at position %u\n"),
ptr_dcc->start_resume);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
else
gui_printf (server->buffer,
@@ -624,7 +624,7 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
gui_printf (server->buffer, ", ");
gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%lu", size);
gui_printf (server->buffer, _(" bytes\n"));
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
if (type == DCC_FILE_SEND)
{
@@ -638,7 +638,7 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
gui_printf (server->buffer, "), ");
gui_printf_color (server->buffer, COLOR_WIN_CHAT_CHANNEL, "%lu", size);
gui_printf (server->buffer, _(" bytes\n"));
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
if (type == DCC_CHAT_RECV)
{
@@ -650,20 +650,20 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
"%d.%d.%d.%d",
addr >> 24, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff);
gui_printf_color (server->buffer, COLOR_WIN_CHAT_DARK, ")\n");
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
if (type == DCC_CHAT_SEND)
{
irc_display_prefix (server->buffer, PREFIX_INFO);
gui_printf (server->buffer, _("Sending DCC chat request to "));
gui_printf_color (server->buffer, COLOR_WIN_CHAT_NICK, "%s\n", nick);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
if (DCC_IS_FILE(type) && (!new_dcc->local_filename))
{
dcc_close (new_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
return NULL;
}
@@ -683,7 +683,7 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
gui_printf (new_dcc->server->buffer, ") ");
gui_printf (new_dcc->server->buffer, _("will be resumed at position %u\n"),
new_dcc->start_resume);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
/* connect if needed and redraw DCC buffer */
@@ -692,7 +692,7 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
if (!dcc_connect (new_dcc))
{
dcc_close (new_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
return NULL;
}
}
@@ -701,7 +701,7 @@ dcc_add (t_irc_server *server, int type, unsigned long addr, int port, char *nic
|| ( (type == DCC_FILE_RECV) && (cfg_dcc_auto_accept_files) ) )
dcc_accept (new_dcc);
else
- dcc_redraw (2);
+ dcc_redraw (HOTLIST_PRIVATE);
gui_draw_buffer_status (gui_current_window->buffer, 0);
return new_dcc;
@@ -1033,7 +1033,7 @@ dcc_chat_recv (t_irc_dcc *ptr_dcc)
else
{
dcc_close (ptr_dcc, DCC_ABORTED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
}
@@ -1062,7 +1062,7 @@ dcc_handle ()
if ((cfg_dcc_timeout != 0) && (time (NULL) > ptr_dcc->last_activity + cfg_dcc_timeout))
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
}
@@ -1089,21 +1089,21 @@ dcc_handle ()
if (sock < 0)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
ptr_dcc->sock = sock;
if (fcntl (ptr_dcc->sock, F_SETFL, O_NONBLOCK) == -1)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
ptr_dcc->addr = ntohl (addr.sin_addr.s_addr);
ptr_dcc->status = DCC_ACTIVE;
ptr_dcc->file = open (ptr_dcc->local_filename, O_RDONLY | O_NONBLOCK, 0644);
ptr_dcc->start_transfer = time (NULL);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
}
}
@@ -1130,19 +1130,19 @@ dcc_handle ()
if (sock < 0)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
ptr_dcc->sock = sock;
if (fcntl (ptr_dcc->sock, F_SETFL, O_NONBLOCK) == -1)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
ptr_dcc->addr = ntohl (addr.sin_addr.s_addr);
ptr_dcc->status = DCC_ACTIVE;
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
dcc_channel_for_chat (ptr_dcc);
}
}
@@ -1173,14 +1173,14 @@ dcc_handle ()
if (num_read == 0)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
if (write (ptr_dcc->file, buffer, num_read) == -1)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
ptr_dcc->last_activity = time (NULL);
@@ -1191,10 +1191,10 @@ dcc_handle ()
if (ptr_dcc->pos >= ptr_dcc->size)
{
dcc_close (ptr_dcc, DCC_DONE);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
}
else
- dcc_redraw (0);
+ dcc_redraw (HOTLIST_LOW);
}
}
if (ptr_dcc->type == DCC_FILE_SEND)
@@ -1207,7 +1207,7 @@ dcc_handle ()
"max is %d.\n"),
sizeof (buffer));
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
if (ptr_dcc->pos > ptr_dcc->ack)
@@ -1219,7 +1219,7 @@ dcc_handle ()
if (num_read == 0)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
if (num_read < 4)
@@ -1231,7 +1231,7 @@ dcc_handle ()
&& (ptr_dcc->ack >= ptr_dcc->size))
{
dcc_close (ptr_dcc, DCC_DONE);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
}
@@ -1243,20 +1243,20 @@ dcc_handle ()
if (num_read < 1)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
num_sent = send (ptr_dcc->sock, buffer, num_read, 0);
if (num_sent < 0)
{
dcc_close (ptr_dcc, DCC_FAILED);
- dcc_redraw (1);
+ dcc_redraw (HOTLIST_MSG);
continue;
}
ptr_dcc->last_activity = time (NULL);
ptr_dcc->pos += (unsigned long) num_sent;
dcc_calculate_speed (ptr_dcc, 0);
- dcc_redraw (0);
+ dcc_redraw (HOTLIST_LOW);
}
}
}
diff --git a/src/irc/irc-recv.c b/src/irc/irc-recv.c
index 3394c819b..64258305d 100644
--- a/src/irc/irc-recv.c
+++ b/src/irc/irc-recv.c
@@ -185,7 +185,7 @@ irc_cmd_recv_invite (t_irc_server *server, char *host, char *arguments)
gui_printf (server->buffer, _("by"));
gui_printf_color (server->buffer, COLOR_WIN_CHAT_NICK,
" %s\n", host);
- hotlist_add (2, server->buffer);
+ hotlist_add (HOTLIST_HIGHLIGHT, server->buffer);
gui_draw_buffer_status (gui_current_window->buffer, 1);
}
else
@@ -996,7 +996,7 @@ irc_cmd_recv_notice (t_irc_server *server, char *host, char *arguments)
(strcasecmp (host, "chanserv") != 0) &&
(strcasecmp (host, "memoserv") != 0))
{
- hotlist_add (2, server->buffer);
+ hotlist_add (HOTLIST_PRIVATE, server->buffer);
gui_draw_buffer_status (gui_current_window->buffer, 1);
}
}