From 4e7c2eeab695b5fc3c0e6123800ced1c767f7e85 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Techet?= Date: Sat, 5 Oct 2019 09:13:35 -0700 Subject: [PATCH] projectorganizer: Add a keybinding for for focusing the sidebar --- projectorganizer/src/prjorg-menu.c | 4 ++++ projectorganizer/src/prjorg-sidebar.c | 19 +++++++++++++++++++ projectorganizer/src/prjorg-sidebar.h | 1 + 3 files changed, 24 insertions(+) diff --git a/projectorganizer/src/prjorg-menu.c b/projectorganizer/src/prjorg-menu.c index fe773cff6..9d5ac6355 100644 --- a/projectorganizer/src/prjorg-menu.c +++ b/projectorganizer/src/prjorg-menu.c @@ -42,6 +42,7 @@ enum KB_FIND_IN_PROJECT, KB_FIND_FILE, KB_FIND_TAG, + KB_FOCUS_SIDEBAR, KB_COUNT }; @@ -417,6 +418,9 @@ void prjorg_menu_init(void) keybindings_set_item(key_group, KB_SWAP_HEADER_SOURCE, NULL, 0, 0, "swap_header_source", _("Swap header/source"), s_shs_item); + keybindings_set_item(key_group, KB_FOCUS_SIDEBAR, (GeanyKeyCallback)prjorg_sidebar_focus_project_tab, + 0, 0, "focus_project_sidebar", _("Focus Project Sidebar"), NULL); + s_context_sep_item = gtk_separator_menu_item_new(); gtk_widget_show(s_context_sep_item); gtk_menu_shell_prepend(GTK_MENU_SHELL(geany->main_widgets->editor_menu), s_context_sep_item); diff --git a/projectorganizer/src/prjorg-sidebar.c b/projectorganizer/src/prjorg-sidebar.c index 2659fe00e..d1dc0d97b 100644 --- a/projectorganizer/src/prjorg-sidebar.c +++ b/projectorganizer/src/prjorg-sidebar.c @@ -1493,6 +1493,25 @@ void prjorg_sidebar_find_tag_in_active(void) } +void prjorg_sidebar_focus_project_tab(void) +{ + GtkNotebook *notebook = GTK_NOTEBOOK(geany_data->main_widgets->sidebar_notebook); + gint pagenum = gtk_notebook_get_n_pages(notebook); + gint i; + + for (i = 0; i < pagenum; i++) + { + GtkWidget *page = gtk_notebook_get_nth_page(notebook, i); + if (page == s_file_view_vbox) + { + gtk_notebook_set_current_page(notebook, i); + gtk_widget_grab_focus(s_file_view); + break; + } + } +} + + static void sidebar_realized_cb (GtkWidget *widget) { if (s_pending_reload) prjorg_sidebar_update(TRUE); diff --git a/projectorganizer/src/prjorg-sidebar.h b/projectorganizer/src/prjorg-sidebar.h index 5c1423428..1b51fe211 100644 --- a/projectorganizer/src/prjorg-sidebar.h +++ b/projectorganizer/src/prjorg-sidebar.h @@ -29,6 +29,7 @@ void prjorg_sidebar_find_tag_in_active(void); void prjorg_sidebar_update(gboolean reload); +void prjorg_sidebar_focus_project_tab(void); #endif