diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | libnautilus-private/nautilus-lockdown-manager.c | 2 | ||||
-rw-r--r-- | src/nautilus-pathbar.c | 14 | ||||
-rw-r--r-- | src/nautilus-window-manage-views.c | 11 |
4 files changed, 31 insertions, 5 deletions
@@ -1,3 +1,12 @@ +2007-08-04 Sayamindu Dasgupta <sayamindu@gmail.com> + * nautilus-pathbar.c: + (nautilus_path_bar_update_path): + * nautilus-window-manage-views.c: + (update_up_button): + Pathbar should not show restricted directories, + and the "Up" button/menu item should be disabled in + some cases. + 2007-08-04 Sayamindu Dasgupta <sayamindu@gmail.com> * libnautilus-private/nautilus-lockdown-manager.[ch]: * src/nautilus-application.c: diff --git a/libnautilus-private/nautilus-lockdown-manager.c b/libnautilus-private/nautilus-lockdown-manager.c index 02fc6c551..fe05585c1 100644 --- a/libnautilus-private/nautilus-lockdown-manager.c +++ b/libnautilus-private/nautilus-lockdown-manager.c @@ -86,6 +86,8 @@ nautilus_lockdown_manager_is_uri_allowed (NautilusLockdownManager *manager, GList *l; gchar *match_uri; + /* FIXME: How do I handle a NULL uri ?? */ + if (!manager->details->restricted_views_enabled) { /* The feature is disabled, so we allow everything */ return TRUE; diff --git a/src/nautilus-pathbar.c b/src/nautilus-pathbar.c index ffc9b0a06..3ba7a75b1 100644 --- a/src/nautilus-pathbar.c +++ b/src/nautilus-pathbar.c @@ -38,6 +38,7 @@ #include <libnautilus-private/nautilus-icon-factory.h> #include <libnautilus-private/nautilus-file-utilities.h> #include <libnautilus-private/nautilus-global-preferences.h> +#include <libnautilus-private/nautilus-lockdown-manager.h> #include "nautilus-pathbar.h" enum { @@ -1533,18 +1534,25 @@ nautilus_path_bar_update_path (NautilusPathBar *path_bar, const char *file_path) gtk_widget_push_composite_child (); - while (path != NULL) { + while (path != NULL && nautilus_lockdown_manager_is_uri_allowed(nautilus_lockdown_manager_get(), + path )) { parent_path = get_parent_directory (path); name = get_display_name_for_folder (path); - last_directory = !parent_path; + last_directory = !parent_path || !nautilus_lockdown_manager_is_uri_allowed(nautilus_lockdown_manager_get(), + parent_path ); button_data = make_directory_button (path_bar, name, path, first_directory, last_directory, FALSE); g_free (path); g_free (name); new_buttons = g_list_prepend (new_buttons, button_data); - if (BUTTON_IS_FAKE_ROOT (button_data)) { + if (BUTTON_IS_FAKE_ROOT (button_data) + && nautilus_lockdown_manager_is_uri_allowed(nautilus_lockdown_manager_get(), + parent_path )) { + /* If the parent directory of a fake_root is not allowed, we treat is + * as the _real_ root, so that no "<" button gets added. + * */ fake_root = new_buttons; } diff --git a/src/nautilus-window-manage-views.c b/src/nautilus-window-manage-views.c index 08bae63a6..55a9d4cf0 100644 --- a/src/nautilus-window-manage-views.c +++ b/src/nautilus-window-manage-views.c @@ -60,6 +60,7 @@ #include <libnautilus-private/nautilus-file-utilities.h> #include <libnautilus-private/nautilus-file.h> #include <libnautilus-private/nautilus-global-preferences.h> +#include <libnautilus-private/nautilus-lockdown-manager.h> #include <libnautilus-private/nautilus-metadata.h> #include <libnautilus-private/nautilus-mime-actions.h> #include <libnautilus-private/nautilus-module.h> @@ -280,13 +281,19 @@ static void update_up_button (NautilusWindow *window) { gboolean allowed; - GnomeVFSURI *new_uri; + GnomeVFSURI *new_uri, *parent_uri; allowed = FALSE; if (window->details->location != NULL) { new_uri = gnome_vfs_uri_new (window->details->location); if (new_uri != NULL) { - allowed = gnome_vfs_uri_has_parent (new_uri); + if (gnome_vfs_uri_has_parent (new_uri)) { + parent_uri = gnome_vfs_uri_get_parent(new_uri); + allowed = + nautilus_lockdown_manager_is_uri_allowed(nautilus_lockdown_manager_get(), + gnome_vfs_uri_to_string (parent_uri, GNOME_VFS_URI_HIDE_NONE)); + gnome_vfs_uri_unref (parent_uri); + } gnome_vfs_uri_unref (new_uri); } } |