diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/keys.cc | 10 | ||||
-rw-r--r-- | src/keys.hh | 12 | ||||
-rw-r--r-- | src/keysrc | 12 | ||||
-rw-r--r-- | src/ui.cc | 4 | ||||
-rw-r--r-- | src/uicmd.cc | 21 | ||||
-rw-r--r-- | src/uicmd.hh | 1 |
6 files changed, 59 insertions, 1 deletions
diff --git a/src/keys.cc b/src/keys.cc index 2a97a160..d94e5918 100644 --- a/src/keys.cc +++ b/src/keys.cc @@ -144,6 +144,16 @@ static const KeyBinding_t default_keys[] = { { "zoom-in" , KEYS_ZOOM_IN , FL_CTRL , '=' /* US + */ }, { "zoom-out" , KEYS_ZOOM_OUT , FL_CTRL , '-' }, { "zoom-reset" , KEYS_ZOOM_RESET , FL_CTRL , '0' }, + { "focus-tab1" , KEYS_FOCUS_TAB1 , FL_ALT , '1' }, + { "focus-tab2" , KEYS_FOCUS_TAB2 , FL_ALT , '2' }, + { "focus-tab3" , KEYS_FOCUS_TAB3 , FL_ALT , '3' }, + { "focus-tab4" , KEYS_FOCUS_TAB4 , FL_ALT , '4' }, + { "focus-tab5" , KEYS_FOCUS_TAB5 , FL_ALT , '5' }, + { "focus-tab6" , KEYS_FOCUS_TAB6 , FL_ALT , '6' }, + { "focus-tab7" , KEYS_FOCUS_TAB7 , FL_ALT , '7' }, + { "focus-tab8" , KEYS_FOCUS_TAB8 , FL_ALT , '8' }, + { "focus-tab9" , KEYS_FOCUS_TAB9 , FL_ALT , '9' }, + { "focus-tab10" , KEYS_FOCUS_TAB10 , FL_ALT , '0' }, }; static Dlist *bindings; diff --git a/src/keys.hh b/src/keys.hh index 72b62d18..6a2c82c7 100644 --- a/src/keys.hh +++ b/src/keys.hh @@ -52,7 +52,17 @@ typedef enum { KEYS_COPY, KEYS_ZOOM_IN, KEYS_ZOOM_OUT, - KEYS_ZOOM_RESET + KEYS_ZOOM_RESET, + KEYS_FOCUS_TAB1, + KEYS_FOCUS_TAB2, + KEYS_FOCUS_TAB3, + KEYS_FOCUS_TAB4, + KEYS_FOCUS_TAB5, + KEYS_FOCUS_TAB6, + KEYS_FOCUS_TAB7, + KEYS_FOCUS_TAB8, + KEYS_FOCUS_TAB9, + KEYS_FOCUS_TAB10 } KeysCommand_t; class Keys { @@ -95,6 +95,18 @@ # "zoom-reset" resets the zoom to 100%. #<ctrl>0 = zoom-reset +# "focus-tab<N>" focus the N-th tab (starting in 1). +#<alt>1 = focus-tab1 +#<alt>2 = focus-tab2 +#<alt>3 = focus-tab3 +#<alt>4 = focus-tab4 +#<alt>5 = focus-tab5 +#<alt>6 = focus-tab6 +#<alt>7 = focus-tab7 +#<alt>8 = focus-tab8 +#<alt>9 = focus-tab9 +#<alt>0 = focus-tab10 + #-------------------------------------------------------------------- # MOTION COMMANDS #-------------------------------------------------------------------- @@ -794,6 +794,10 @@ int UI::handle(int event) const DilloUrl *url = a_History_get_url(NAV_TOP_UIDX(bw)); a_UIcmd_view_page_source(bw, url); ret = 1; + } else if (cmd >= KEYS_FOCUS_TAB1 && cmd <= KEYS_FOCUS_TAB10) { + int index = cmd - KEYS_FOCUS_TAB1; /* zero-based index */ + a_UIcmd_focus_tab(a_UIcmd_get_bw_by_widget(this), index); + ret = 1; } } else if (event == FL_RELEASE) { if (Fl::event_button() == FL_MIDDLE_MOUSE && diff --git a/src/uicmd.cc b/src/uicmd.cc index a46fd7c5..957bedd7 100644 --- a/src/uicmd.cc +++ b/src/uicmd.cc @@ -189,6 +189,7 @@ public: Fl_Wizard *wizard(void) { return Wizard; } int num_tabs() { return (Pack ? Pack->children() : 0); } void switch_tab(CustTabButton *cbtn); + void switch_tab(int index); void prev_tab(void); void next_tab(void); void set_tab_label(UI *ui, const char *title); @@ -487,6 +488,15 @@ void CustTabs::next_tab() } /** + * Make index tab the active one, starting from 0. + */ +void CustTabs::switch_tab(int index) +{ + if (index >= 0 && index < num_tabs()) + switch_tab((CustTabButton*)Pack->child(index)); +} + +/** * Set this UI's tab button label. */ void CustTabs::set_tab_label(UI *ui, const char *label) @@ -1684,3 +1694,14 @@ void a_UIcmd_focus_location(void *vbw) BW2UI(bw)->focus_location(); } +/* + * Focus the tab at index, starting from 0. + */ +void a_UIcmd_focus_tab(void *vbw, int index) +{ + BrowserWindow *bw = (BrowserWindow*)vbw; + UI *ui = BW2UI(bw); + CustTabs *tabs = ui->tabs(); + if (tabs) + tabs->switch_tab(index); +} diff --git a/src/uicmd.hh b/src/uicmd.hh index 581eac30..7ef676e9 100644 --- a/src/uicmd.hh +++ b/src/uicmd.hh @@ -74,6 +74,7 @@ void a_UIcmd_view_page_bugs(void *vbw); void a_UIcmd_bugmeter_popup(void *vbw); int *a_UIcmd_get_history(BrowserWindow *bw, int direction); void a_UIcmd_nav_jump(BrowserWindow *bw, int offset, int new_bw); +void a_UIcmd_focus_tab(void *vbw, int index); void a_UIcmd_close_bw(void *vbw); void a_UIcmd_close_all_bw(void *p); |