[Scummvm-git-logs] scummvm master -> e279b10e3bdb959d7bab7e7ad9f2a34955257ed4

bluegr noreply at scummvm.org
Thu May 21 01:45:14 UTC 2026


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

Summary:
6d7e642afc NANCY: Clear record execution flag for each frame
5f8260e15b NANCY: Don't enable the mouse when it's not allowed in secondary movies
e279b10e3b NANCY: Take into account the width of checkmarks for word wrapping


Commit: 6d7e642afc4f42718000e436d66ae6559acb5ca1
    https://github.com/scummvm/scummvm/commit/6d7e642afc4f42718000e436d66ae6559acb5ca1
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-21T04:45:05+03:00

Commit Message:
NANCY: Clear record execution flag for each frame

This fixes the actual issue that caused the default AR record not to
run, when other records were executed.

Revert the workaround done in 5799fbb2f6e22d2697f98218c317728a71100726.
Fix #16773.

Changed paths:
    engines/nancy/action/actionmanager.cpp


diff --git a/engines/nancy/action/actionmanager.cpp b/engines/nancy/action/actionmanager.cpp
index 769d610b087..cb161d77ba7 100644
--- a/engines/nancy/action/actionmanager.cpp
+++ b/engines/nancy/action/actionmanager.cpp
@@ -240,7 +240,7 @@ ActionRecord *ActionManager::createAndLoadNewRecord(Common::SeekableReadStream &
 }
 
 void ActionManager::processActionRecords() {
-	bool activeRecordsThisFrame = false;
+	_recordsWereExecuted = false;
 	_activatedRecordsThisFrame.clear();
 
 	for (auto record : _records) {
@@ -260,7 +260,6 @@ void ActionManager::processActionRecords() {
 
 			record->execute();
 			_recordsWereExecuted = true;
-			activeRecordsThisFrame = true;
 		}
 
 		if (g_nancy->getGameType() >= kGameTypeNancy4 && NancySceneState.getState() == State::Scene::kLoad) {
@@ -270,17 +269,6 @@ void ActionManager::processActionRecords() {
 		}
 	}
 
-	if (!activeRecordsThisFrame) {
-		// No active records were found for this frame.
-		// This will lead to an infinite loop without
-		// anything happening, so we reset the
-		// _recordsWereExecuted flag, to fall back to
-		// the kDefaultAR dependency. This is needed for
-		// some scenes in Nancy 8, where SetVolume() is
-		// called, but no other action records are active.
-		_recordsWereExecuted = false;
-	}
-
 	synchronizeMovieWithSound();
 	debugDrawHotspots();
 }
@@ -572,13 +560,7 @@ void ActionManager::processDependency(DependencyRecord &dep, ActionRecord &recor
 
 			break;
 		case DependencyType::kDefaultAR:
-			// Only execute if no other AR has executed yet
-			if (_recordsWereExecuted) {
-				dep.satisfied = false;
-			} else {
-				dep.satisfied = true;
-			}
-
+			dep.satisfied = !_recordsWereExecuted;
 			break;
 		default:
 			warning("Unimplemented Dependency type %i", (int)dep.type);
@@ -592,6 +574,7 @@ void ActionManager::clearActionRecords() {
 		delete r;
 	}
 	_records.clear();
+	_activatedRecordsThisFrame.clear();
 	_recordsWereExecuted = false;
 }
 


Commit: 5f8260e15b0024abd267528c0b1bb088d381f001
    https://github.com/scummvm/scummvm/commit/5f8260e15b0024abd267528c0b1bb088d381f001
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-21T04:45:05+03:00

Commit Message:
NANCY: Don't enable the mouse when it's not allowed in secondary movies

Fix #16728

Changed paths:
    engines/nancy/action/secondarymovie.cpp


diff --git a/engines/nancy/action/secondarymovie.cpp b/engines/nancy/action/secondarymovie.cpp
index 6dcf803c4b7..d6421d8ef40 100644
--- a/engines/nancy/action/secondarymovie.cpp
+++ b/engines/nancy/action/secondarymovie.cpp
@@ -256,11 +256,6 @@ void PlaySecondaryMovie::execute() {
 		_triggerFlags.execute();
 		if (_videoSceneChange == kMovieSceneChange) {
 			NancySceneState.changeScene(_sceneChange);
-		} else {
-			// Not changing the scene so enable the mouse now
-			if (_playerCursorAllowed == kNoPlayerCursorAllowed) {
-				g_nancy->setMouseEnabled(true);
-			}
 		}
 
 		NancySceneState.setActiveMovie(nullptr);


Commit: e279b10e3bdb959d7bab7e7ad9f2a34955257ed4
    https://github.com/scummvm/scummvm/commit/e279b10e3bdb959d7bab7e7ad9f2a34955257ed4
Author: Filippos Karapetis (bluegr at gmail.com)
Date: 2026-05-21T04:45:06+03:00

Commit Message:
NANCY: Take into account the width of checkmarks for word wrapping

Fix #16777

Changed paths:
    engines/nancy/misc/hypertext.cpp


diff --git a/engines/nancy/misc/hypertext.cpp b/engines/nancy/misc/hypertext.cpp
index 504d0fe62ed..39ea5c730e1 100644
--- a/engines/nancy/misc/hypertext.cpp
+++ b/engines/nancy/misc/hypertext.cpp
@@ -82,6 +82,7 @@ void HypertextParser::drawAllText(const Common::Rect &textBounds, uint leftOffse
 		newlineTokens.push(0);
 		int curFontID = fontID;
 		uint numNonSpaceChars = 0;
+		bool hasMark = false;
 
 		// Token braces plus invalid characters that are known to appear in strings
 		Common::StringTokenizer tokenizer(_textLines[lineID], "<>\"");
@@ -192,6 +193,7 @@ void HypertextParser::drawAllText(const Common::Rect &textBounds, uint leftOffse
 					}
 
 					metaInfo.push({MetaInfo::kMark, numNonSpaceChars, (byte)(curToken[0] - '1')});
+					hasMark = true;
 					continue;
 				default:
 					break;
@@ -222,7 +224,13 @@ void HypertextParser::drawAllText(const Common::Rect &textBounds, uint leftOffse
 		// Do word wrapping on the text, sans tokens. This assumes
 		// all text uses fonts of the same width
 		Array<Common::String> wrappedLines;
-		font->wordWrap(currentLine, textBounds.width(), wrappedLines, 0);
+		int maxWidth = textBounds.width();
+		if (hasMark) {
+			auto *mark = GetEngineData(MARK);
+			assert(mark);
+			maxWidth -= mark->_markSrcs[0].width();
+		}
+		font->wordWrap(currentLine, maxWidth, wrappedLines, 0);
 
 		// Setup most of the hotspot; textbox
 		if (hasHotspot) {




More information about the Scummvm-git-logs mailing list