[geany/geany] a7647c: Change main_status.opening_session_files to a counter

Thomas Martitz git-noreply at xxxxx
Fri Mar 4 23:03:24 UTC 2022


Branch:      refs/heads/master
Author:      Thomas Martitz <thomas.martitz at mailbox.org>
Committer:   Thomas Martitz <thomas.martitz at mailbox.org>
Date:        Thu, 17 Feb 2022 21:40:36 UTC
Commit:      a7647cd9a92c95a2b4b2bb611660ae53f0051099
             https://github.com/geany/geany/commit/a7647cd9a92c95a2b4b2bb611660ae53f0051099

Log Message:
-----------
Change main_status.opening_session_files to a counter

This flag is actually set and cleared recursively:
- libmain.c sets it before calling load_startup_files()
- inside load_startup_files(), configuration_open_files() sets and clears
  the flag
- when libmain.c clears the flag, it's already unset

A counter allows such recursive usage to work as expected.


Modified Paths:
--------------
    src/keyfile.c
    src/libmain.c
    src/main.h

Modified: src/keyfile.c
8 lines changed, 5 insertions(+), 3 deletions(-)
===================================================================
@@ -1317,7 +1317,7 @@ void configuration_open_files(void)
 	gboolean failure = FALSE;
 
 	/* necessary to set it to TRUE for project session support */
-	main_status.opening_session_files = TRUE;
+	main_status.opening_session_files++;
 
 	i = file_prefs.tab_order_ltr ? 0 : (session_files->len - 1);
 	while (TRUE)
@@ -1350,7 +1350,10 @@ void configuration_open_files(void)
 	session_files = NULL;
 
 	if (failure)
+	{
 		ui_set_statusbar(TRUE, _("Failed to load one or more session files."));
+		main_status.opening_session_files--;
+	}
 	else
 	{
 		/* explicitly trigger a notebook page switch after unsetting main_status.opening_session_files
@@ -1363,10 +1366,9 @@ void configuration_open_files(void)
 		if (target_page == cur_page && n_pages > 0)
 			gtk_notebook_set_current_page(GTK_NOTEBOOK(main_widgets.notebook), (cur_page + 1) % n_pages);
 
-		main_status.opening_session_files = FALSE;
+		main_status.opening_session_files--;
 		gtk_notebook_set_current_page(GTK_NOTEBOOK(main_widgets.notebook), target_page);
 	}
-	main_status.opening_session_files = FALSE;
 }
 
 


Modified: src/libmain.c
6 lines changed, 3 insertions(+), 3 deletions(-)
===================================================================
@@ -263,7 +263,7 @@ static void main_init(void)
 	ignore_callback	= FALSE;
 	ui_prefs.recent_queue				= g_queue_new();
 	ui_prefs.recent_projects_queue		= g_queue_new();
-	main_status.opening_session_files	= FALSE;
+	main_status.opening_session_files	= 0;
 
 	main_widgets.window = create_window1();
 	g_signal_connect(main_widgets.window, "notify::is-active", G_CALLBACK(on_window_active_changed), NULL);
@@ -1194,9 +1194,9 @@ gint main_lib(gint argc, gchar **argv)
 	tools_create_insert_custom_command_menu_items();
 
 	/* load any command line files or session files */
-	main_status.opening_session_files = TRUE;
+	main_status.opening_session_files++;
 	load_startup_files(argc, argv);
-	main_status.opening_session_files = FALSE;
+	main_status.opening_session_files--;
 
 	/* open a new file if no other file was opened */
 	document_new_file_if_non_open();


Modified: src/main.h
2 lines changed, 1 insertions(+), 1 deletions(-)
===================================================================
@@ -53,7 +53,7 @@ extern CommandLineOptions cl_options;
 
 typedef struct GeanyStatus
 {
-	gboolean	opening_session_files;	/* state at startup while opening session files */
+	gint	opening_session_files;	/* >0 indicates batch-opening of session files */
 	gboolean	closing_all; /* the state while closing all tabs
 							  * (used to prevent notebook switch page signals) */
 	gboolean	quitting;	/* state when Geany is quitting completely */



--------------
This E-Mail was brought to you by github_commit_mail.py (Source: https://github.com/geany/infrastructure).


More information about the Commits mailing list