diff options
author | Sébastien Helleu <flashcode@flashtux.org> | 2022-12-25 17:57:59 +0100 |
---|---|---|
committer | Sébastien Helleu <flashcode@flashtux.org> | 2022-12-25 17:57:59 +0100 |
commit | 574a4c88346dacf1945fad827d90843c66e4e1a6 (patch) | |
tree | 2ed6c83816667040b3568927790dc913067189d2 | |
parent | c9796a31415dee3ac3745f6b4c0792d7a9da313b (diff) | |
download | weechat-574a4c88346dacf1945fad827d90843c66e4e1a6.zip |
core: add function gui_buffer_jump_last_visible_number
-rw-r--r-- | src/core/wee-command.c | 14 | ||||
-rw-r--r-- | src/gui/gui-buffer.c | 27 | ||||
-rw-r--r-- | src/gui/gui-buffer.h | 1 | ||||
-rw-r--r-- | tests/unit/gui/test-gui-buffer.cpp | 10 |
4 files changed, 40 insertions, 12 deletions
diff --git a/src/core/wee-command.c b/src/core/wee-command.c index e59a91f7f..449d94442 100644 --- a/src/core/wee-command.c +++ b/src/core/wee-command.c @@ -1358,17 +1358,7 @@ COMMAND_CALLBACK(buffer) { if (strcmp (argv[1], "+") == 0) { - /* search last non-hidden buffer */ - for (ptr_buffer = last_gui_buffer; ptr_buffer; - ptr_buffer = ptr_buffer->prev_buffer) - { - if (!ptr_buffer->hidden) - break; - } - number = (ptr_buffer) ? - ptr_buffer->number : ((last_gui_buffer) ? last_gui_buffer->number : -1); - if (number > 0) - gui_buffer_switch_by_number (gui_current_window, number); + gui_buffer_jump_last_visible_number (gui_current_window); } else { @@ -3412,7 +3402,7 @@ COMMAND_CALLBACK(input) gui_buffer_jump_smart (gui_current_window); /* since WeeChat 1.0: "/buffer +" */ else if (string_strcasecmp (argv[1], "jump_last_buffer") == 0) - (void) input_data (buffer, "/buffer +", NULL); + gui_buffer_jump_last_visible_number (gui_current_window); /* since WeeChat 3.8: "/buffer jump last_displayed" */ else if (string_strcasecmp (argv[1], "jump_last_buffer_displayed") == 0) gui_buffer_jump_last_buffer_displayed (gui_current_window); diff --git a/src/gui/gui-buffer.c b/src/gui/gui-buffer.c index 9e32c7f23..e9fca3933 100644 --- a/src/gui/gui-buffer.c +++ b/src/gui/gui-buffer.c @@ -4494,6 +4494,33 @@ gui_buffer_jump_smart (struct t_gui_window *window) } /* + * Jumps to last buffer that is visible (not hidden). + */ + +void +gui_buffer_jump_last_visible_number (struct t_gui_window *window) +{ + struct t_gui_buffer *ptr_buffer; + int number; + + if (!window) + return; + + /* search last non-hidden buffer */ + for (ptr_buffer = last_gui_buffer; ptr_buffer; + ptr_buffer = ptr_buffer->prev_buffer) + { + if (!ptr_buffer->hidden) + break; + } + + number = (ptr_buffer) ? + ptr_buffer->number : ((last_gui_buffer) ? last_gui_buffer->number : -1); + if (number > 0) + gui_buffer_switch_by_number (gui_current_window, number); +} + +/* * Jumps to last buffer displayed (before last jump to a buffer). */ diff --git a/src/gui/gui-buffer.h b/src/gui/gui-buffer.h index 9fc329929..0dc1c3b6b 100644 --- a/src/gui/gui-buffer.h +++ b/src/gui/gui-buffer.h @@ -386,6 +386,7 @@ extern struct t_gui_buffer_visited *gui_buffer_visited_add (struct t_gui_buffer extern int gui_buffer_visited_get_index_previous (); extern int gui_buffer_visited_get_index_next (); extern void gui_buffer_jump_smart (struct t_gui_window *window); +extern void gui_buffer_jump_last_visible_number (struct t_gui_window *window); extern void gui_buffer_jump_last_buffer_displayed (struct t_gui_window *window); extern void gui_buffer_jump_previously_visited_buffer (struct t_gui_window *window); extern void gui_buffer_jump_next_visited_buffer (struct t_gui_window *window); diff --git a/tests/unit/gui/test-gui-buffer.cpp b/tests/unit/gui/test-gui-buffer.cpp index 4c056cfe3..7f86c33c8 100644 --- a/tests/unit/gui/test-gui-buffer.cpp +++ b/tests/unit/gui/test-gui-buffer.cpp @@ -1399,6 +1399,16 @@ TEST(GuiBuffer, JumpSmart) /* * Tests functions: + * gui_buffer_jump_last_visible_number + */ + +TEST(GuiBuffer, JumpLastVisibleNumber) +{ + /* TODO: write tests */ +} + +/* + * Tests functions: * gui_buffer_jump_last_buffer_displayed */ |