summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorChristian Neumair <cneumair@gnome.org>2008-05-30 20:46:51 +0000
committerChristian Neumair <cneumair@src.gnome.org>2008-05-30 20:46:51 +0000
commit8cf25a3fc9a08d2bceaaaccb82b4d8fd72b80e4b (patch)
tree339dbfe82c39d3efcc5e9aaa64d89eff3a5dc0ee
parent7f6d0cd92c63b0135a4577ecc6f32efe630d428b (diff)
downloadnautilus-8cf25a3fc9a08d2bceaaaccb82b4d8fd72b80e4b.tar.gz
Make "New Tab" appear above "New Window" menu items. Add GConf keys for
2008-05-30 Christian Neumair <cneumair@gnome.org> * libnautilus-private/apps_nautilus_preferences.schemas.in: * libnautilus-private/nautilus-global-preferences.c (global_preferences_register_enumerations): * libnautilus-private/nautilus-global-preferences.h: * src/file-manager/fm-directory-view.c (open_one_in_new_tab), (real_update_menus): * src/file-manager/fm-icon-view.c (icon_container_activate_alternate_callback): * src/file-manager/nautilus-directory-view-ui.xml: * src/nautilus-actions.h: * src/nautilus-navigation-window-menus.c (nautilus_navigation_window_update_tab_menu_item_visibility), (action_new_tab_callback), (nautilus_navigation_window_initialize_menus): * src/nautilus-navigation-window-ui.xml: * src/nautilus-navigation-window.c (nautilus_navigation_window_init), (enable_tabs_changed): * src/nautilus-window-manage-views.c (nautilus_window_slot_open_location_full): * src/nautilus-window-private.h: Make "New Tab" appear above "New Window" menu items. Add GConf keys for enabling tab support, and for determining whether a tab should be opened after the current tab, or at the end. Show/hide tab widgets depending on the preferences. svn path=/branches/multiview/; revision=14210
-rw-r--r--ChangeLog27
-rw-r--r--libnautilus-private/apps_nautilus_preferences.schemas.in30
-rw-r--r--libnautilus-private/nautilus-global-preferences.c18
-rw-r--r--libnautilus-private/nautilus-global-preferences.h8
-rw-r--r--src/file-manager/fm-directory-view.c7
-rw-r--r--src/file-manager/fm-icon-view.c2
-rw-r--r--src/file-manager/nautilus-directory-view-ui.xml2
-rw-r--r--src/nautilus-actions.h2
-rw-r--r--src/nautilus-navigation-window-menus.c34
-rw-r--r--src/nautilus-navigation-window-ui.xml2
-rw-r--r--src/nautilus-navigation-window.c15
-rw-r--r--src/nautilus-window-manage-views.c12
-rw-r--r--src/nautilus-window-private.h1
13 files changed, 154 insertions, 6 deletions
diff --git a/ChangeLog b/ChangeLog
index ee55bc65f..c5e7d7a2e 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,30 @@
+2008-05-30 Christian Neumair <cneumair@gnome.org>
+
+ * libnautilus-private/apps_nautilus_preferences.schemas.in:
+ * libnautilus-private/nautilus-global-preferences.c
+ (global_preferences_register_enumerations):
+ * libnautilus-private/nautilus-global-preferences.h:
+ * src/file-manager/fm-directory-view.c (open_one_in_new_tab),
+ (real_update_menus):
+ * src/file-manager/fm-icon-view.c
+ (icon_container_activate_alternate_callback):
+ * src/file-manager/nautilus-directory-view-ui.xml:
+ * src/nautilus-actions.h:
+ * src/nautilus-navigation-window-menus.c
+ (nautilus_navigation_window_update_tab_menu_item_visibility),
+ (action_new_tab_callback),
+ (nautilus_navigation_window_initialize_menus):
+ * src/nautilus-navigation-window-ui.xml:
+ * src/nautilus-navigation-window.c
+ (nautilus_navigation_window_init), (enable_tabs_changed):
+ * src/nautilus-window-manage-views.c
+ (nautilus_window_slot_open_location_full):
+ * src/nautilus-window-private.h:
+ Make "New Tab" appear above "New Window" menu items.
+ Add GConf keys for enabling tab support, and for determining
+ whether a tab should be opened after the current tab, or at the end.
+ Show/hide tab widgets depending on the preferences.
+
2008-05-26 Christian Neumair <cneumair@gnome.org>
* src/nautilus-navigation-window-menus.c (reload_tab_menu),
diff --git a/libnautilus-private/apps_nautilus_preferences.schemas.in b/libnautilus-private/apps_nautilus_preferences.schemas.in
index bbdfddcc9..3104c0d42 100644
--- a/libnautilus-private/apps_nautilus_preferences.schemas.in
+++ b/libnautilus-private/apps_nautilus_preferences.schemas.in
@@ -69,6 +69,36 @@
</schema>
<schema>
+ <key>/schemas/desktop/gnome/file_views/tabs_enable</key>
+ <applyto>/desktop/gnome/file_views/tabs_enable</applyto>
+ <owner>nautilus</owner>
+ <type>bool</type>
+ <default>true</default>
+ <locale name="C">
+ <short>Whether to enable tabs in Nautilus browser windows</short>
+ <long>
+ If set to true, then multiple views can be opened in one browser window,
+ each in a separate tab.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
+ <key>/schemas/desktop/gnome/file_views/tabs_open_position</key>
+ <applyto>/desktop/gnome/file_views/tabs_open_position</applyto>
+ <owner>nautilus</owner>
+ <type>string</type>
+ <default>after_current_tab</default>
+ <locale name="C">
+ <short>Where to position newly open tabs in browser windows.</short>
+ <long>
+ If set to "after_current_tab", then new tabs are inserted after the current tab.
+ If set to "end", then new tabs are appended to the end of the tab list.
+ </long>
+ </locale>
+ </schema>
+
+ <schema>
<key>/schemas/apps/nautilus/preferences/media_automount</key>
<applyto>/apps/nautilus/preferences/media_automount</applyto>
<owner>nautilus</owner>
diff --git a/libnautilus-private/nautilus-global-preferences.c b/libnautilus-private/nautilus-global-preferences.c
index 5f4f49860..e4b301765 100644
--- a/libnautilus-private/nautilus-global-preferences.c
+++ b/libnautilus-private/nautilus-global-preferences.c
@@ -169,6 +169,11 @@ static EelEnumerationEntry date_format_entries[] = {
{ "informal", "Informal", NAUTILUS_DATE_FORMAT_INFORMAL }
};
+static EelEnumerationEntry new_tab_position_entries[] = {
+ { "after_current_tab", "After Current Tab", NAUTILUS_NEW_TAB_POSITION_AFTER_CURRENT_TAB },
+ { "end", "End", NAUTILUS_NEW_TAB_POSITION_END }
+};
+
/*
* A callback which can be used to fetch dynamic fallback values.
* For example, values that are dependent on the environment (such as user name)
@@ -331,6 +336,16 @@ static const PreferenceDefault preference_defaults[] = {
PREFERENCE_BOOLEAN,
GINT_TO_POINTER (FALSE)
},
+ { NAUTILUS_PREFERENCES_ENABLE_TABS,
+ PREFERENCE_BOOLEAN,
+ GINT_TO_POINTER (TRUE)
+ },
+ { NAUTILUS_PREFERENCES_NEW_TAB_POSITION,
+ PREFERENCE_STRING,
+ "after_current_tab",
+ NULL, NULL,
+ "new_tab_position"
+ },
{ NAUTILUS_PREFERENCES_START_WITH_TOOLBAR,
PREFERENCE_BOOLEAN,
GINT_TO_POINTER (TRUE)
@@ -594,6 +609,9 @@ global_preferences_register_enumerations (void)
eel_enumeration_register ("date_format",
date_format_entries,
G_N_ELEMENTS (date_format_entries));
+ eel_enumeration_register ("new_tab_position",
+ new_tab_position_entries,
+ G_N_ELEMENTS (new_tab_position_entries));
/* Set the enumeration ids for preferences that need them */
for (i = 0; preference_defaults[i].name != NULL; i++) {
diff --git a/libnautilus-private/nautilus-global-preferences.h b/libnautilus-private/nautilus-global-preferences.h
index e6d030190..ac5a94b39 100644
--- a/libnautilus-private/nautilus-global-preferences.h
+++ b/libnautilus-private/nautilus-global-preferences.h
@@ -78,6 +78,12 @@ typedef enum
NAUTILUS_DATE_FORMAT_INFORMAL
} NautilusDateFormat;
+typedef enum
+{
+ NAUTILUS_NEW_TAB_POSITION_AFTER_CURRENT_TAB,
+ NAUTILUS_NEW_TAB_POSITION_END,
+} NautilusNewTabPosition;
+
/* Sidebar panels */
#define NAUTILUS_PREFERENCES_TREE_SHOW_ONLY_DIRECTORIES "sidebar_panels/tree/show_only_directories"
@@ -89,6 +95,8 @@ typedef enum
/* Spatial or browser mode */
#define NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER "preferences/always_use_browser"
+#define NAUTILUS_PREFERENCES_ENABLE_TABS "preferences/tabs_enable"
+#define NAUTILUS_PREFERENCES_NEW_TAB_POSITION "preferences/tabs_open_position"
/* Which views should be displayed for new windows */
#define NAUTILUS_PREFERENCES_START_WITH_LOCATION_BAR "preferences/start_with_location_bar"
diff --git a/src/file-manager/fm-directory-view.c b/src/file-manager/fm-directory-view.c
index ee416ac01..a7aec49f3 100644
--- a/src/file-manager/fm-directory-view.c
+++ b/src/file-manager/fm-directory-view.c
@@ -3989,6 +3989,10 @@ open_one_in_new_tab (gpointer data, gpointer callback_data)
g_assert (NAUTILUS_IS_FILE (data));
g_assert (FM_IS_DIRECTORY_VIEW (callback_data));
+ if (!eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
+ return;
+ }
+
fm_directory_view_activate_file (FM_DIRECTORY_VIEW (callback_data),
NAUTILUS_FILE (data),
NAUTILUS_WINDOW_OPEN_ACCORDING_TO_MODE,
@@ -7198,7 +7202,8 @@ real_update_menus (FMDirectoryView *view)
gtk_action_set_visible (action, show_open_alternate);
/* Open in New Tab action */
- if (nautilus_window_info_get_window_type (view->details->window) == NAUTILUS_WINDOW_NAVIGATION) {
+ if (nautilus_window_info_get_window_type (view->details->window) == NAUTILUS_WINDOW_NAVIGATION &&
+ eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
if (selection_count == 0 || selection_count == 1) {
label_with_underscore = g_strdup (_("Open in New Tab"));
} else {
diff --git a/src/file-manager/fm-icon-view.c b/src/file-manager/fm-icon-view.c
index 0cb8b3cce..6a9e5bb2c 100644
--- a/src/file-manager/fm-icon-view.c
+++ b/src/file-manager/fm-icon-view.c
@@ -1755,7 +1755,7 @@ icon_container_activate_alternate_callback (NautilusIconContainer *container,
}
flags = NAUTILUS_WINDOW_OPEN_FLAG_CLOSE_BEHIND;
- if (open_in_tab) {
+ if (open_in_tab && eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
flags |= NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB;
} else {
flags |= NAUTILUS_WINDOW_OPEN_FLAG_NEW_WINDOW;
diff --git a/src/file-manager/nautilus-directory-view-ui.xml b/src/file-manager/nautilus-directory-view-ui.xml
index 8fbb751f0..60271e339 100644
--- a/src/file-manager/nautilus-directory-view-ui.xml
+++ b/src/file-manager/nautilus-directory-view-ui.xml
@@ -17,8 +17,8 @@
</placeholder>
<placeholder name="Open Placeholder">
<menuitem name="Open" action="Open"/>
- <menuitem name="OpenAlternate" action="OpenAlternate"/>
<menuitem name="OpenInNewTab" action="OpenInNewTab"/>
+ <menuitem name="OpenAlternate" action="OpenAlternate"/>
<placeholder name="Applications Placeholder">
</placeholder>
<menu action="Open With">
diff --git a/src/nautilus-actions.h b/src/nautilus-actions.h
index b3d839cc3..bbf9e43aa 100644
--- a/src/nautilus-actions.h
+++ b/src/nautilus-actions.h
@@ -50,5 +50,7 @@
#define NAUTILUS_ACTION_CLOSE "Close"
#define NAUTILUS_ACTION_SEARCH "Search"
#define NAUTILUS_ACTION_FOLDER_WINDOW "Folder Window"
+#define NAUTILUS_ACTION_TABS "Tabs"
+#define NAUTILUS_ACTION_NEW_TAB "New Tab"
#endif /* NAUTILUS_ACTIONS_H */
diff --git a/src/nautilus-navigation-window-menus.c b/src/nautilus-navigation-window-menus.c
index cd45acb54..8ca70b11e 100644
--- a/src/nautilus-navigation-window-menus.c
+++ b/src/nautilus-navigation-window-menus.c
@@ -245,6 +245,23 @@ nautilus_navigation_window_update_spatial_menu_item (NautilusNavigationWindow *w
!eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER));
}
+void
+nautilus_navigation_window_update_tab_menu_item_visibility (NautilusNavigationWindow *window)
+{
+ GtkAction *action;
+
+ action = gtk_action_group_get_action (window->details->navigation_action_group,
+ NAUTILUS_ACTION_TABS);
+ gtk_action_set_visible (action,
+ eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS));
+
+ action = gtk_action_group_get_action (window->details->navigation_action_group,
+ NAUTILUS_ACTION_NEW_TAB);
+ gtk_action_set_visible (action,
+ eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS));
+
+}
+
static void
action_add_bookmark_callback (GtkAction *action,
gpointer user_data)
@@ -491,7 +508,13 @@ action_new_tab_callback (GtkAction *action,
NautilusWindow *window;
NautilusWindowSlot *current_slot;
NautilusWindowSlot *new_slot;
+ NautilusWindowOpenFlags flags;
GFile *current_location;
+ int new_slot_position;
+
+ if (!eel_preferences_get_boolean (NAUTILUS_PREFERENCES_ENABLE_TABS)) {
+ return;
+ }
window = NAUTILUS_WINDOW (user_data);
current_slot = window->details->active_slot;
@@ -500,7 +523,15 @@ action_new_tab_callback (GtkAction *action,
window = NAUTILUS_WINDOW (current_slot->window);
if (current_location != NULL) {
- new_slot = nautilus_window_open_slot (window, 0);
+ flags = 0;
+
+ new_slot_position = eel_preferences_get_enum (NAUTILUS_PREFERENCES_NEW_TAB_POSITION);
+ if (new_slot_position == NAUTILUS_NEW_TAB_POSITION_END) {
+ flags = NAUTILUS_WINDOW_OPEN_SLOT_APPEND;
+ }
+
+
+ new_slot = nautilus_window_open_slot (window, flags);
nautilus_window_set_active_slot (window, new_slot);
nautilus_window_slot_go_to (new_slot, current_location);
g_object_unref (current_location);
@@ -742,6 +773,7 @@ nautilus_navigation_window_initialize_menus (NautilusNavigationWindow *window)
nautilus_navigation_window_update_show_hide_menu_items (window);
nautilus_navigation_window_update_spatial_menu_item (window);
+ nautilus_navigation_window_update_tab_menu_item_visibility (window);
nautilus_navigation_window_initialize_go_menu (window);
nautilus_navigation_window_initialize_tabs_menu (window);
diff --git a/src/nautilus-navigation-window-ui.xml b/src/nautilus-navigation-window-ui.xml
index 5e504c9d9..7abadb11d 100644
--- a/src/nautilus-navigation-window-ui.xml
+++ b/src/nautilus-navigation-window-ui.xml
@@ -2,8 +2,8 @@
<menubar name="MenuBar">
<menu action="File">
<placeholder name="New Items Placeholder">
- <menuitem name="New Window" action="New Window"/>
<menuitem name="New Tab" action="New Tab"/>
+ <menuitem name="New Window" action="New Window"/>
<menuitem name="Folder Window" action="Folder Window"/>
<separator/>
</placeholder>
diff --git a/src/nautilus-navigation-window.c b/src/nautilus-navigation-window.c
index 120bee7d5..b24ea5be0 100644
--- a/src/nautilus-navigation-window.c
+++ b/src/nautilus-navigation-window.c
@@ -114,6 +114,7 @@ static void path_bar_location_changed_callback (GtkWidget *
NautilusNavigationWindow *window);
static void always_use_location_entry_changed (gpointer callback_data);
static void always_use_browser_changed (gpointer callback_data);
+static void enable_tabs_changed (gpointer callback_data);
static void nautilus_navigation_window_set_bar_mode (NautilusNavigationWindow *window,
NautilusBarMode mode);
@@ -386,6 +387,10 @@ nautilus_navigation_window_init (NautilusNavigationWindow *window)
eel_preferences_add_callback_while_alive (NAUTILUS_PREFERENCES_ALWAYS_USE_BROWSER,
always_use_browser_changed,
window, G_OBJECT (window));
+
+ eel_preferences_add_callback_while_alive (NAUTILUS_PREFERENCES_ENABLE_TABS,
+ enable_tabs_changed,
+ window, G_OBJECT (window));
}
static void
@@ -423,6 +428,16 @@ always_use_browser_changed (gpointer callback_data)
nautilus_navigation_window_update_spatial_menu_item (window);
}
+static void
+enable_tabs_changed (gpointer callback_data)
+{
+ NautilusNavigationWindow *window;
+
+ window = NAUTILUS_NAVIGATION_WINDOW (callback_data);
+
+ nautilus_navigation_window_update_tab_menu_item_visibility (window);
+}
+
static int
bookmark_list_get_uri_index (GList *list,
GFile *location)
diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c
index d8bb2fd0a..5dc6d48b6 100644
--- a/src/nautilus-window-manage-views.c
+++ b/src/nautilus-window-manage-views.c
@@ -488,9 +488,11 @@ nautilus_window_slot_open_location_full (NautilusWindowSlot *slot,
NautilusWindow *window;
NautilusWindow *target_window;
NautilusWindowSlot *target_slot;
+ NautilusWindowOpenFlags slot_flags;
gboolean do_load_location = TRUE;
GFile *old_location;
char *old_uri, *new_uri;
+ int new_slot_position;
window = slot->window;
@@ -582,7 +584,15 @@ nautilus_window_slot_open_location_full (NautilusWindowSlot *slot,
if ((flags & NAUTILUS_WINDOW_OPEN_FLAG_NEW_TAB) != 0 &&
NAUTILUS_IS_NAVIGATION_WINDOW (window)) {
g_assert (target_window == window);
- target_slot = nautilus_window_open_slot (window, 0);
+
+ slot_flags = 0;
+
+ new_slot_position = eel_preferences_get_enum (NAUTILUS_PREFERENCES_NEW_TAB_POSITION);
+ if (new_slot_position == NAUTILUS_NEW_TAB_POSITION_END) {
+ slot_flags = NAUTILUS_WINDOW_OPEN_SLOT_APPEND;
+ }
+
+ target_slot = nautilus_window_open_slot (window, slot_flags);
}
if ((flags & NAUTILUS_WINDOW_OPEN_FLAG_CLOSE_BEHIND) != 0) {
diff --git a/src/nautilus-window-private.h b/src/nautilus-window-private.h
index 098e1208b..b1f71747a 100644
--- a/src/nautilus-window-private.h
+++ b/src/nautilus-window-private.h
@@ -220,6 +220,7 @@ void nautilus_navigation_window_remove_bookmarks_menu_callback
void nautilus_navigation_window_remove_bookmarks_menu_items (NautilusNavigationWindow *window);
void nautilus_navigation_window_update_show_hide_menu_items (NautilusNavigationWindow *window);
void nautilus_navigation_window_update_spatial_menu_item (NautilusNavigationWindow *window);
+void nautilus_navigation_window_update_tab_menu_item_visibility (NautilusNavigationWindow *window);
void nautilus_navigation_window_remove_go_menu_callback (NautilusNavigationWindow *window);
void nautilus_navigation_window_remove_go_menu_items (NautilusNavigationWindow *window);