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:
@@ -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)
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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)
|
||||
*/
|
||||
|
||||
@@ -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 <=
|
||||
|
||||
@@ -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
@@ -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
@@ -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)
|
||||
|
||||
@@ -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)))
|
||||
|
||||
@@ -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)
|
||||
*/
|
||||
|
||||
@@ -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 <=
|
||||
|
||||
@@ -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 ();
|
||||
|
||||
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user