diff --git a/src/keyfile.c b/src/keyfile.c index 2b28c2f9dd..832ff05d6f 100644 --- a/src/keyfile.c +++ b/src/keyfile.c @@ -1366,7 +1366,7 @@ static gboolean switch_to_session_page(gpointer data) /* Open session files * Note: notebook page switch handler and adding to recent files list is always disabled * for all files opened within this function */ -void configuration_open_files(GPtrArray *session_files) +void configuration_open_files(GPtrArray *session_files, gboolean switch_to_last_session_page) { gint i; gboolean failure = FALSE; @@ -1405,7 +1405,7 @@ void configuration_open_files(GPtrArray *session_files) if (failure) ui_set_statusbar(TRUE, _("Failed to load one or more session files.")); - else + else if (switch_to_last_session_page) g_idle_add(switch_to_session_page, NULL); main_status.opening_session_files--; @@ -1415,11 +1415,11 @@ void configuration_open_files(GPtrArray *session_files) /* Open session files * Note: notebook page switch handler and adding to recent files list is always disabled * for all files opened within this function */ -void configuration_open_default_session(void) +void configuration_open_default_session(gboolean switch_to_last_session_page) { g_return_if_fail(default_session_files != NULL); - configuration_open_files(default_session_files); + configuration_open_files(default_session_files, switch_to_last_session_page); default_session_files = NULL; } diff --git a/src/keyfile.h b/src/keyfile.h index ddffb34022..8681248a5e 100644 --- a/src/keyfile.h +++ b/src/keyfile.h @@ -46,11 +46,11 @@ void configuration_save(void); gboolean configuration_load(void); -void configuration_open_files(GPtrArray *session_files); +void configuration_open_files(GPtrArray *session_files, gboolean switch_to_last_session_page); void configuration_load_default_session(void); -void configuration_open_default_session(void); +void configuration_open_default_session(gboolean switch_to_last_session_page); void configuration_save_default_session(void); diff --git a/src/libmain.c b/src/libmain.c index 2012a21686..d7a3a23f8f 100644 --- a/src/libmain.c +++ b/src/libmain.c @@ -978,15 +978,18 @@ static void load_startup_files(gint argc, gchar **argv) if (load_session) { + /* do not activate the last active page stored in the session when we also open + * additional files from the command line */ + gboolean switch_to_last_session_page = (argc == 1); /* load session files into tabs, as they are found in the session_files variable */ if (app->project != NULL) { - configuration_open_files(app->project->priv->session_files); + configuration_open_files(app->project->priv->session_files, switch_to_last_session_page); app->project->priv->session_files = NULL; } else { - configuration_open_default_session(); + configuration_open_default_session(switch_to_last_session_page); } if (gtk_notebook_get_n_pages(GTK_NOTEBOOK(main_widgets.notebook)) == 0) diff --git a/src/project.c b/src/project.c index f0c5b2e36f..a0ecd28b4f 100644 --- a/src/project.c +++ b/src/project.c @@ -294,7 +294,7 @@ static void run_new_dialog(PropertyDialogElements *e) { // reload any documents that were closed configuration_load_default_session(); - configuration_open_default_session(); + configuration_open_default_session(TRUE); } } @@ -303,7 +303,7 @@ gboolean project_load_file_with_session(const gchar *locale_file_name) { if (project_load_file(locale_file_name)) { - configuration_open_files(app->project->priv->session_files); + configuration_open_files(app->project->priv->session_files, TRUE); app->project->priv->session_files = NULL; document_new_file_if_non_open(); ui_focus_current_document(); @@ -469,7 +469,7 @@ static void destroy_project(gboolean open_default) if (open_default && cl_options.load_session) { configuration_load_default_session(); - configuration_open_default_session(); + configuration_open_default_session(TRUE); document_new_file_if_non_open(); ui_focus_current_document(); }