diff options
author | Sebastien Helleu <flashcode@flashtux.org> | 2006-01-25 17:52:11 +0000 |
---|---|---|
committer | Sebastien Helleu <flashcode@flashtux.org> | 2006-01-25 17:52:11 +0000 |
commit | 464fc8abdf937e6dcbf0361613d6576de597c67c (patch) | |
tree | 22a1f4f8d43ca1c3d8821d414f0358f55f4f7aed /src/gui | |
parent | 1e4c1a707327399672aabfe2dbd0bd8c97efa6fc (diff) | |
download | weechat-464fc8abdf937e6dcbf0361613d6576de597c67c.zip |
Added new scroll keys for a few lines up/down (default: meta-pgup/pgdn) (patch from Pistos)
Diffstat (limited to 'src/gui')
-rw-r--r-- | src/gui/curses/gui-display.c | 59 | ||||
-rw-r--r-- | src/gui/curses/gui-input.c | 2 | ||||
-rw-r--r-- | src/gui/gui-action.c | 20 | ||||
-rw-r--r-- | src/gui/gui-keyboard.c | 4 | ||||
-rw-r--r-- | src/gui/gui.h | 4 |
5 files changed, 89 insertions, 0 deletions
diff --git a/src/gui/curses/gui-display.c b/src/gui/curses/gui-display.c index 4ed866a43..33f1dcdcf 100644 --- a/src/gui/curses/gui-display.c +++ b/src/gui/curses/gui-display.c @@ -2712,6 +2712,65 @@ gui_window_page_down (t_gui_window *window) } /* + * gui_window_scroll_up: display previous few lines in buffer + */ + +void +gui_window_scroll_up (t_gui_window *window) +{ + if (!gui_ok) + return; + + if (!window->first_line_displayed) + { + gui_calculate_line_diff (window, &window->start_line, + &window->start_line_pos, + (window->start_line) ? + (-1) * cfg_look_scroll_amount : + (-1) * ( (window->win_chat_height - 1) + cfg_look_scroll_amount)); + gui_draw_buffer_chat (window->buffer, 0); + gui_draw_buffer_status (window->buffer, 0); + } +} + +/* + * gui_window_scroll_down: display next few lines in buffer + */ + +void +gui_window_scroll_down (t_gui_window *window) +{ + t_gui_line *ptr_line; + int line_pos; + + if (!gui_ok) + return; + + if (window->start_line) + { + gui_calculate_line_diff (window, &window->start_line, + &window->start_line_pos, + cfg_look_scroll_amount); + + /* check if we can display all */ + ptr_line = window->start_line; + line_pos = window->start_line_pos; + gui_calculate_line_diff (window, &ptr_line, + &line_pos, + window->win_chat_height - 1); + + if (!ptr_line) + { + window->start_line = NULL; + window->start_line_pos = 0; + } + + gui_draw_buffer_chat (window->buffer, 0); + gui_draw_buffer_status (window->buffer, 0); + } +} + +/* * gui_window_nick_beginning: go to beginning of nicklist */ diff --git a/src/gui/curses/gui-input.c b/src/gui/curses/gui-input.c index d231dda5f..689407811 100644 --- a/src/gui/curses/gui-input.c +++ b/src/gui/curses/gui-input.c @@ -86,6 +86,8 @@ gui_input_default_key_bindings () gui_key_bind ( /* ^down */ "meta-Ob", "down_global"); gui_key_bind ( /* pgup */ "meta2-5~", "page_up"); gui_key_bind ( /* pgdn */ "meta2-6~", "page_down"); + gui_key_bind ( /* m-pgup */ "meta-meta2-5~", "scroll_up"); + gui_key_bind ( /* m-pgdn */ "meta-meta2-6~", "scroll_down"); gui_key_bind ( /* F10 */ "meta2-21~", "infobar_clear"); gui_key_bind ( /* F11 */ "meta2-23~", "nick_page_up"); gui_key_bind ( /* F12 */ "meta2-24~", "nick_page_down"); diff --git a/src/gui/gui-action.c b/src/gui/gui-action.c index bb208a667..23dffab88 100644 --- a/src/gui/gui-action.c +++ b/src/gui/gui-action.c @@ -879,6 +879,26 @@ gui_action_page_down (t_gui_window *window) } /* + * gui_action_scroll_up: display previous few lines in buffer + */ + +void +gui_action_scroll_up (t_gui_window *window) +{ + gui_window_scroll_up (window); +} + +/* + * gui_action_scroll_down: display next few lines in buffer + */ + +void +gui_action_scroll_down (t_gui_window *window) +{ + gui_window_scroll_down (window); +} + +/* * gui_action_nick_beginning: go to beginning of nicklist */ diff --git a/src/gui/gui-keyboard.c b/src/gui/gui-keyboard.c index 0e8522a5d..762c9eade 100644 --- a/src/gui/gui-keyboard.c +++ b/src/gui/gui-keyboard.c @@ -87,6 +87,10 @@ t_gui_key_function gui_key_functions[] = N_("scroll one page up") }, { "page_down", gui_action_page_down, N_("scroll one page down") }, + { "scroll_up", gui_action_scroll_up, + N_("scroll a few lines up") }, + { "scroll_down", gui_action_scroll_down, + N_("scroll a few lines down") }, { "nick_beginning", gui_action_nick_beginning, N_("display beginning of nicklist") }, { "nick_end", gui_action_nick_end, diff --git a/src/gui/gui.h b/src/gui/gui.h index d6d05a79f..2e50bcc6e 100644 --- a/src/gui/gui.h +++ b/src/gui/gui.h @@ -459,6 +459,8 @@ extern void gui_action_down (t_gui_window *); extern void gui_action_down_global (t_gui_window *); extern void gui_action_page_up (t_gui_window *); extern void gui_action_page_down (t_gui_window *); +extern void gui_action_scroll_up (t_gui_window *); +extern void gui_action_scroll_down (t_gui_window *); extern void gui_action_nick_beginning (t_gui_window *); extern void gui_action_nick_end (t_gui_window *); extern void gui_action_nick_page_up (t_gui_window *); @@ -513,6 +515,8 @@ extern void gui_switch_to_buffer (t_gui_window *, t_gui_buffer *); extern t_gui_buffer *gui_get_dcc_buffer (t_gui_window *); extern void gui_window_page_up (t_gui_window *); extern void gui_window_page_down (t_gui_window *); +extern void gui_window_scroll_up (t_gui_window *); +extern void gui_window_scroll_down (t_gui_window *); extern void gui_window_nick_beginning (t_gui_window *); extern void gui_window_nick_end (t_gui_window *); extern void gui_window_nick_page_up (t_gui_window *); |