[Scummvm-git-logs] scummvm master -> 8e24635883cc5bf9cd4522298e7505301d2fef77

moralrecordings noreply at scummvm.org
Wed Jul 22 02:15:24 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:
8e24635883 FOOL: Create MacWindowManager dynamically instead of statically


Commit: 8e24635883cc5bf9cd4522298e7505301d2fef77
    https://github.com/scummvm/scummvm/commit/8e24635883cc5bf9cd4522298e7505301d2fef77
Author: Torbjörn Andersson (eriktorbjorn at users.sourceforge.net)
Date: 2026-07-22T10:15:19+08:00

Commit Message:
FOOL: Create MacWindowManager dynamically instead of statically

Otherwise, it won't be able to find the necessary data files if they are
in your extra path, which led to some subtle font rendering bugs in the
Mac menus.

Changed paths:
    engines/fool/fool.cpp
    engines/fool/fool.h
    engines/fool/fool_game.cpp
    engines/fool/fool_prologue.cpp
    engines/fool/zbasic.cpp


diff --git a/engines/fool/fool.cpp b/engines/fool/fool.cpp
index 8d6fac694e7..ce104f7b143 100644
--- a/engines/fool/fool.cpp
+++ b/engines/fool/fool.cpp
@@ -43,6 +43,7 @@ FoolEngine::FoolEngine(OSystem *syst, const FOOLGameDescription *gameDesc) : Eng
 }
 
 FoolEngine::~FoolEngine() {
+	delete _wm;
 }
 
 uint32 FoolEngine::getFeatures() const {
@@ -54,10 +55,11 @@ Common::String FoolEngine::getGameId() const {
 }
 
 Common::Error FoolEngine::run() {
+	_wm = new Graphics::MacWindowManager();
 	initGraphics(SCREEN_WIDTH, SCREEN_HEIGHT);
 
 	_screen.create(SCREEN_WIDTH, SCREEN_HEIGHT, Graphics::PixelFormat::createFormatCLUT8());
-	_wm.setScreen(&_screen);
+	_wm->setScreen(&_screen);
 
 	Common::String versionStr(_gameDescription->desc.extra);
 	FoolVersion version = kFool20;
diff --git a/engines/fool/fool.h b/engines/fool/fool.h
index 7a5e63b1668..92316013e62 100644
--- a/engines/fool/fool.h
+++ b/engines/fool/fool.h
@@ -59,7 +59,7 @@ protected:
 
 public:
 	Graphics::ManagedSurface _screen;
-	Graphics::MacWindowManager _wm;
+	Graphics::MacWindowManager *_wm = nullptr;
 
 	FoolEngine(OSystem *syst, const FOOLGameDescription *gameDesc);
 	~FoolEngine() override;
diff --git a/engines/fool/fool_game.cpp b/engines/fool/fool_game.cpp
index d454eeddd0e..5ec829f362e 100644
--- a/engines/fool/fool_game.cpp
+++ b/engines/fool/fool_game.cpp
@@ -119,7 +119,7 @@ Common::String getFileNameFromModal(bool save, const Common::String &suggested,
 }
 
 void FoolGame::run() {
-	_toolbox = new Toolbox(&g_engine->_wm);
+	_toolbox = new Toolbox(g_engine->_wm);
 	_zbasic = new ZBasic(_toolbox);
 
 	_toolbox->_setFileModalCallback(getFileNameFromModal);
@@ -2733,12 +2733,12 @@ void FoolGame::sub_129_068() {
 	// 129:00de: JSR - "PEEKLONG"
 	// 129:00e2: SUBI.L - 0x72,D0
 	// 129:00e8: JSR - "PEEKWORD"
-	_windowWidth = g_engine->_wm._screenDims.width();  // window width?
+	_windowWidth = g_engine->_wm->_screenDims.width();  // window width?
 	// 129:00f0: MOVE.L - 0x904,D0
 	// 129:00f6: JSR - "PEEKLONG"
 	// 129:00fa: SUBI.L - 0x74,D0
 	// 129:0100: JSR - "PEEKWORD"
-	_windowHeight = g_engine->_wm._screenDims.height(); // window height?
+	_windowHeight = g_engine->_wm->_screenDims.height(); // window height?
 	var_i16_56 = (_windowWidth - SCREEN_WIDTH)/2;
 	var_i16_58 = (_windowHeight - SCREEN_HEIGHT)/2;
 	// 129:0138
diff --git a/engines/fool/fool_prologue.cpp b/engines/fool/fool_prologue.cpp
index 6c02bfc7e80..de71fb279cd 100644
--- a/engines/fool/fool_prologue.cpp
+++ b/engines/fool/fool_prologue.cpp
@@ -41,7 +41,7 @@ namespace Fool {
 // v3.0 - newer ZBasic, changed a few graphics assets, removed custom menu font and sounds for compatibility
 
 void FoolPrologue::run(bool finale, const BitMap &prevWindow) {
-	_toolbox = new Toolbox(&g_engine->_wm);
+	_toolbox = new Toolbox(g_engine->_wm);
 	_zbasic = new ZBasic(_toolbox);
 
 	Common::MacFinderInfo finfo;
@@ -532,8 +532,8 @@ void FoolPrologue::setupWindow() {
 	// 0x000a: JSR - "PEEKLONG"   # current A5
 	// 0x000e: SUBI.L - 0x72,D0
 	// 0x0014: JSR - "PEEKWORD" # quickdraw globals,
-	_windowWidth = g_engine->_wm._screenDims.width();  // window width?
-	_windowHeight = g_engine->_wm._screenDims.height(); // window height?
+	_windowWidth = g_engine->_wm->_screenDims.width();  // window width?
+	_windowHeight = g_engine->_wm->_screenDims.height(); // window height?
 
 	// 129:0034
 	// set left and top offsets based on a drawable area of 512x342
diff --git a/engines/fool/zbasic.cpp b/engines/fool/zbasic.cpp
index f926774470f..6b61c5d60fa 100644
--- a/engines/fool/zbasic.cpp
+++ b/engines/fool/zbasic.cpp
@@ -43,7 +43,7 @@ void menuCommandsCallback(int action, Common::String &text, void *data) {
 ZBasic::ZBasic(Graphics::MacToolbox::Toolbox *toolbox) : _toolbox(toolbox) {
 	_memPool = new Common::MemoryPool(sizeof(int));
 
-	_window = g_engine->_wm.addWindow(false, false, false);
+	_window = g_engine->_wm->addWindow(false, false, false);
 	_window->disableBorder();
 	_window->resize(SCREEN_WIDTH, SCREEN_HEIGHT);
 	_toolbox->_defaultWindow = _window;
@@ -51,10 +51,10 @@ ZBasic::ZBasic(Graphics::MacToolbox::Toolbox *toolbox) : _toolbox(toolbox) {
 	_toolbox->_defaultBits->copyFrom(*_window->getWindowSurface());
 	_window->setSurface(_toolbox->_defaultBits.get(), DisposeAfterUse::NO);
 
-	g_engine->_wm.setBackgroundWindow(_window);
-	if (!g_engine->_wm.getMenu()) {
+	g_engine->_wm->setBackgroundWindow(_window);
+	if (!g_engine->_wm->getMenu()) {
 		// no menu defined, create one for the first time
-		_menu = g_engine->_wm.addMenu();
+		_menu = g_engine->_wm->addMenu();
 		_menu->setCommandsCallback(menuCommandsCallback, nullptr);
 
 		_toolbox->_defaultMenu = _menu;
@@ -63,7 +63,7 @@ ZBasic::ZBasic(Graphics::MacToolbox::Toolbox *toolbox) : _toolbox(toolbox) {
 		_menu->setSurface(_toolbox->_defaultMenuBits.get(), DisposeAfterUse::NO);
 	} else {
 		// menu already exists
-		_menu = g_engine->_wm.getMenu();
+		_menu = g_engine->_wm->getMenu();
 		_toolbox->_defaultMenu = _menu;
 		// we don't get the surface for directly manipulating the menu, but so far we don't need it
 	}
@@ -74,7 +74,7 @@ ZBasic::ZBasic(Graphics::MacToolbox::Toolbox *toolbox) : _toolbox(toolbox) {
 }
 
 ZBasic::~ZBasic() {
-	g_engine->_wm.removeWindow(_window);
+	g_engine->_wm->removeWindow(_window);
 	_window = nullptr;
 	_toolbox->_defaultWindow = nullptr;
 




More information about the Scummvm-git-logs mailing list