[Scummvm-git-logs] scummvm master -> 46cc41971899337a863b42a8ba21b8fc091b7014

dreammaster noreply at scummvm.org
Tue Oct 6 07:47:22 UTC 2026


This automated email contains information about 1 new commit which have been
pushed to the 'scummvm' repo located at https://api.github.com/repos/scummvm/scummvm .

Summary:
46cc419718 MADS: FOREST: Fix cancelling restore dialog. Bug #17275


Commit: 46cc41971899337a863b42a8ba21b8fc091b7014
    https://github.com/scummvm/scummvm/commit/46cc41971899337a863b42a8ba21b8fc091b7014
Author: Paul Gilbert (dreammaster at scummvm.org)
Date: 2026-10-06T18:47:13+11:00

Commit Message:
MADS: FOREST: Fix cancelling restore dialog. Bug #17275

Changed paths:
    engines/mads/forest/forest.cpp
    engines/mads/forest/menus.cpp


diff --git a/engines/mads/forest/forest.cpp b/engines/mads/forest/forest.cpp
index 7d64ea01a91..16b0637c741 100644
--- a/engines/mads/forest/forest.cpp
+++ b/engines/mads/forest/forest.cpp
@@ -161,7 +161,7 @@ void ForestEngine::global_section_constructor() {
 
 bool ForestEngine::canLoadGameStateCurrently(Common::U32String *msg) {
 	return game.going && !win_status && !kernel.activate_menu && player.commands_allowed &&
-		inter_input_mode == INTER_LIMITED_SENTENCES && section_id != 9;
+		inter_input_mode == INTER_LIMITED_SENTENCES && (section_id != 9 || room_id == 904);
 }
 
 void ForestEngine::syncRoom(Common::Serializer &s) {
diff --git a/engines/mads/forest/menus.cpp b/engines/mads/forest/menus.cpp
index 3569364463a..01649051f3b 100644
--- a/engines/mads/forest/menus.cpp
+++ b/engines/mads/forest/menus.cpp
@@ -313,6 +313,7 @@ static void global_menu_main() {
 void global_game_menu() {
 	bool loaded = false;
 	bool music = true;
+	bool priorMenu = kernel.activate_menu != GAME_MAIN_MENU;
 
 	if (box_param.series == NULL) {
 		Common::strcpy_s(box_param.name, "*BOX");
@@ -334,7 +335,8 @@ void global_game_menu() {
 				global_menu_save_restore(true);
 			} else {
 				kernel.activate_menu = GAME_NO_MENU;
-				g_engine->saveGameDialog();
+				if (!g_engine->saveGameDialog())
+					kernel.activate_menu = GAME_MAIN_MENU;
 			}
 			break;
 		case GAME_RESTORE_MENU:
@@ -357,6 +359,10 @@ void global_game_menu() {
 			kernel.activate_menu = GAME_NO_MENU;
 			break;
 		}
+
+		if (kernel.activate_menu == GAME_MAIN_MENU && priorMenu)
+			kernel.activate_menu = GAME_NO_MENU;
+
 	} while (!g_engine->shouldQuit() && game.going && kernel.activate_menu != GAME_NO_MENU);
 
 	game_menu_shutdown();




More information about the Scummvm-git-logs mailing list