add cycling through tabs

This commit is contained in:
NunoSempere 2024-01-06 16:30:09 +01:00
parent da8a0d7624
commit c33fc76b02
3 changed files with 16 additions and 21 deletions

View File

@ -37,6 +37,7 @@ typedef enum {
zoomin, zoomin,
zoomout, zoomout,
zoom_reset, zoom_reset,
new_tab,
next_tab, next_tab,
prev_tab, prev_tab,
close_tab, close_tab,
@ -44,7 +45,6 @@ typedef enum {
show_finder, show_finder,
finder_next, finder_next,
finder_prev, finder_prev,
new_tab,
prettify, prettify,
hide_bar hide_bar
} func; } func;
@ -66,13 +66,13 @@ static struct {
{ CTRL, KEY(equal), zoomin }, { CTRL, KEY(equal), zoomin },
{ CTRL, KEY(minus), zoomout }, { CTRL, KEY(minus), zoomout },
{ CTRL, KEY(0), zoom_reset }, { CTRL, KEY(0), zoom_reset },
{ CTRL, KEY(Page_Up), prev_tab }, { CTRL, KEY(Page_Up), prev_tab },
{ CTRL, KEY(Page_Down), next_tab }, { CTRL, KEY(Page_Down), next_tab },
{ CTRL, KEY(t), next_tab }, { CTRL, KEY(t), new_tab },
{ CTRL, KEY(w), close_tab }, { CTRL, KEY(w), close_tab },
{ 0x0, KEY(F11), toggle_fullscreen }, { 0x0, KEY(F11), toggle_fullscreen },
{ CTRL, KEY(l), show_searchbar }, { CTRL, KEY(l), show_searchbar },
{ CTRL, KEY(semicolon), hide_bar }, { CTRL, KEY(semicolon), hide_bar },
{ CTRL, KEY(f), show_finder }, { CTRL, KEY(f), show_finder },
{ CTRL, KEY(n), finder_next }, { CTRL, KEY(n), finder_next },
{ CTRL | SFT, KEY(N), finder_prev }, { CTRL | SFT, KEY(N), finder_prev },

BIN
rose

Binary file not shown.

27
rose.c
View File

@ -316,24 +316,19 @@ int handle_key(func id, GtkNotebook* notebook)
(zoom = ZOOM)); (zoom = ZOOM));
break; break;
case prev_tab: case prev_tab:; // declarations aren't statements
if (gtk_notebook_get_current_page(notebook) == 0) { // <https://stackoverflow.com/questions/92396/why-cant-variables-be-declared-in-a-switch-statement>
gtk_notebook_set_current_page(notebook, int n = gtk_notebook_get_n_pages(notebook);
gtk_notebook_get_n_pages(notebook) - 1); int k = gtk_notebook_get_current_page(notebook);
} else { int l = (n + k - 1) % n;
gtk_notebook_prev_page(notebook); gtk_notebook_set_current_page(notebook, l);
}
break; break;
case next_tab: case next_tab:;
if (gtk_notebook_get_current_page(notebook) == gtk_notebook_get_n_pages(notebook) - 1) { int m = gtk_notebook_get_n_pages(notebook);
notebook_append(notebook, NULL); int i = gtk_notebook_get_current_page(notebook);
gtk_notebook_set_show_tabs(notebook, true); int j = (i + 1) % m;
webkit_web_view_set_zoom_level(notebook_get_webview(notebook), zoom); gtk_notebook_set_current_page(notebook, j);
} else {
gtk_notebook_next_page(notebook);
}
break; break;
case close_tab: case close_tab: