summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSayamindu Dasgupta <sayamindu@src.gnome.org>2007-08-03 22:04:46 +0000
committerSayamindu Dasgupta <sayamindu@src.gnome.org>2007-08-03 22:04:46 +0000
commit5919a64ff464355460a98405bbf31d478bd43a2a (patch)
tree82d7ca7f278781b0eebc7b4c6315d4847e9d9fa5
parent063d2b144341ee2fd4072ac453c14ddfce02db9b (diff)
downloadnautilus-5919a64ff464355460a98405bbf31d478bd43a2a.tar.gz
Made the restricted view more robust with something like rerooting support
svn path=/branches/nautilus-lockdown/; revision=13052
-rw-r--r--ChangeLog9
-rw-r--r--libnautilus-private/nautilus-lockdown-manager.c2
-rw-r--r--src/nautilus-pathbar.c14
-rw-r--r--src/nautilus-window-manage-views.c11
4 files changed, 31 insertions, 5 deletions
diff --git a/ChangeLog b/ChangeLog
index 74db0603e..d90a52740 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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);
}
}