Branch: refs/heads/master Author: Matthew Brush matt@geany.org Committer: Matthew Brush mbrush@codebrainz.ca Date: Fri, 04 Aug 2017 08:55:43 UTC Commit: a40823084e1615e04464f974f616794a7b3570da https://github.com/geany/geany/commit/a40823084e1615e04464f974f616794a7b3570...
Log Message: ----------- Add "Close Documents to the Right" feature
Similar to applications like Firefox and Chromium.
Modified Paths: -------------- src/notebook.c
Modified: src/notebook.c 29 lines changed, 29 insertions(+), 0 deletions(-) =================================================================== @@ -430,6 +430,29 @@ static void on_open_in_new_window_activate(GtkMenuItem *menuitem, gpointer user_ }
+static gboolean has_tabs_on_right(GeanyDocument *doc) +{ + GtkNotebook *nb = GTK_NOTEBOOK(main_widgets.notebook); + gint total_pages = gtk_notebook_get_n_pages(nb); + gint doc_page = document_get_notebook_page(doc); + return total_pages > (doc_page + 1); +} + + +void on_close_documents_right_activate(GtkMenuItem *menuitem, GeanyDocument *doc) +{ + g_return_if_fail(has_tabs_on_right(doc)); + GtkNotebook *nb = GTK_NOTEBOOK(main_widgets.notebook); + gint doc_page = document_get_notebook_page(doc); + for (gint i = doc_page + 1; i < gtk_notebook_get_n_pages(nb); ) + { + if (! document_close(document_get_from_page(i))) + i++; // only increment if tab wasn't closed + } + gtk_notebook_set_current_page(nb, doc_page); +} + + static void show_tab_bar_popup_menu(GdkEventButton *event, GeanyDocument *doc) { GtkWidget *menu_item; @@ -473,6 +496,12 @@ static void show_tab_bar_popup_menu(GdkEventButton *event, GeanyDocument *doc) g_signal_connect(menu_item, "activate", G_CALLBACK(on_close_other_documents1_activate), doc); gtk_widget_set_sensitive(GTK_WIDGET(menu_item), (doc != NULL));
+ menu_item = ui_image_menu_item_new(GTK_STOCK_CLOSE, _("Close Documents to the _Right")); + gtk_widget_show(menu_item); + gtk_container_add(GTK_CONTAINER(menu), menu_item); + g_signal_connect(menu_item, "activate", G_CALLBACK(on_close_documents_right_activate), doc); + gtk_widget_set_sensitive(GTK_WIDGET(menu_item), has_tabs_on_right(doc)); + menu_item = ui_image_menu_item_new(GTK_STOCK_CLOSE, _("C_lose All")); gtk_widget_show(menu_item); gtk_container_add(GTK_CONTAINER(menu), menu_item);
-------------- This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).