diff options
-rw-r--r-- | shell/ChangeLog | 27 | ||||
-rw-r--r-- | shell/e-shell-view.c | 26 | ||||
-rw-r--r-- | shell/e-shell-view.h | 2 | ||||
-rw-r--r-- | shell/e-shell.c | 33 | ||||
-rw-r--r-- | shell/e-shell.h | 14 | ||||
-rw-r--r-- | shell/main.c | 11 |
6 files changed, 67 insertions, 46 deletions
diff --git a/shell/ChangeLog b/shell/ChangeLog index 8e4276c7eb..2c18525284 100644 --- a/shell/ChangeLog +++ b/shell/ChangeLog @@ -1,3 +1,30 @@ +2002-04-08 Dan Winship <danw@ximian.com> + + Fix "evolution evolution:/path/to/folder" to use default view + prefs. + + * e-shell.c (impl_Shell_createNewView): Use + e_shell_create_view_from_uri_and_settings to create the new view + based on saved view 0 instead of always using the initial + evolution defaults. + (e_shell_create_view_from_uri_and_settings): Renamed and + simplified; the template_view argument was useless and + settings_found would always be set to TRUE in the context it was + being used it. + (e_shell_restore_from_settings): Simplify for + e_shell_create_view_from_uri_and_settings changes. + + * e-shell-view.c (e_shell_view_load_settings): Only load the + DisplayedURI if the view isn't already displaying a URI. Also, + pass an &ev to the first bonobo_config_get_long so we can tell if + it failed and bail out. + + * e-shell-view.h: Remove a prototype for a non-existent function + (e_shell_view_remove_control_for_uri). + + * main.c (idle_cb): Add some comments here and remove some dead + code. + 2002-04-06 JP Rosevear <jpr@ximian.com> * e-shell-settings-dialog.c (page_new): set type diff --git a/shell/e-shell-view.c b/shell/e-shell-view.c index 165c9800b2..3c7330fe35 100644 --- a/shell/e-shell-view.c +++ b/shell/e-shell-view.c @@ -2621,6 +2621,7 @@ e_shell_view_load_settings (EShellView *shell_view, int num_groups, group, val; long width, height; char *stringval, *prefix, *filename, *key; + CORBA_Environment ev; g_return_val_if_fail (shell_view != NULL, FALSE); g_return_val_if_fail (E_IS_SHELL_VIEW (shell_view), FALSE); @@ -2634,9 +2635,14 @@ e_shell_view_load_settings (EShellView *shell_view, prefix = g_strdup_printf ("/Shell/Views/%d/", view_num); + CORBA_exception_init (&ev); key = g_strconcat (prefix, "Width", NULL); - width = bonobo_config_get_long (db, key, NULL); + width = bonobo_config_get_long (db, key, &ev); g_free (key); + if (ev._major != CORBA_NO_EXCEPTION) { + CORBA_exception_free (&ev); + return FALSE; + } key = g_strconcat (prefix, "Height", NULL); height = bonobo_config_get_long (db, key, NULL); @@ -2673,16 +2679,18 @@ e_shell_view_load_settings (EShellView *shell_view, priv->view_hpaned_position = val; g_free (key); - key = g_strconcat (prefix, "DisplayedURI", NULL); - stringval = bonobo_config_get_string (db, key, NULL); - if (stringval) { - if (! e_shell_view_display_uri (shell_view, stringval)) + if (priv->uri == NULL && priv->delayed_selection == NULL) { + key = g_strconcat (prefix, "DisplayedURI", NULL); + stringval = bonobo_config_get_string (db, key, NULL); + if (stringval) { + if (! e_shell_view_display_uri (shell_view, stringval)) + e_shell_view_display_uri (shell_view, E_SHELL_VIEW_DEFAULT_URI); + } else e_shell_view_display_uri (shell_view, E_SHELL_VIEW_DEFAULT_URI); - } else - e_shell_view_display_uri (shell_view, E_SHELL_VIEW_DEFAULT_URI); - g_free (stringval); - g_free (key); + g_free (stringval); + g_free (key); + } num_groups = e_shortcut_model_get_num_groups (shortcut_bar->model); diff --git a/shell/e-shell-view.h b/shell/e-shell-view.h index c5ba207e24..85a5c9ac95 100644 --- a/shell/e-shell-view.h +++ b/shell/e-shell-view.h @@ -110,8 +110,6 @@ gboolean e_shell_view_save_settings (EShellView *shell_view, gboolean e_shell_view_load_settings (EShellView *shell_view, int view_num); -gboolean e_shell_view_remove_control_for_uri (EShellView *shell_view, const char *uri); - int e_shell_view_get_current_shortcuts_group_num (EShellView *shell_view); void e_shell_view_set_current_shortcuts_group_num (EShellView *shell_view, int group_num); diff --git a/shell/e-shell.c b/shell/e-shell.c index f15348e95f..36fc5f3049 100644 --- a/shell/e-shell.c +++ b/shell/e-shell.c @@ -402,7 +402,7 @@ impl_Shell_createNewView (PortableServer_Servant servant, return CORBA_OBJECT_NIL; } - shell_view = e_shell_create_view (shell, uri, NULL); + shell_view = e_shell_create_view_from_uri_and_settings (shell, uri, 0); if (shell_view == NULL) { CORBA_exception_set (ev, CORBA_USER_EXCEPTION, ex_GNOME_Evolution_Shell_NotFound, NULL); @@ -1388,20 +1388,17 @@ e_shell_create_view (EShell *shell, } EShellView * -e_shell_create_view_from_settings (EShell *shell, - const char *uri, - EShellView *template_view, - int view_num, - gboolean *settings_found) +e_shell_create_view_from_uri_and_settings (EShell *shell, + const char *uri, + int view_num) { EShellView *view; g_return_val_if_fail (shell != NULL, NULL); g_return_val_if_fail (E_IS_SHELL (shell), NULL); - view = create_view (shell, uri, template_view); - - *settings_found = e_shell_view_load_settings (view, view_num); + view = create_view (shell, uri, NULL); + e_shell_view_load_settings (view, view_num); gtk_widget_show (GTK_WIDGET (view)); while (gtk_events_pending ()) @@ -1672,7 +1669,6 @@ gboolean e_shell_restore_from_settings (EShell *shell) { EShellPrivate *priv; - gboolean retval; int num_views; int i; @@ -1684,21 +1680,10 @@ e_shell_restore_from_settings (EShell *shell) num_views = bonobo_config_get_long_with_default (priv->db, "/Shell/Views/NumberOfViews", 0, NULL); - if (num_views == 0) - return FALSE; - - retval = TRUE; + for (i = 0; i < num_views; i++) + e_shell_create_view_from_uri_and_settings (shell, NULL, i); - for (i = 0; i < num_views; i++) { - EShellView *view; - gboolean settings_found; - - view = e_shell_create_view_from_settings (shell, NULL, NULL, i, &settings_found); - if (! settings_found) - retval = FALSE; - } - - return retval; + return (num_views > 0); } /** diff --git a/shell/e-shell.h b/shell/e-shell.h index 818ba0233f..ef4bd8d709 100644 --- a/shell/e-shell.h +++ b/shell/e-shell.h @@ -108,14 +108,12 @@ EShell *e_shell_new (const char *local_director EShellStartupLineMode startup_line_mode, EShellConstructResult *construct_result_return); -EShellView *e_shell_create_view (EShell *shell, - const char *uri, - EShellView *template_view); -EShellView *e_shell_create_view_from_settings (EShell *shell, - const char *uri, - EShellView *template_view, - int view_num, - gboolean *settings_found); +EShellView *e_shell_create_view (EShell *shell, + const char *uri, + EShellView *template_view); +EShellView *e_shell_create_view_from_uri_and_settings (EShell *shell, + const char *uri, + int view_num); const char *e_shell_get_local_directory (EShell *shell); EShortcuts *e_shell_get_shortcuts (EShell *shell); diff --git a/shell/main.c b/shell/main.c index 0775904fbf..48bce215d3 100644 --- a/shell/main.c +++ b/shell/main.c @@ -247,11 +247,19 @@ idle_cb (void *data) } if (shell == NULL) { + /* We're talking to a remote shell. If the user didn't + * ask us to open any particular URI, then open another + * view of the default URI + */ if (uri_list == NULL) display_default = TRUE; else display_default = FALSE; } else { + /* We're starting a new shell. If the user didn't specify + * any evolution: URIs to view, AND we can't load the + * user's previous settings, then show the default URI. + */ if (! have_evolution_uri) { if (! e_shell_restore_from_settings (shell)) display_default = TRUE; @@ -278,9 +286,6 @@ idle_cb (void *data) GNOME_Evolution_Shell_handleURI (corba_shell, uri, &ev); if (ev._major != CORBA_NO_EXCEPTION) g_warning ("CORBA exception %s when requesting URI -- %s", ev._repo_id, uri); - - if (strncmp (uri, E_SHELL_URI_PREFIX, E_SHELL_URI_PREFIX_LEN) == 0) - have_evolution_uri = TRUE; } g_slist_free (uri_list); |