diff options
-rw-r--r-- | ChangeLog | 47 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-global-preferences.c | 12 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-preferences-box.c | 50 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-preferences.c | 39 | ||||
-rw-r--r-- | libnautilus-extensions/nautilus-preferences.h | 4 | ||||
-rw-r--r-- | libnautilus-private/nautilus-global-preferences.c | 12 | ||||
-rw-r--r-- | libnautilus-private/nautilus-preferences-box.c | 50 | ||||
-rw-r--r-- | libnautilus-private/nautilus-preferences.c | 39 | ||||
-rw-r--r-- | libnautilus-private/nautilus-preferences.h | 4 | ||||
-rw-r--r-- | src/nautilus-application.c | 6 | ||||
-rw-r--r-- | src/nautilus-application.h | 2 | ||||
-rw-r--r-- | src/nautilus-first-time-druid.c | 8 | ||||
-rw-r--r-- | src/nautilus-first-time-druid.h | 3 | ||||
-rw-r--r-- | src/nautilus-main.c | 27 |
14 files changed, 209 insertions, 94 deletions
@@ -1,3 +1,50 @@ +2001-04-23 Darin Adler <darin@eazel.com> + + reviewed by: John Sullivan <sullivan@eazel.com> + + Add a new command-line option "--no-desktop" as requested by + fcrozat on behalf of people who want to run Nautilus under KDE as + well as under GNOME. The option has no effect if Nautilus is + already running, but if it's the first invocation of Nautilus, + then no desktop-related preferences show up and the desktop is + not shown regardless of the setting of those preferences. + + * src/nautilus-main.c: (main): Add the no-desktop option. Make the + desktop-related preferences invisible if it's on, and pass it down + to the NautilusApplication. + + * src/nautilus-application.h: + * src/nautilus-application.c: (nautilus_application_startup): + Don't start the desktop if no_desktop is passed in. Otherwise + decide based on the preference. + + * libnautilus-extensions/nautilus-preferences-box.c: + (preferences_box_find_row): Mark this private function static. + (preferences_box_populate_pane): Get rid of code that would + translate the pane_name twice. + (nautilus_preferences_dialog_new): Simplified this code a bit. + + * libnautilus-extensions/nautilus-preferences.h: + * libnautilus-extensions/nautilus-preferences.c: + (preferences_make_user_level_filtered_key), + (nautilus_preferences_get_is_invisible), + (nautilus_preferences_set_is_invisible), + (preferences_key_make_for_getter), + (nautilus_preferences_visible_in_current_user_level), + (nautilus_preferences_is_visible): Added new flag to make a + preference invisible. + + * src/nautilus-first-time-druid.h: + * src/nautilus-first-time-druid.c: (set_up_gmc_transition_page), + (nautilus_first_time_druid_show): Removed code that used to make + the druid default based on the desktop preference. + + Fixed the Tinderbox. + + * libnautilus-extensions/nautilus-global-preferences.c: + (default_default_folder_viewer_callback): Allow NULL because that + happens during self-check. + 2001-04-23 Andy Hertzfeld <andy@eazel.com> * components/news/nautilus-news.c: (has_matching_uri), diff --git a/libnautilus-extensions/nautilus-global-preferences.c b/libnautilus-extensions/nautilus-global-preferences.c index d15be8014..0f45dd1c8 100644 --- a/libnautilus-extensions/nautilus-global-preferences.c +++ b/libnautilus-extensions/nautilus-global-preferences.c @@ -824,13 +824,15 @@ default_default_folder_viewer_callback (int user_level) int result; oaf_info = gnome_vfs_mime_get_default_component ("x-directory/normal"); - g_return_val_if_fail (oaf_info != NULL, NAUTILUS_DEFAULT_FOLDER_VIEWER_ICON_VIEW); - - result = get_default_folder_viewer_preference_from_iid (oaf_info->iid); - if (result == NAUTILUS_DEFAULT_FOLDER_VIEWER_OTHER) { + if (oaf_info == NULL) { result = NAUTILUS_DEFAULT_FOLDER_VIEWER_ICON_VIEW; + } else { + result = get_default_folder_viewer_preference_from_iid (oaf_info->iid); + if (result == NAUTILUS_DEFAULT_FOLDER_VIEWER_OTHER) { + result = NAUTILUS_DEFAULT_FOLDER_VIEWER_ICON_VIEW; + } + CORBA_free (oaf_info); } - CORBA_free (oaf_info); return GINT_TO_POINTER (result); } diff --git a/libnautilus-extensions/nautilus-preferences-box.c b/libnautilus-extensions/nautilus-preferences-box.c index 8204ce4b5..18d96e00c 100644 --- a/libnautilus-extensions/nautilus-preferences-box.c +++ b/libnautilus-extensions/nautilus-preferences-box.c @@ -2,7 +2,7 @@ /* nautilus-prefs-box.h - Implementation for preferences box component. - Copyright (C) 1999, 2000 Eazel, Inc. + Copyright (C) 1999, 2000, 2001 Eazel, Inc. The Gnome Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -81,10 +81,9 @@ static void category_list_select_row_callback (GtkCList gpointer user_data); /* Convience functions */ -int preferences_box_find_row (GtkCList *clist, +static int preferences_box_find_row (GtkCList *clist, char *pane_name); - -static void user_level_changed_callback (gpointer callback_data); +static void user_level_changed_callback (gpointer callback_data); EEL_DEFINE_CLASS_BOILERPLATE (NautilusPreferencesBox, nautilus_preferences_box, GTK_TYPE_HBOX) @@ -186,7 +185,7 @@ preferences_box_select_pane (NautilusPreferencesBox *preferences_box, g_warning ("Pane '%s' could not be found.", pane_name); } -int +static int preferences_box_find_row (GtkCList *clist, char *pane_name) { int i; @@ -430,6 +429,7 @@ preferences_box_populate_pane (NautilusPreferencesBox *preferences_box, NautilusPreferencesGroup *group; NautilusPreferencesItem *item; EelStringList *group_names; + const char *translated_group_name; guint i; g_return_if_fail (NAUTILUS_IS_PREFERENCES_BOX (preferences_box)); @@ -437,18 +437,19 @@ preferences_box_populate_pane (NautilusPreferencesBox *preferences_box, g_return_if_fail (items != NULL); /* Create the pane if needed */ - pane = preferences_box_find_pane (preferences_box, _(pane_name)); + pane = preferences_box_find_pane (preferences_box, pane_name); if (pane == NULL) { - pane = NAUTILUS_PREFERENCES_PANE (preferences_box_add_pane (preferences_box, _(pane_name))); + pane = NAUTILUS_PREFERENCES_PANE (preferences_box_add_pane (preferences_box, pane_name)); } group_names = eel_string_list_new (TRUE); for (i = 0; items[i].group_name != NULL; i++) { - if (!eel_string_list_contains (group_names, _(items[i].group_name))) { - eel_string_list_insert (group_names, _(items[i].group_name)); + translated_group_name = _(items[i].group_name); + if (!eel_string_list_contains (group_names, translated_group_name)) { + eel_string_list_insert (group_names, translated_group_name); nautilus_preferences_pane_add_group (pane, - _(items[i].group_name)); + translated_group_name); } } @@ -457,12 +458,12 @@ preferences_box_populate_pane (NautilusPreferencesBox *preferences_box, _(items[i].group_name))); g_return_if_fail (NAUTILUS_IS_PREFERENCES_GROUP (group)); - if (items[i].preference_description != NULL) { - nautilus_preferences_set_description (items[i].preference_name, - _(items[i].preference_description)); - } - if (items[i].preference_name != NULL) { + if (items[i].preference_description != NULL) { + nautilus_preferences_set_description (items[i].preference_name, + _(items[i].preference_description)); + } + item = NAUTILUS_PREFERENCES_ITEM (nautilus_preferences_group_add_item (group, items[i].preference_name, items[i].item_type, @@ -473,11 +474,9 @@ preferences_box_populate_pane (NautilusPreferencesBox *preferences_box, nautilus_preferences_item_set_control_preference (item, items[i].control_preference_name); nautilus_preferences_item_set_control_action (item, - items[i].control_action); - + items[i].control_action); nautilus_preferences_pane_add_control_preference (pane, items[i].control_preference_name); - } /* Install exceptions to enum lists uniqueness rule */ @@ -524,17 +523,14 @@ user_level_changed_callback (gpointer callback_data) nautilus_preferences_box_update (NAUTILUS_PREFERENCES_BOX (callback_data)); } -static const gchar *stock_buttons[] = { - GNOME_STOCK_BUTTON_OK, - NULL -}; - -#define DEFAULT_BUTTON 0 - GtkWidget * nautilus_preferences_dialog_new (const char *title, const NautilusPreferencesPaneDescription *panes) { + static const char *stock_buttons[] = { + GNOME_STOCK_BUTTON_OK, + NULL + }; GtkWidget *dialog; GtkWidget *preference_box; GtkWidget *vbox; @@ -550,9 +546,9 @@ nautilus_preferences_dialog_new (const char *title, TRUE, /* allow_grow */ FALSE); /* auto_shrink */ - gtk_container_set_border_width (GTK_CONTAINER(dialog), 0); + gtk_container_set_border_width (GTK_CONTAINER (dialog), 0); - gnome_dialog_set_default (GNOME_DIALOG(dialog), DEFAULT_BUTTON); + gnome_dialog_set_default (GNOME_DIALOG(dialog), 0); eel_gtk_window_set_up_close_accelerator (GTK_WINDOW (dialog)); diff --git a/libnautilus-extensions/nautilus-preferences.c b/libnautilus-extensions/nautilus-preferences.c index 9df5f6175..cd5ea51f4 100644 --- a/libnautilus-extensions/nautilus-preferences.c +++ b/libnautilus-extensions/nautilus-preferences.c @@ -65,6 +65,7 @@ typedef struct { char *name; char *description; PreferenceType type; + gboolean invisible; GList *callback_list; gboolean callbacks_blocked; GList *auto_storage_list; @@ -320,7 +321,7 @@ preferences_make_user_level_filtered_key (const char *name) g_return_val_if_fail (name != NULL, NULL); - if (nautilus_preferences_is_visible (name)) { + if (nautilus_preferences_visible_in_current_user_level (name)) { key = preferences_key_make (name); } else { key = preferences_key_make_for_default (name, nautilus_preferences_get_user_level ()); @@ -388,6 +389,25 @@ nautilus_preferences_set_visible_user_level (const char *name, g_free (visible_key); } +gboolean +nautilus_preferences_get_is_invisible (const char *name) +{ + g_return_val_if_fail (name != NULL, FALSE); + g_return_val_if_fail (preferences_is_initialized (), FALSE); + + return preferences_global_table_lookup_or_insert (name)->invisible; +} + +void +nautilus_preferences_set_is_invisible (const char *name, + gboolean is_invisible) +{ + g_return_if_fail (name != NULL); + g_return_if_fail (preferences_is_initialized ()); + + preferences_global_table_lookup_or_insert (name)->invisible = is_invisible; +} + void nautilus_preferences_set_boolean (const char *name, gboolean boolean_value) @@ -412,7 +432,7 @@ preferences_key_make_for_getter (const char *name) g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (preferences_is_initialized (), NULL); - if (preferences_preference_is_default (name) || !nautilus_preferences_is_visible (name)) { + if (preferences_preference_is_default (name) || !nautilus_preferences_visible_in_current_user_level (name)) { key = preferences_key_make_for_default_getter (name, nautilus_preferences_get_user_level ()); } else { key = preferences_make_user_level_filtered_key (name); @@ -1730,7 +1750,7 @@ nautilus_preferences_monitor_directory (const char *directory) } gboolean -nautilus_preferences_is_visible (const char *name) +nautilus_preferences_visible_in_current_user_level (const char *name) { int user_level; int visible_user_level; @@ -1744,6 +1764,19 @@ nautilus_preferences_is_visible (const char *name) return visible_user_level <= user_level; } +gboolean +nautilus_preferences_is_visible (const char *name) +{ + g_return_val_if_fail (name != NULL, FALSE); + g_return_val_if_fail (preferences_is_initialized (), FALSE); + + if (!nautilus_preferences_visible_in_current_user_level (name)) { + return FALSE; + } + + return !preferences_global_table_lookup_or_insert (name)->invisible; +} + static void preferences_remove_user_level_notice (void) { diff --git a/libnautilus-extensions/nautilus-preferences.h b/libnautilus-extensions/nautilus-preferences.h index 2916a907f..2c4de5c7a 100644 --- a/libnautilus-extensions/nautilus-preferences.h +++ b/libnautilus-extensions/nautilus-preferences.h @@ -123,6 +123,9 @@ void nautilus_preferences_remove_auto_boolean (const char int nautilus_preferences_get_visible_user_level (const char *name); void nautilus_preferences_set_visible_user_level (const char *name, int visible_user_level); +gboolean nautilus_preferences_get_is_invisible (const char *name); +void nautilus_preferences_set_is_invisible (const char *name, + gboolean invisible); char * nautilus_preferences_get_description (const char *name); void nautilus_preferences_set_description (const char *name, const char *description); @@ -130,6 +133,7 @@ char * nautilus_preferences_get_enumeration_id (const char void nautilus_preferences_set_enumeration_id (const char *name, const char *enumeration_id); gboolean nautilus_preferences_monitor_directory (const char *directory); +gboolean nautilus_preferences_visible_in_current_user_level (const char *name); gboolean nautilus_preferences_is_visible (const char *name); void nautilus_preferences_initialize (const char *storage_path); diff --git a/libnautilus-private/nautilus-global-preferences.c b/libnautilus-private/nautilus-global-preferences.c index d15be8014..0f45dd1c8 100644 --- a/libnautilus-private/nautilus-global-preferences.c +++ b/libnautilus-private/nautilus-global-preferences.c @@ -824,13 +824,15 @@ default_default_folder_viewer_callback (int user_level) int result; oaf_info = gnome_vfs_mime_get_default_component ("x-directory/normal"); - g_return_val_if_fail (oaf_info != NULL, NAUTILUS_DEFAULT_FOLDER_VIEWER_ICON_VIEW); - - result = get_default_folder_viewer_preference_from_iid (oaf_info->iid); - if (result == NAUTILUS_DEFAULT_FOLDER_VIEWER_OTHER) { + if (oaf_info == NULL) { result = NAUTILUS_DEFAULT_FOLDER_VIEWER_ICON_VIEW; + } else { + result = get_default_folder_viewer_preference_from_iid (oaf_info->iid); + if (result == NAUTILUS_DEFAULT_FOLDER_VIEWER_OTHER) { + result = NAUTILUS_DEFAULT_FOLDER_VIEWER_ICON_VIEW; + } + CORBA_free (oaf_info); } - CORBA_free (oaf_info); return GINT_TO_POINTER (result); } diff --git a/libnautilus-private/nautilus-preferences-box.c b/libnautilus-private/nautilus-preferences-box.c index 8204ce4b5..18d96e00c 100644 --- a/libnautilus-private/nautilus-preferences-box.c +++ b/libnautilus-private/nautilus-preferences-box.c @@ -2,7 +2,7 @@ /* nautilus-prefs-box.h - Implementation for preferences box component. - Copyright (C) 1999, 2000 Eazel, Inc. + Copyright (C) 1999, 2000, 2001 Eazel, Inc. The Gnome Library is free software; you can redistribute it and/or modify it under the terms of the GNU Library General Public License as @@ -81,10 +81,9 @@ static void category_list_select_row_callback (GtkCList gpointer user_data); /* Convience functions */ -int preferences_box_find_row (GtkCList *clist, +static int preferences_box_find_row (GtkCList *clist, char *pane_name); - -static void user_level_changed_callback (gpointer callback_data); +static void user_level_changed_callback (gpointer callback_data); EEL_DEFINE_CLASS_BOILERPLATE (NautilusPreferencesBox, nautilus_preferences_box, GTK_TYPE_HBOX) @@ -186,7 +185,7 @@ preferences_box_select_pane (NautilusPreferencesBox *preferences_box, g_warning ("Pane '%s' could not be found.", pane_name); } -int +static int preferences_box_find_row (GtkCList *clist, char *pane_name) { int i; @@ -430,6 +429,7 @@ preferences_box_populate_pane (NautilusPreferencesBox *preferences_box, NautilusPreferencesGroup *group; NautilusPreferencesItem *item; EelStringList *group_names; + const char *translated_group_name; guint i; g_return_if_fail (NAUTILUS_IS_PREFERENCES_BOX (preferences_box)); @@ -437,18 +437,19 @@ preferences_box_populate_pane (NautilusPreferencesBox *preferences_box, g_return_if_fail (items != NULL); /* Create the pane if needed */ - pane = preferences_box_find_pane (preferences_box, _(pane_name)); + pane = preferences_box_find_pane (preferences_box, pane_name); if (pane == NULL) { - pane = NAUTILUS_PREFERENCES_PANE (preferences_box_add_pane (preferences_box, _(pane_name))); + pane = NAUTILUS_PREFERENCES_PANE (preferences_box_add_pane (preferences_box, pane_name)); } group_names = eel_string_list_new (TRUE); for (i = 0; items[i].group_name != NULL; i++) { - if (!eel_string_list_contains (group_names, _(items[i].group_name))) { - eel_string_list_insert (group_names, _(items[i].group_name)); + translated_group_name = _(items[i].group_name); + if (!eel_string_list_contains (group_names, translated_group_name)) { + eel_string_list_insert (group_names, translated_group_name); nautilus_preferences_pane_add_group (pane, - _(items[i].group_name)); + translated_group_name); } } @@ -457,12 +458,12 @@ preferences_box_populate_pane (NautilusPreferencesBox *preferences_box, _(items[i].group_name))); g_return_if_fail (NAUTILUS_IS_PREFERENCES_GROUP (group)); - if (items[i].preference_description != NULL) { - nautilus_preferences_set_description (items[i].preference_name, - _(items[i].preference_description)); - } - if (items[i].preference_name != NULL) { + if (items[i].preference_description != NULL) { + nautilus_preferences_set_description (items[i].preference_name, + _(items[i].preference_description)); + } + item = NAUTILUS_PREFERENCES_ITEM (nautilus_preferences_group_add_item (group, items[i].preference_name, items[i].item_type, @@ -473,11 +474,9 @@ preferences_box_populate_pane (NautilusPreferencesBox *preferences_box, nautilus_preferences_item_set_control_preference (item, items[i].control_preference_name); nautilus_preferences_item_set_control_action (item, - items[i].control_action); - + items[i].control_action); nautilus_preferences_pane_add_control_preference (pane, items[i].control_preference_name); - } /* Install exceptions to enum lists uniqueness rule */ @@ -524,17 +523,14 @@ user_level_changed_callback (gpointer callback_data) nautilus_preferences_box_update (NAUTILUS_PREFERENCES_BOX (callback_data)); } -static const gchar *stock_buttons[] = { - GNOME_STOCK_BUTTON_OK, - NULL -}; - -#define DEFAULT_BUTTON 0 - GtkWidget * nautilus_preferences_dialog_new (const char *title, const NautilusPreferencesPaneDescription *panes) { + static const char *stock_buttons[] = { + GNOME_STOCK_BUTTON_OK, + NULL + }; GtkWidget *dialog; GtkWidget *preference_box; GtkWidget *vbox; @@ -550,9 +546,9 @@ nautilus_preferences_dialog_new (const char *title, TRUE, /* allow_grow */ FALSE); /* auto_shrink */ - gtk_container_set_border_width (GTK_CONTAINER(dialog), 0); + gtk_container_set_border_width (GTK_CONTAINER (dialog), 0); - gnome_dialog_set_default (GNOME_DIALOG(dialog), DEFAULT_BUTTON); + gnome_dialog_set_default (GNOME_DIALOG(dialog), 0); eel_gtk_window_set_up_close_accelerator (GTK_WINDOW (dialog)); diff --git a/libnautilus-private/nautilus-preferences.c b/libnautilus-private/nautilus-preferences.c index 9df5f6175..cd5ea51f4 100644 --- a/libnautilus-private/nautilus-preferences.c +++ b/libnautilus-private/nautilus-preferences.c @@ -65,6 +65,7 @@ typedef struct { char *name; char *description; PreferenceType type; + gboolean invisible; GList *callback_list; gboolean callbacks_blocked; GList *auto_storage_list; @@ -320,7 +321,7 @@ preferences_make_user_level_filtered_key (const char *name) g_return_val_if_fail (name != NULL, NULL); - if (nautilus_preferences_is_visible (name)) { + if (nautilus_preferences_visible_in_current_user_level (name)) { key = preferences_key_make (name); } else { key = preferences_key_make_for_default (name, nautilus_preferences_get_user_level ()); @@ -388,6 +389,25 @@ nautilus_preferences_set_visible_user_level (const char *name, g_free (visible_key); } +gboolean +nautilus_preferences_get_is_invisible (const char *name) +{ + g_return_val_if_fail (name != NULL, FALSE); + g_return_val_if_fail (preferences_is_initialized (), FALSE); + + return preferences_global_table_lookup_or_insert (name)->invisible; +} + +void +nautilus_preferences_set_is_invisible (const char *name, + gboolean is_invisible) +{ + g_return_if_fail (name != NULL); + g_return_if_fail (preferences_is_initialized ()); + + preferences_global_table_lookup_or_insert (name)->invisible = is_invisible; +} + void nautilus_preferences_set_boolean (const char *name, gboolean boolean_value) @@ -412,7 +432,7 @@ preferences_key_make_for_getter (const char *name) g_return_val_if_fail (name != NULL, NULL); g_return_val_if_fail (preferences_is_initialized (), NULL); - if (preferences_preference_is_default (name) || !nautilus_preferences_is_visible (name)) { + if (preferences_preference_is_default (name) || !nautilus_preferences_visible_in_current_user_level (name)) { key = preferences_key_make_for_default_getter (name, nautilus_preferences_get_user_level ()); } else { key = preferences_make_user_level_filtered_key (name); @@ -1730,7 +1750,7 @@ nautilus_preferences_monitor_directory (const char *directory) } gboolean -nautilus_preferences_is_visible (const char *name) +nautilus_preferences_visible_in_current_user_level (const char *name) { int user_level; int visible_user_level; @@ -1744,6 +1764,19 @@ nautilus_preferences_is_visible (const char *name) return visible_user_level <= user_level; } +gboolean +nautilus_preferences_is_visible (const char *name) +{ + g_return_val_if_fail (name != NULL, FALSE); + g_return_val_if_fail (preferences_is_initialized (), FALSE); + + if (!nautilus_preferences_visible_in_current_user_level (name)) { + return FALSE; + } + + return !preferences_global_table_lookup_or_insert (name)->invisible; +} + static void preferences_remove_user_level_notice (void) { diff --git a/libnautilus-private/nautilus-preferences.h b/libnautilus-private/nautilus-preferences.h index 2916a907f..2c4de5c7a 100644 --- a/libnautilus-private/nautilus-preferences.h +++ b/libnautilus-private/nautilus-preferences.h @@ -123,6 +123,9 @@ void nautilus_preferences_remove_auto_boolean (const char int nautilus_preferences_get_visible_user_level (const char *name); void nautilus_preferences_set_visible_user_level (const char *name, int visible_user_level); +gboolean nautilus_preferences_get_is_invisible (const char *name); +void nautilus_preferences_set_is_invisible (const char *name, + gboolean invisible); char * nautilus_preferences_get_description (const char *name); void nautilus_preferences_set_description (const char *name, const char *description); @@ -130,6 +133,7 @@ char * nautilus_preferences_get_enumeration_id (const char void nautilus_preferences_set_enumeration_id (const char *name, const char *enumeration_id); gboolean nautilus_preferences_monitor_directory (const char *directory); +gboolean nautilus_preferences_visible_in_current_user_level (const char *name); gboolean nautilus_preferences_is_visible (const char *name); void nautilus_preferences_initialize (const char *storage_path); diff --git a/src/nautilus-application.c b/src/nautilus-application.c index 7e9a138b4..57410b58c 100644 --- a/src/nautilus-application.c +++ b/src/nautilus-application.c @@ -338,8 +338,8 @@ void nautilus_application_startup (NautilusApplication *application, gboolean kill_shell, gboolean restart_shell, - gboolean start_desktop, gboolean no_default_window, + gboolean no_desktop, gboolean do_first_time_druid_check, const char *geometry, const char *urls[]) @@ -371,7 +371,7 @@ nautilus_application_startup (NautilusApplication *application, /* Run the first time startup druid if needed. */ if (do_first_time_druid_check && need_to_show_first_time_druid ()) { - nautilus_first_time_druid_show (application, start_desktop, urls); + nautilus_first_time_druid_show (application, urls); return; } @@ -489,7 +489,7 @@ nautilus_application_startup (NautilusApplication *application, } else if (restart_shell) { Nautilus_Shell_restart (shell, &ev); } else { - if (start_desktop) { + if (!no_desktop && nautilus_preferences_get_boolean (NAUTILUS_PREFERENCES_SHOW_DESKTOP)) { Nautilus_Shell_start_desktop (shell, &ev); } diff --git a/src/nautilus-application.h b/src/nautilus-application.h index d8f4d020e..064205022 100644 --- a/src/nautilus-application.h +++ b/src/nautilus-application.h @@ -57,8 +57,8 @@ NautilusApplication *nautilus_application_new (void); void nautilus_application_startup (NautilusApplication *application, gboolean kill_shell, gboolean restart_shell, - gboolean start_desktop, gboolean no_default_window, + gboolean no_desktop, gboolean do_first_time_druid_check, const char *default_geometry, const char *urls[]); diff --git a/src/nautilus-first-time-druid.c b/src/nautilus-first-time-druid.c index 49fed066f..3009d4612 100644 --- a/src/nautilus-first-time-druid.c +++ b/src/nautilus-first-time-druid.c @@ -97,7 +97,6 @@ enum { /* globals */ static NautilusApplication *save_application; -static gboolean save_manage_desktop; static GtkWidget *start_page; static GtkWidget *finish_page; @@ -292,7 +291,7 @@ set_up_background (NautilusDruidPageEazel *page, const char *background_color) } static void -update_draw_desktop_checkbox_state () +update_draw_desktop_checkbox_state (void) { if (current_user_level == NAUTILUS_USER_LEVEL_NOVICE) { gtk_widget_hide (draw_desktop_checkbox_widget); @@ -897,7 +896,7 @@ set_up_gmc_transition_page (NautilusDruidPageEazel *page) GtkWidget *checkbox, *label; GtkWidget *container, *main_box, *hbox; - draw_desktop = save_manage_desktop; + draw_desktop = TRUE; add_to_session = TRUE; transfer_gmc_icons = TRUE; @@ -1037,7 +1036,7 @@ update_finished_label (void) } GtkWidget * -nautilus_first_time_druid_show (NautilusApplication *application, gboolean manage_desktop, const char *urls[]) +nautilus_first_time_druid_show (NautilusApplication *application, const char *urls[]) { GtkWidget *dialog; GtkWidget *druid; @@ -1046,7 +1045,6 @@ nautilus_first_time_druid_show (NautilusApplication *application, gboolean manag /* remember parameters for later window invocation */ save_application = application; - save_manage_desktop = manage_desktop; current_user_level = nautilus_preferences_get_user_level (); diff --git a/src/nautilus-first-time-druid.h b/src/nautilus-first-time-druid.h index 4ae24c710..a2892b47d 100644 --- a/src/nautilus-first-time-druid.h +++ b/src/nautilus-first-time-druid.h @@ -33,7 +33,6 @@ #include "nautilus-application.h" GtkWidget *nautilus_first_time_druid_show (NautilusApplication *application, - gboolean manage_desktop, - const char *urls[]); + const char *urls[]); #endif /* NAUTILUS_FIRST_TIME_DRUID_H */ diff --git a/src/nautilus-main.c b/src/nautilus-main.c index d4303df99..ac055ef7a 100644 --- a/src/nautilus-main.c +++ b/src/nautilus-main.c @@ -128,8 +128,8 @@ main (int argc, char *argv[]) { gboolean kill_shell; gboolean restart_shell; - gboolean start_desktop; gboolean no_default_window; + gboolean no_desktop; char *geometry; gboolean perform_self_check; poptContext popt_context; @@ -147,6 +147,8 @@ main (int argc, char *argv[]) N_("Create the initial window with the given geometry."), N_("GEOMETRY") }, { "no-default-window", 'n', POPT_ARG_NONE, &no_default_window, 0, N_("Only create windows for explicitly specified URIs."), NULL }, + { "no-desktop", '\0', POPT_ARG_NONE, &no_desktop, 0, + N_("Do not manage the desktop (ignore the preference set in the preferences dialog)."), NULL }, { "quit", 'q', POPT_ARG_NONE, &kill_shell, 0, N_("Quit Nautilus."), NULL }, { "restart", '\0', POPT_ARG_NONE | POPT_ARGFLAG_DOC_HIDDEN, &restart_shell, 0, @@ -190,6 +192,7 @@ main (int argc, char *argv[]) geometry = NULL; kill_shell = FALSE; no_default_window = FALSE; + no_desktop = FALSE; perform_self_check = FALSE; restart_shell = FALSE; @@ -239,26 +242,24 @@ main (int argc, char *argv[]) /* Initialize preferences. This is needed so that proper * defaults are available before any preference peeking - * happens. Do this only if we are not goinh to kill the + * happens. Do this only if we are not going to kill the * nautilus shell. */ if (!kill_shell) { nautilus_global_preferences_initialize (); - start_desktop = nautilus_preferences_get_boolean (NAUTILUS_PREFERENCES_SHOW_DESKTOP); - } else { - start_desktop = FALSE; + if (no_desktop) { + nautilus_preferences_set_is_invisible + (NAUTILUS_PREFERENCES_SHOW_DESKTOP, TRUE); + nautilus_preferences_set_is_invisible + (NAUTILUS_PREFERENCES_DESKTOP_IS_HOME_DIR, TRUE); + } } /* Do either the self-check or the real work. */ if (perform_self_check) { #ifndef NAUTILUS_OMIT_SELF_CHECK - /* Run the checks (each twice) for: - * - * nautilus - * eel - * libnautilus-extensions - * - */ + /* Run the checks (each twice) for nautilus and libnautilus-extensions. */ + nautilus_directory_use_self_contained_metafile_factory (); nautilus_run_self_checks (); @@ -274,7 +275,7 @@ main (int argc, char *argv[]) application = nautilus_application_new (); nautilus_application_startup (application, - kill_shell, restart_shell, start_desktop, no_default_window, + kill_shell, restart_shell, no_default_window, no_desktop, !(kill_shell || restart_shell), geometry, args); |