summaryrefslogtreecommitdiff
path: root/src/gui
diff options
context:
space:
mode:
authorSebastien Helleu <flashcode@flashtux.org>2006-01-25 17:52:11 +0000
committerSebastien Helleu <flashcode@flashtux.org>2006-01-25 17:52:11 +0000
commit464fc8abdf937e6dcbf0361613d6576de597c67c (patch)
tree22a1f4f8d43ca1c3d8821d414f0358f55f4f7aed /src/gui
parent1e4c1a707327399672aabfe2dbd0bd8c97efa6fc (diff)
downloadweechat-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.c59
-rw-r--r--src/gui/curses/gui-input.c2
-rw-r--r--src/gui/gui-action.c20
-rw-r--r--src/gui/gui-keyboard.c4
-rw-r--r--src/gui/gui.h4
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 *);