diff -p -up nautilus-2.27.2/libnautilus-private/apps_nautilus_preferences.schemas.in.lockdown-contextmenus nautilus-2.27.2/libnautilus-private/apps_nautilus_preferences.schemas.in --- nautilus-2.27.2/libnautilus-private/apps_nautilus_preferences.schemas.in.lockdown-contextmenus 2009-06-15 10:05:58.000000000 +0200 +++ nautilus-2.27.2/libnautilus-private/apps_nautilus_preferences.schemas.in 2009-06-15 11:32:25.000000000 +0200 @@ -1186,6 +1186,21 @@ most cases, this should be left alone. - </long> </locale> </schema> - + + <schema> + <key>/schemas/apps/nautilus/lockdown/disable_context_menus</key> + <applyto>/apps/nautilus/lockdown/disable_context_menus</applyto> + <owner>nautilus</owner> + <type>bool</type> + <default>false</default> + <locale name="C"> + <short>Disable context menus in file views</short> + <long> + Set this to true if you are deploying a kiosk and don't want users + to access the context menu in file views. + </long> + </locale> + </schema> + </schemalist> </gconfschemafile> diff -p -up nautilus-2.27.2/libnautilus-private/nautilus-debug-log.h.lockdown-contextmenus nautilus-2.27.2/libnautilus-private/nautilus-debug-log.h --- nautilus-2.27.2/libnautilus-private/nautilus-debug-log.h.lockdown-contextmenus 2009-04-20 12:57:19.000000000 +0200 +++ nautilus-2.27.2/libnautilus-private/nautilus-debug-log.h 2009-06-15 11:32:25.000000000 +0200 @@ -30,6 +30,7 @@ #define NAUTILUS_DEBUG_LOG_DOMAIN_USER "USER" /* always enabled */ #define NAUTILUS_DEBUG_LOG_DOMAIN_ASYNC "async" /* when asynchronous notifications come in */ #define NAUTILUS_DEBUG_LOG_DOMAIN_GLOG "GLog" /* used for GLog messages; don't use it yourself */ +#define NAUTILUS_DEBUG_LOG_DOMAIN_LOCKDOWN "lockdown" /* when things get *not* done due to lockdown */ void nautilus_debug_log (gboolean is_milestone, const char *domain, const char *format, ...); diff -p -up nautilus-2.27.2/libnautilus-private/nautilus-global-preferences.c.lockdown-contextmenus nautilus-2.27.2/libnautilus-private/nautilus-global-preferences.c --- nautilus-2.27.2/libnautilus-private/nautilus-global-preferences.c.lockdown-contextmenus 2009-05-25 12:04:11.000000000 +0200 +++ nautilus-2.27.2/libnautilus-private/nautilus-global-preferences.c 2009-06-15 11:33:53.000000000 +0200 @@ -239,6 +239,10 @@ static const PreferenceDefault preferenc PREFERENCE_BOOLEAN, GINT_TO_POINTER (TRUE) }, + { NAUTILUS_LOCKDOWN_DISABLE_CONTEXT_MENUS, + PREFERENCE_BOOLEAN, + GINT_TO_POINTER (FALSE) + }, { NAUTILUS_PREFERENCES_SHOW_HIDDEN_FILES, PREFERENCE_BOOLEAN, GINT_TO_POINTER (FALSE) diff -p -up nautilus-2.27.2/libnautilus-private/nautilus-global-preferences.h.lockdown-contextmenus nautilus-2.27.2/libnautilus-private/nautilus-global-preferences.h --- nautilus-2.27.2/libnautilus-private/nautilus-global-preferences.h.lockdown-contextmenus 2009-05-25 12:04:11.000000000 +0200 +++ nautilus-2.27.2/libnautilus-private/nautilus-global-preferences.h 2009-06-15 11:34:42.000000000 +0200 @@ -33,6 +33,8 @@ G_BEGIN_DECLS /* Whether exit when last window destroyed */ #define NAUTILUS_PREFERENCES_EXIT_WITH_LAST_WINDOW "preferences/exit_with_last_window" +#define NAUTILUS_LOCKDOWN_DISABLE_CONTEXT_MENUS "lockdown/disable_context_menus" + /* Which theme is active */ #define NAUTILUS_PREFERENCES_THEME "/desktop/gnome/file_views/icon_theme" diff -p -up nautilus-2.27.2/src/file-manager/fm-directory-view.c.lockdown-contextmenus nautilus-2.27.2/src/file-manager/fm-directory-view.c --- nautilus-2.27.2/src/file-manager/fm-directory-view.c.lockdown-contextmenus 2009-05-23 20:13:29.000000000 +0200 +++ nautilus-2.27.2/src/file-manager/fm-directory-view.c 2009-06-15 11:32:25.000000000 +0200 @@ -8081,6 +8081,12 @@ fm_directory_view_pop_up_selection_conte { g_assert (FM_IS_DIRECTORY_VIEW (view)); + if (eel_preferences_get_boolean (NAUTILUS_LOCKDOWN_DISABLE_CONTEXT_MENUS)) { + nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_LOCKDOWN, + "Ignoring request to pop up the context menu for the view's selection"); + return; + } + /* Make the context menu items not flash as they update to proper disabled, * etc. states by forcing menus to update now. */ @@ -8110,6 +8116,12 @@ fm_directory_view_pop_up_background_cont { g_assert (FM_IS_DIRECTORY_VIEW (view)); + if (eel_preferences_get_boolean (NAUTILUS_LOCKDOWN_DISABLE_CONTEXT_MENUS)) { + nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_LOCKDOWN, + "Ignoring request to pop up the context menu for the view's background"); + return; + } + /* Make the context menu items not flash as they update to proper disabled, * etc. states by forcing menus to update now. */ @@ -8217,6 +8229,12 @@ fm_directory_view_pop_up_location_contex g_assert (FM_IS_DIRECTORY_VIEW (view)); + if (eel_preferences_get_boolean (NAUTILUS_LOCKDOWN_DISABLE_CONTEXT_MENUS)) { + nautilus_debug_log (FALSE, NAUTILUS_DEBUG_LOG_DOMAIN_LOCKDOWN, + "Ignoring request to pop up the context menu for the view"); + return; + } + if (location != NULL) { file = nautilus_file_get_by_uri (location); } else {