SF.net SVN: geany:[5040] branches/sm/src

statc at users.sourceforge.net statc at xxxxx
Thu Jun 17 14:54:46 UTC 2010


Revision: 5040
          http://geany.svn.sourceforge.net/geany/?rev=5040&view=rev
Author:   statc
Date:     2010-06-17 14:54:46 +0000 (Thu, 17 Jun 2010)

Log Message:
-----------
Update for previous revision: do not load filenames from session files when they are not needed

Modified Paths:
--------------
    branches/sm/src/main.c
    branches/sm/src/main.h
    branches/sm/src/project.c
    branches/sm/src/project.h

Modified: branches/sm/src/main.c
===================================================================
--- branches/sm/src/main.c	2010-06-17 14:54:23 UTC (rev 5039)
+++ branches/sm/src/main.c	2010-06-17 14:54:46 UTC (rev 5040)
@@ -856,7 +856,7 @@
 }
 
 
-static void load_session_project_file(void)
+static void load_session_project_file(gboolean load_filenames)
 {
 	gchar *locale_filename;
 
@@ -865,7 +865,7 @@
 	locale_filename = utils_get_locale_from_utf8(project_prefs.session_file);
 
 	if (NZV(locale_filename))
-		project_load_file(locale_filename);
+		project_load_file(locale_filename, load_filenames);
 
 	g_free(locale_filename);
 	g_free(project_prefs.session_file);	/* no longer needed */
@@ -888,7 +888,7 @@
 }
 
 
-void main_load_project_from_command_line(const gchar *locale_filename, gboolean use_session)
+void main_load_project_from_command_line(const gchar *locale_filename, gboolean load_files)
 {
 	gchar *pfile = NULL;
 
@@ -899,10 +899,10 @@
 
 	if (pfile != NULL)
 	{
-		if (use_session)
+		if (load_files)
 			project_load_file_with_session(pfile);
 		else
-			project_load_file(pfile);
+			project_load_file(pfile, FALSE);
 	}
 
 	g_free(pfile);
@@ -920,16 +920,18 @@
 
 	if (cl_options.project)
 	{
-		/* when being restored by session manager, do not open file names from project session file,
-		 * because required file names are passed via command-line and handled by open_cl_files() */
+		/* Do not load project session files if we are being restored by session manager:
+		 * corresponding file names are passed via command-line and will be handled by open_cl_files() */
 		main_load_project_from_command_line(cl_options.project, !restoring);
 		load_default_session = FALSE;
 	}
 
 	if (load_default_session)
 	{
-		/* load filenames from the default session into global session_files variable */
-		load_session_project_file();
+		/* Load project session file (if any) writing its filenames into global session_files variable.
+		 * Don't load filenames when being restored by session manager: in that case file names are
+		 * passed via command line and will be opened by open_cl_files() */
+		load_session_project_file(!restoring);
 		/* load files into tabs, as they are found in the session_files variable */
 		if (!restoring)
 			configuration_open_files();

Modified: branches/sm/src/main.h
===================================================================
--- branches/sm/src/main.h	2010-06-17 14:54:23 UTC (rev 5039)
+++ branches/sm/src/main.h	2010-06-17 14:54:46 UTC (rev 5040)
@@ -84,6 +84,6 @@
 
 gboolean main_is_realized(void);
 
-void main_load_project_from_command_line(const gchar *locale_filename, gboolean use_session);
+void main_load_project_from_command_line(const gchar *locale_filename, gboolean load_files);
 
 #endif

Modified: branches/sm/src/project.c
===================================================================
--- branches/sm/src/project.c	2010-06-17 14:54:23 UTC (rev 5039)
+++ branches/sm/src/project.c	2010-06-17 14:54:46 UTC (rev 5040)
@@ -81,7 +81,7 @@
 
 static gboolean update_config(const PropertyDialogElements *e);
 static void on_file_save_button_clicked(GtkButton *button, PropertyDialogElements *e);
-static gboolean load_config(const gchar *filename);
+static gboolean load_config(const gchar *filename, gboolean load_filenames);
 static gboolean write_config(gboolean emit_signal, GeanyProjectSettingsTypes flags);
 static void on_name_entry_changed(GtkEditable *editable, PropertyDialogElements *e);
 static void on_entries_changed(GtkEditable *editable, PropertyDialogElements *e);
@@ -201,7 +201,7 @@
 
 gboolean project_load_file_with_session(const gchar *locale_file_name)
 {
-	if (project_load_file(locale_file_name))
+	if (project_load_file(locale_file_name, TRUE))
 	{
 		if (project_prefs.project_session)
 		{
@@ -949,11 +949,11 @@
 }
 
 
-gboolean project_load_file(const gchar *locale_file_name)
+gboolean project_load_file(const gchar *locale_file_name, gboolean load_filenames)
 {
 	g_return_val_if_fail(locale_file_name != NULL, FALSE);
 
-	if (load_config(locale_file_name))
+	if (load_config(locale_file_name, load_filenames))
 	{
 		ui_set_statusbar(TRUE, _("Project \"%s\" opened."), app->project->name);
 		ui_add_recent_project_file(app->project->file_name);
@@ -974,7 +974,7 @@
  * At this point there should not be an already opened project in Geany otherwise it will just
  * return.
  * The filename is expected in the locale encoding. */
-static gboolean load_config(const gchar *filename)
+static gboolean load_config(const gchar *filename, gboolean load_filenames)
 {
 	GKeyFile *config;
 	GeanyProject *p;
@@ -1014,8 +1014,12 @@
 		configuration_save_default_session();
 		/* now close all open files */
 		document_close_all(FALSE);
-		/* read session files so they can be opened with configuration_open_files() */
-		configuration_load_session_files(config, FALSE);
+
+		if (load_filenames)
+		{
+			/* read session files so they can be opened with configuration_open_files() */
+			configuration_load_session_files(config, FALSE);
+		}
 	}
 	g_signal_emit_by_name(geany_object, "project-open", config);
 	g_key_file_free(config);

Modified: branches/sm/src/project.h
===================================================================
--- branches/sm/src/project.h	2010-06-17 14:54:23 UTC (rev 5039)
+++ branches/sm/src/project.h	2010-06-17 14:54:46 UTC (rev 5040)
@@ -87,7 +87,7 @@
 gboolean project_ask_close(void);
 
 
-gboolean project_load_file(const gchar *locale_file_name);
+gboolean project_load_file(const gchar *locale_file_name, gboolean load_filenames);
 
 gboolean project_load_file_with_session(const gchar *locale_file_name);
 


This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.



More information about the Commits mailing list