From cd3a526a667083e24dd0d98c9b33ee42dd85f081 Mon Sep 17 00:00:00 2001 From: Jasmine Hassan Date: Mon, 5 Nov 2012 04:07:50 +0200 Subject: [general] Adds option to open new tab in tab bar context menu http://git.gnome.org/browse/nautilus/commit/?id=8598d769993843e1e6529a661fea034785ca0091 --- src/caja-navigation-window-menus.c | 33 +-------------------------------- src/caja-navigation-window-pane.c | 20 ++++++++++++++++++++ src/caja-window.c | 35 +++++++++++++++++++++++++++++++++++ src/caja-window.h | 1 + 4 files changed, 57 insertions(+), 32 deletions(-) diff --git a/src/caja-navigation-window-menus.c b/src/caja-navigation-window-menus.c index e6454f85..825bc8a5 100644 --- a/src/caja-navigation-window-menus.c +++ b/src/caja-navigation-window-menus.c @@ -620,40 +620,9 @@ action_new_tab_callback (GtkAction *action, gpointer user_data) { CajaWindow *window; - CajaWindowSlot *current_slot; - CajaWindowSlot *new_slot; - CajaWindowOpenFlags flags; - GFile *location; - int new_slot_position; - char *scheme; window = CAJA_WINDOW (user_data); - current_slot = window->details->active_pane->active_slot; - location = caja_window_slot_get_location (current_slot); - - if (location != NULL) - { - flags = 0; - - new_slot_position = g_settings_get_enum (caja_preferences, CAJA_PREFERENCES_NEW_TAB_POSITION); - if (new_slot_position == CAJA_NEW_TAB_POSITION_END) - { - flags = CAJA_WINDOW_OPEN_SLOT_APPEND; - } - - scheme = g_file_get_uri_scheme (location); - if (!strcmp (scheme, "x-caja-search")) - { - g_object_unref (location); - location = g_file_new_for_path (g_get_home_dir ()); - } - g_free (scheme); - - new_slot = caja_window_open_slot (current_slot->pane, flags); - caja_window_set_active_slot (window, new_slot); - caja_window_slot_go_to (new_slot, location, FALSE); - g_object_unref (location); - } + caja_window_new_tab (window); } static void diff --git a/src/caja-navigation-window-pane.c b/src/caja-navigation-window-pane.c index b4b6ceaf..da71661b 100644 --- a/src/caja-navigation-window-pane.c +++ b/src/caja-navigation-window-pane.c @@ -352,6 +352,16 @@ path_bar_button_drag_begin_callback (GtkWidget *widget, GINT_TO_POINTER (FALSE)); } +static void +notebook_popup_menu_new_tab_cb (GtkMenuItem *menuitem, + gpointer user_data) +{ + CajaWindowPane *pane; + + pane = CAJA_WINDOW_PANE (user_data); + caja_window_new_tab (pane->window); +} + static void path_bar_path_set_callback (GtkWidget *widget, GFile *location, @@ -442,6 +452,16 @@ notebook_popup_menu_show (CajaNavigationWindowPane *pane, popup = gtk_menu_new(); + item = gtk_menu_item_new_with_mnemonic (_("_New Tab")); + g_signal_connect (item, "activate", + G_CALLBACK (notebook_popup_menu_new_tab_cb), + pane); + gtk_menu_shell_append (GTK_MENU_SHELL (popup), + item); + + gtk_menu_shell_append (GTK_MENU_SHELL (popup), + gtk_separator_menu_item_new ()); + item = gtk_menu_item_new_with_mnemonic (_("Move Tab _Left")); g_signal_connect (item, "activate", G_CALLBACK (notebook_popup_menu_move_left_cb), diff --git a/src/caja-window.c b/src/caja-window.c index 29830511..8e9ed5bb 100644 --- a/src/caja-window.c +++ b/src/caja-window.c @@ -251,6 +251,41 @@ caja_window_go_up_signal (CajaWindow *window, gboolean close_behind) return TRUE; } +void +caja_window_new_tab (CajaWindow *window) +{ + CajaWindowSlot *current_slot; + CajaWindowSlot *new_slot; + CajaWindowOpenFlags flags; + GFile *location; + int new_slot_position; + char *scheme; + + current_slot = window->details->active_pane->active_slot; + location = caja_window_slot_get_location (current_slot); + + if (location != NULL) { + flags = 0; + + new_slot_position = g_settings_get_enum (caja_preferences, CAJA_PREFERENCES_NEW_TAB_POSITION); + if (new_slot_position == CAJA_NEW_TAB_POSITION_END) { + flags = CAJA_WINDOW_OPEN_SLOT_APPEND; + } + + scheme = g_file_get_uri_scheme (location); + if (!strcmp (scheme, "x-caja-search")) { + g_object_unref (location); + location = g_file_new_for_path (g_get_home_dir ()); + } + g_free (scheme); + + new_slot = caja_window_open_slot (current_slot->pane, flags); + caja_window_set_active_slot (window, new_slot); + caja_window_slot_go_to (new_slot, location, FALSE); + g_object_unref (location); + } +} + void caja_window_go_up (CajaWindow *window, gboolean close_behind, gboolean new_tab) { diff --git a/src/caja-window.h b/src/caja-window.h index 46b0fd44..d13129a7 100644 --- a/src/caja-window.h +++ b/src/caja-window.h @@ -141,6 +141,7 @@ void caja_window_go_to_with_selection (CajaWindow *window, GFile *location, GList *new_selection); void caja_window_go_home (CajaWindow *window); +void caja_window_new_tab (CajaWindow *window); void caja_window_go_up (CajaWindow *window, gboolean close_behind, gboolean new_tab); -- cgit v1.2.1