1
0
mirror of https://github.com/weechat/weechat.git synced 2026-06-29 22:36:38 +02:00

Added current buffer in hotlist when scrolling up in buffer (task #6664)

This commit is contained in:
Sebastien Helleu
2007-03-21 20:29:13 +00:00
parent 0b6a91837c
commit 6323e55ab4
12 changed files with 90 additions and 10 deletions
+2 -1
View File
@@ -1,10 +1,11 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
ChangeLog - 2007-03-20
ChangeLog - 2007-03-21
Version 0.2.4 (under dev!):
* added current buffer in hotlist when scrolling up in buffer (task #6664)
* fixed bug with explode_string / free_exploded_string when max_items > 0
* added new key (ctrl-R) for interactive and incremental search in buffer
history (task #6628)
+1 -1
View File
@@ -86,7 +86,7 @@ hotlist_add (int priority, t_irc_server *server, t_gui_buffer *buffer,
/* do not highlight current buffer */
if ((buffer == gui_current_window->buffer)
&& (!allow_current_buffer))
&& (!allow_current_buffer) && (!gui_buffer_is_scrolled (buffer)))
return;
if ((pos_hotlist = hotlist_search (buffer)))
+35
View File
@@ -366,6 +366,41 @@ gui_buffer_find_window (t_gui_buffer *buffer)
return NULL;
}
/*
* gui_buffer_is_scrolled: return 1 if all windows displaying buffer are scrolled
* (user doesn't see end of buffer)
* return 0 if at least one window is NOT scrolled
*/
int
gui_buffer_is_scrolled (t_gui_buffer *buffer)
{
t_gui_window *ptr_win;
int buffer_found;
if (!buffer)
return 0;
buffer_found = 0;
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
{
if (ptr_win->buffer == buffer)
{
buffer_found = 1;
/* buffer found and not scrolled, exit immediately */
if (!ptr_win->scroll)
return 0;
}
}
/* buffer found, and all windows were scrolled */
if (buffer_found)
return 1;
/* buffer not found */
return 0;
}
/*
* gui_buffer_get_dcc: get pointer to DCC buffer (DCC buffer created if not existing)
*/
+2 -1
View File
@@ -178,7 +178,8 @@ gui_add_to_line (t_gui_buffer *buffer, int type, time_t date, char *nick, char *
gui_chat_draw_line (buffer, buffer->last_line);
gui_chat_draw (buffer, 0);
}
if (gui_add_hotlist && (buffer->num_displayed == 0))
if (gui_add_hotlist
&& ((buffer->num_displayed == 0) || (gui_buffer_is_scrolled (buffer))))
{
if (3 - buffer->last_line->line_with_message -
buffer->last_line->line_with_highlight <=
+1
View File
@@ -85,6 +85,7 @@ extern t_gui_buffer *gui_buffer_new (t_gui_window *, void *, void *, int, int);
extern t_gui_buffer *gui_buffer_search (char *, char *);
extern t_gui_buffer *gui_buffer_search_by_number (int);
extern t_gui_window *gui_buffer_find_window (t_gui_buffer *);
extern int gui_buffer_is_scrolled (t_gui_buffer *);
extern t_gui_buffer *gui_buffer_get_dcc (t_gui_window *);
extern void gui_buffer_clear (t_gui_buffer *);
extern void gui_buffer_clear_all ();
+4 -2
View File
@@ -425,7 +425,8 @@ irc_cmd_recv_invite (t_irc_server *server, char *host, char *nick, char *argumen
GUI_COLOR(COLOR_WIN_CHAT),
GUI_COLOR(COLOR_WIN_CHAT_NICK),
nick);
if (gui_add_hotlist && (server->buffer->num_displayed == 0))
if (gui_add_hotlist
&& ((server->buffer->num_displayed == 0) || (gui_buffer_is_scrolled (server->buffer))))
{
hotlist_add (HOTLIST_HIGHLIGHT, server, server->buffer, 0);
gui_status_draw (gui_current_window->buffer, 1);
@@ -1042,7 +1043,8 @@ irc_cmd_recv_notice (t_irc_server *server, char *host, char *nick, char *argumen
(ascii_strcasecmp (nick, "chanserv") != 0) &&
(ascii_strcasecmp (nick, "memoserv") != 0))
{
if (gui_add_hotlist && (server->buffer->num_displayed == 0))
if (gui_add_hotlist
&& ((server->buffer->num_displayed == 0) || (gui_buffer_is_scrolled (server->buffer))))
{
hotlist_add (HOTLIST_PRIVATE, server, server->buffer, 0);
gui_status_draw (gui_current_window->buffer, 1);
+2 -1
View File
@@ -1,10 +1,11 @@
WeeChat - Wee Enhanced Environment for Chat
===========================================
ChangeLog - 2007-03-20
ChangeLog - 2007-03-21
Version 0.2.4 (under dev!):
* added current buffer in hotlist when scrolling up in buffer (task #6664)
* fixed bug with explode_string / free_exploded_string when max_items > 0
* added new key (ctrl-R) for interactive and incremental search in buffer
history (task #6628)
+1 -1
View File
@@ -86,7 +86,7 @@ hotlist_add (int priority, t_irc_server *server, t_gui_buffer *buffer,
/* do not highlight current buffer */
if ((buffer == gui_current_window->buffer)
&& (!allow_current_buffer))
&& (!allow_current_buffer) && (!gui_buffer_is_scrolled (buffer)))
return;
if ((pos_hotlist = hotlist_search (buffer)))
+35
View File
@@ -366,6 +366,41 @@ gui_buffer_find_window (t_gui_buffer *buffer)
return NULL;
}
/*
* gui_buffer_is_scrolled: return 1 if all windows displaying buffer are scrolled
* (user doesn't see end of buffer)
* return 0 if at least one window is NOT scrolled
*/
int
gui_buffer_is_scrolled (t_gui_buffer *buffer)
{
t_gui_window *ptr_win;
int buffer_found;
if (!buffer)
return 0;
buffer_found = 0;
for (ptr_win = gui_windows; ptr_win; ptr_win = ptr_win->next_window)
{
if (ptr_win->buffer == buffer)
{
buffer_found = 1;
/* buffer found and not scrolled, exit immediately */
if (!ptr_win->scroll)
return 0;
}
}
/* buffer found, and all windows were scrolled */
if (buffer_found)
return 1;
/* buffer not found */
return 0;
}
/*
* gui_buffer_get_dcc: get pointer to DCC buffer (DCC buffer created if not existing)
*/
+2 -1
View File
@@ -178,7 +178,8 @@ gui_add_to_line (t_gui_buffer *buffer, int type, time_t date, char *nick, char *
gui_chat_draw_line (buffer, buffer->last_line);
gui_chat_draw (buffer, 0);
}
if (gui_add_hotlist && (buffer->num_displayed == 0))
if (gui_add_hotlist
&& ((buffer->num_displayed == 0) || (gui_buffer_is_scrolled (buffer))))
{
if (3 - buffer->last_line->line_with_message -
buffer->last_line->line_with_highlight <=
+1
View File
@@ -85,6 +85,7 @@ extern t_gui_buffer *gui_buffer_new (t_gui_window *, void *, void *, int, int);
extern t_gui_buffer *gui_buffer_search (char *, char *);
extern t_gui_buffer *gui_buffer_search_by_number (int);
extern t_gui_window *gui_buffer_find_window (t_gui_buffer *);
extern int gui_buffer_is_scrolled (t_gui_buffer *);
extern t_gui_buffer *gui_buffer_get_dcc (t_gui_window *);
extern void gui_buffer_clear (t_gui_buffer *);
extern void gui_buffer_clear_all ();
+4 -2
View File
@@ -425,7 +425,8 @@ irc_cmd_recv_invite (t_irc_server *server, char *host, char *nick, char *argumen
GUI_COLOR(COLOR_WIN_CHAT),
GUI_COLOR(COLOR_WIN_CHAT_NICK),
nick);
if (gui_add_hotlist && (server->buffer->num_displayed == 0))
if (gui_add_hotlist
&& ((server->buffer->num_displayed == 0) || (gui_buffer_is_scrolled (server->buffer))))
{
hotlist_add (HOTLIST_HIGHLIGHT, server, server->buffer, 0);
gui_status_draw (gui_current_window->buffer, 1);
@@ -1042,7 +1043,8 @@ irc_cmd_recv_notice (t_irc_server *server, char *host, char *nick, char *argumen
(ascii_strcasecmp (nick, "chanserv") != 0) &&
(ascii_strcasecmp (nick, "memoserv") != 0))
{
if (gui_add_hotlist && (server->buffer->num_displayed == 0))
if (gui_add_hotlist
&& ((server->buffer->num_displayed == 0) || (gui_buffer_is_scrolled (server->buffer))))
{
hotlist_add (HOTLIST_PRIVATE, server, server->buffer, 0);
gui_status_draw (gui_current_window->buffer, 1);