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

sev- noreply at scummvm.org
Sun Feb 8 14:56:46 UTC 2026


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

Summary:
7cb7a322c1 GUI: Added Help button to Launcher, GMM and the Browser dialog
e7219aa57f GRAPHICS: Do not crash in case help image packs are missing


Commit: 7cb7a322c1a5caa9b5bac6a9be5c050d78a09603
    https://github.com/scummvm/scummvm/commit/7cb7a322c1a5caa9b5bac6a9be5c050d78a09603
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-02-08T15:56:42+01:00

Commit Message:
GUI: Added Help button to Launcher, GMM and the Browser dialog

It leads to the Markdown help. In the launcher we show button
only on highres, non-classic themes, due to absence of vertical space

Also bump the theme version.

Changed paths:
    engines/dialogs.cpp
    engines/dialogs.h
    gui/ThemeEngine.h
    gui/browser.cpp
    gui/launcher.cpp
    gui/launcher.h
    gui/themes/common/highres_layout.stx
    gui/themes/common/lowres_layout.stx
    gui/themes/default.inc
    gui/themes/residualvm.zip
    gui/themes/residualvm/THEMERC
    gui/themes/scummclassic.zip
    gui/themes/scummclassic/THEMERC
    gui/themes/scummclassic/classic_layout.stx
    gui/themes/scummclassic/classic_layout_lowres.stx
    gui/themes/scummmodern.zip
    gui/themes/scummmodern/THEMERC
    gui/themes/scummremastered.zip
    gui/themes/scummremastered/THEMERC


diff --git a/engines/dialogs.cpp b/engines/dialogs.cpp
index e56931b36b9..441074e514f 100644
--- a/engines/dialogs.cpp
+++ b/engines/dialogs.cpp
@@ -29,6 +29,7 @@
 
 #include "gui/about.h"
 #include "gui/gui-manager.h"
+#include "gui/helpdialog.h"
 #include "gui/message.h"
 #include "gui/options.h"
 #include "gui/saveload.h"
@@ -75,10 +76,12 @@ MainMenuDialog::MainMenuDialog(Engine *engine)
 	// The help button is disabled by default.
 	// To enable "Help", an engine needs to use a subclass of MainMenuDialog
 	// (at least for now, we might change how this works in the future).
-	_helpButton = new GUI::ButtonWidget(this, "GlobalMenu.Help", _("~H~elp"), Common::U32String(), kHelpCmd);
+	_helpButton = new GUI::ButtonWidget(this, "GlobalMenu.Help", _("Game ~H~elp"), Common::U32String(), kHelpCmd);
 	_helpButton->setVisible(_engine->hasFeature(Engine::kSupportsHelp));
 	_helpButton->setEnabled(_engine->hasFeature(Engine::kSupportsHelp));
 
+	new GUI::ButtonWidget(this, "GlobalMenu.MainHelp", _("~H~elp"), Common::U32String(), kMainHelpCmd);
+
 	new GUI::ButtonWidget(this, "GlobalMenu.About", _("~A~bout"), Common::U32String(), kAboutCmd);
 
 	if (g_gui.getGUIWidth() > 320)
@@ -128,6 +131,11 @@ void MainMenuDialog::handleCommand(GUI::CommandSender *sender, uint32 cmd, uint3
 		dialog.runModal();
 		}
 		break;
+	case kMainHelpCmd: {
+		GUI::HelpDialog dlg;
+		dlg.runModal();
+		}
+		break;
 	case kLauncherCmd: {
 		Common::Event eventReturnToLauncher;
 		eventReturnToLauncher.type = Common::EVENT_RETURN_TO_LAUNCHER;
diff --git a/engines/dialogs.h b/engines/dialogs.h
index d8e9210a5f7..6435b6b8563 100644
--- a/engines/dialogs.h
+++ b/engines/dialogs.h
@@ -43,6 +43,7 @@ public:
 		kPlayCmd = 'PLAY',
 		kOptionsCmd = 'OPTN',
 		kHelpCmd = 'HELP',
+		kMainHelpCmd = 'MHLP',
 		kAboutCmd = 'ABOU',
 		kQuitCmd = 'QUIT',
 		kLauncherCmd = 'LNCR',
diff --git a/gui/ThemeEngine.h b/gui/ThemeEngine.h
index 940298eff25..e00f7f1331b 100644
--- a/gui/ThemeEngine.h
+++ b/gui/ThemeEngine.h
@@ -36,7 +36,7 @@
 #include "graphics/pixelformat.h"
 
 
-#define SCUMMVM_THEME_VERSION_STR "SCUMMVM_STX0.9.20"
+#define SCUMMVM_THEME_VERSION_STR "SCUMMVM_STX0.9.21"
 
 class OSystem;
 
diff --git a/gui/browser.cpp b/gui/browser.cpp
index a5d75b7294c..7d2612c9050 100644
--- a/gui/browser.cpp
+++ b/gui/browser.cpp
@@ -20,6 +20,7 @@
  */
 
 #include "gui/browser.h"
+#include "gui/helpdialog.h"
 #include "gui/gui-manager.h"
 #include "gui/widgets/edittext.h"
 #include "gui/widgets/list.h"
@@ -39,7 +40,8 @@ enum {
 	kChooseCmd = 'Chos',
 	kGoUpCmd = 'GoUp',
 	kHiddenCmd = 'Hidd',
-	kPathEditedCmd = 'Path'
+	kPathEditedCmd = 'Path',
+	kHelpCmd = 'Help',
 };
 
 /* We want to use this as a general directory selector at some point... possible uses
@@ -59,6 +61,7 @@ BrowserDialog::BrowserDialog(const Common::U32String &title, bool dirBrowser)
 
 	// Headline - TODO: should be customizable during creation time
 	new StaticTextWidget(this, "Browser.Headline", title);
+	new ButtonWidget(this, "Browser.Help", _("Help"), Common::U32String(), kHelpCmd);
 
 	// Current path - TODO: handle long paths ?
 	_currentPath = new EditTextWidget(this, "Browser.Path", Common::U32String(), Common::U32String(), 0, kPathEditedCmd);
@@ -122,6 +125,11 @@ void BrowserDialog::handleCommand(CommandSender *sender, uint32 cmd, uint32 data
 		_node = Common::FSNode(Common::Path(Common::convertFromU32String(_currentPath->getEditString()), Common::Path::kNativeSeparator));
 		updateListing();
 		break;
+	case kHelpCmd: {
+		GUI::HelpDialog dlg;
+		dlg.runModal();
+		}
+		break;
 	//Search by text input
 	case kChooseCmd:
 		if (_isDirBrowser) {
diff --git a/gui/launcher.cpp b/gui/launcher.cpp
index 53191d434d4..1944108c5f7 100644
--- a/gui/launcher.cpp
+++ b/gui/launcher.cpp
@@ -269,6 +269,11 @@ void LauncherDialog::build() {
 
 	// I18N: Button About ScummVM program. b is the shortcut, Ctrl+b, put it in parens for non-latin (~b~)
 	new ButtonWidget(this, _title + ".AboutButton", _("A~b~out"), _("About ScummVM"), kAboutCmd);
+
+	_mainHelpButton = nullptr;
+	if (g_gui.xmlEval()->getVar("Globals.Launcher.ShowMainHelp") == 1)
+		_mainHelpButton = new ButtonWidget(this, _title + ".MainHelpButton", _("Help"), _("General help"), kHelpCmd);
+
 	// I18N: Button caption. O is the shortcut, Ctrl+O, put it in parens for non-latin (~O~)
 	new ButtonWidget(this, _title + ".OptionsButton", _("Global ~O~ptions..."), _("Change global ScummVM options"), kOptionsCmd, 0, _c("Global ~O~pts...", "lowres"));
 
@@ -942,6 +947,18 @@ void LauncherDialog::reflowLayout() {
 	g_gui.addToTrash(_searchClearButton, this);
 	_searchClearButton = addClearButton(this, _title + ".SearchClearButton", kSearchClearCmd);
 #endif
+
+	if (g_gui.xmlEval()->getVar("Globals.Launcher.ShowMainHelp") == 1) {
+		if (!_mainHelpButton)
+			_mainHelpButton = new ButtonWidget(this, _title + ".MainHelpButton", _("Help"), _("General help"), kHelpCmd);
+	} else {
+		if (_mainHelpButton) {
+			removeWidget(_mainHelpButton);
+			g_gui.addToTrash(_mainHelpButton, this);
+			_mainHelpButton = nullptr;
+		}
+	}
+
 #ifndef DISABLE_LAUNCHERDISPLAY_GRID
 	addLayoutChooserButtons();
 #endif
@@ -1436,7 +1453,7 @@ void LauncherSimple::updateSelectionAfterRemoval() {
 	if (_list) {
 		_list->clearSelection();
 		const Common::Array<bool> &selectedItems = getSelectedItems();
-		
+
 		// Get the real data index of the last selected item and adjust with bounds
 		int lastSelectedDataItem = MIN((int)selectedItems.size() - 1, _list->getSelected());
 		// Convert real data index to visual index for marking
@@ -1790,7 +1807,7 @@ void LauncherGrid::build() {
 void LauncherGrid::updateSelectionAfterRemoval() {
 	if (_grid) {
 		_grid->clearSelection();
-		
+
 		// Select at the same index as before, or the last item if out of bounds
 		_grid->_lastSelectedEntryID = MIN((int)getSelectedItems().size() - 1, _grid->_lastSelectedEntryID);
 		_grid->markSelectedItem(_grid->_lastSelectedEntryID, true);
@@ -1803,7 +1820,7 @@ void LauncherDialog::confirmRemoveGames(const Common::Array<bool> &selectedItems
 	// Validate that at least one item is selected
 	if (!hasAnySelection(selectedItems))
 		return;
-	
+
 	// Count selected items
 	int selectedCount = 0;
 	for (int i = 0; i < (int)selectedItems.size(); ++i) {
diff --git a/gui/launcher.h b/gui/launcher.h
index 3ab87bc7556..5d1d8dc54d3 100644
--- a/gui/launcher.h
+++ b/gui/launcher.h
@@ -136,6 +136,7 @@ protected:
 	Widget			*_startButton;
 	ButtonWidget	*_loadButton;
 	Widget			*_editButton;
+	Widget			*_mainHelpButton;
 	Common::StringArray		_domains;
 	BrowserDialog	*_browser;
 	SaveLoadChooser	*_loadDialog;
diff --git a/gui/themes/common/highres_layout.stx b/gui/themes/common/highres_layout.stx
index f923f881a16..0ea7c52cce4 100644
--- a/gui/themes/common/highres_layout.stx
+++ b/gui/themes/common/highres_layout.stx
@@ -48,7 +48,8 @@
 		<def var = 'ShowChooserPics' value = '1'/>
 		<def var = 'ShowChooserPageDisplay' value = '1'/>
 
-		<def var = 'Launcher.HelpButton.Width' value = '24'  scalable = 'yes'/> <!-- Button.Width * 3 -->
+		<def var = 'Launcher.HelpButton.Width' value = '24' scalable = 'yes'/> <!-- Button.Width * 3 -->
+		<def var = 'Launcher.ShowMainHelp' value = '1'/>
 
 		<def var = 'SaveLoadChooser.ExtInfo.Visible' value = '1'/>
 		<def var = 'RecorderDialog.ExtInfo.Visible' value = '1'/>
@@ -232,6 +233,9 @@
 					<widget name = 'OptionsButton'
 							type = 'Button'
 					/>
+					<widget name = 'MainHelpButton'
+							type = 'Button'
+					/>
 					<widget name = 'AboutButton'
 							type = 'Button'
 					/>
@@ -484,9 +488,14 @@
 
 	<dialog name = 'Browser' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<widget name = 'Headline'
-					height = 'Globals.Line.Height'
-			/>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
+				<widget name = 'Headline'
+						height = 'Globals.Line.Height'
+				/>
+				<widget name = 'Help'
+						type = 'Button'
+				/>
+			</layout>
 			<widget name = 'Path'
 					height = 'Globals.Line.Height'
 			/>
@@ -1885,6 +1894,10 @@
 					width = '150'
 					height = 'Globals.Button.Height'
 			/>
+			<widget name = 'MainHelp'
+					width = '150'
+					height = 'Globals.Button.Height'
+			/>
 			<widget name = 'About'
 					width = '150'
 					height = 'Globals.Button.Height'
diff --git a/gui/themes/common/lowres_layout.stx b/gui/themes/common/lowres_layout.stx
index 7266fc2f399..47033187b31 100644
--- a/gui/themes/common/lowres_layout.stx
+++ b/gui/themes/common/lowres_layout.stx
@@ -39,7 +39,8 @@
 		<def var = 'ShowChooserPics' value = '0'/>
 		<def var = 'ShowChooserPageDisplay' value = '0'/>
 
-		<def var = 'Launcher.HelpButton.Width' value = '16'  scalable = 'yes'/> <!-- Button.Width -->
+		<def var = 'Launcher.HelpButton.Width' value = '16' scalable = 'yes'/> <!-- Button.Width -->
+		<def var = 'Launcher.ShowMainHelp' value = '0'/>
 
 		<def var = 'SaveLoadChooser.ExtInfo.Visible' value = '0'/>
 		<def var = 'RecorderDialog.ExtInfo.Visible' value = '0'/>
@@ -341,9 +342,14 @@
 
 	<dialog name = 'Browser' overlays = 'screen' inset = '8' shading = 'dim'>
 		<layout type = 'vertical' padding = '8, 8, 0, 4'>
-			<widget name = 'Headline'
-					height = 'Globals.Line.Height'
-			/>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
+				<widget name = 'Headline'
+						height = 'Globals.Line.Height'
+				/>
+				<widget name = 'Help'
+						type = 'Button'
+				/>
+			</layout>
 			<widget name = 'Path'
 					height = 'Globals.Line.Height'
 			/>
@@ -1714,10 +1720,16 @@
 					width = '120'
 					height = 'Globals.Button.Height'
 			/>
-			<widget name = 'Help'
-					width = '120'
-					height = 'Globals.Button.Height'
-			/>
+			<layout type = 'horizontal' padding = '4, 4, 4, 4' align = 'center' spacing='2'>
+				<widget name = 'Help'
+						width = '60'
+						height = 'Globals.Button.Height'
+				/>
+				<widget name = 'MainHelp'
+						width = '60'
+						height = 'Globals.Button.Height'
+				/>
+			</layout>
 			<widget name = 'About'
 					width = '120'
 					height = 'Globals.Button.Height'
diff --git a/gui/themes/default.inc b/gui/themes/default.inc
index 03f73168e50..7f1f56fb4fc 100644
--- a/gui/themes/default.inc
+++ b/gui/themes/default.inc
@@ -1454,6 +1454,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<def var='ShowChooserPics' value='0'/>"
 "<def var='ShowChooserPageDisplay' value='1'/>"
 "<def var='Launcher.HelpButton.Width' value='24' scalable='yes'/> "
+"<def var='Launcher.ShowMainHelp' value='0'/>"
 "<def var='SaveLoadChooser.ExtInfo.Visible' value='1'/>"
 "<def var='RecorderDialog.ExtInfo.Visible' value='1'/>"
 "<def var='ImageAlbum.ImageInset' value='16' scalable='yes' />"
@@ -1639,9 +1640,14 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='Browser' overlays='Dialog.Launcher.GameList' shading='dim'>"
 "<layout type='vertical' padding='8,8,8,8'>"
+"<layout type='horizontal' padding='0,0,0,0'>"
 "<widget name='Headline' "
 "height='Globals.Line.Height' "
 "/>"
+"<widget name='Help' "
+"type='Button' "
+"/>"
+"</layout>"
 "<widget name='Path' "
 "height='Globals.Line.Height' "
 "/>"
@@ -2862,6 +2868,10 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='150' "
 "height='Globals.Button.Height' "
 "/>"
+"<widget name='MainHelp' "
+"width='150' "
+"height='Globals.Button.Height' "
+"/>"
 "<widget name='About' "
 "width='150' "
 "height='Globals.Button.Height' "
@@ -3842,6 +3852,7 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "<def var='ShowChooserPics' value='0'/>"
 "<def var='ShowChooserPageDisplay' value='0'/>"
 "<def var='Launcher.HelpButton.Width' value='16' scalable='yes'/> "
+"<def var='Launcher.ShowMainHelp' value='0'/>"
 "<def var='SaveLoadChooser.ExtInfo.Visible' value='0'/>"
 "<def var='RecorderDialog.ExtInfo.Visible' value='0'/>"
 "<def var='ImageAlbum.ImageInset' value='16' scalable='yes' />"
@@ -4035,9 +4046,14 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "</dialog>"
 "<dialog name='Browser' overlays='screen' inset='8' shading='dim'>"
 "<layout type='vertical' padding='8,8,0,4'>"
+"<layout type='horizontal' padding='0,0,0,0'>"
 "<widget name='Headline' "
 "height='Globals.Line.Height' "
 "/>"
+"<widget name='Help' "
+"type='Button' "
+"/>"
+"</layout>"
 "<widget name='Path' "
 "height='Globals.Line.Height' "
 "/>"
@@ -5264,10 +5280,16 @@ const char *defaultXML1 = "<?xml version = '1.0'?>"
 "width='120' "
 "height='12' "
 "/>"
+"<layout type='horizontal' padding='4,4,4,4' align='center' spacing='2'>"
 "<widget name='Help' "
-"width='120' "
+"width='60' "
 "height='12' "
 "/>"
+"<widget name='MainHelp' "
+"width='60' "
+"height='12' "
+"/>"
+"</layout>"
 "<widget name='About' "
 "width='120' "
 "height='12' "
diff --git a/gui/themes/residualvm.zip b/gui/themes/residualvm.zip
index 02fdac8bce3..c431ef9f71a 100644
Binary files a/gui/themes/residualvm.zip and b/gui/themes/residualvm.zip differ
diff --git a/gui/themes/residualvm/THEMERC b/gui/themes/residualvm/THEMERC
index ebe7ab10a1d..4441cf2078e 100644
--- a/gui/themes/residualvm/THEMERC
+++ b/gui/themes/residualvm/THEMERC
@@ -1,3 +1,3 @@
-[SCUMMVM_STX0.9.20:ResidualVM Modern Theme Remastered:No Author]
+[SCUMMVM_STX0.9.21:ResidualVM Modern Theme Remastered:No Author]
 %using ../common
 %using ../common-svg
diff --git a/gui/themes/scummclassic.zip b/gui/themes/scummclassic.zip
index 9172e9e3325..79b355fe4a4 100644
Binary files a/gui/themes/scummclassic.zip and b/gui/themes/scummclassic.zip differ
diff --git a/gui/themes/scummclassic/THEMERC b/gui/themes/scummclassic/THEMERC
index dd156a77597..5fb66fa9a3b 100644
--- a/gui/themes/scummclassic/THEMERC
+++ b/gui/themes/scummclassic/THEMERC
@@ -1 +1 @@
-[SCUMMVM_STX0.9.20:ScummVM Classic Theme:No Author]
+[SCUMMVM_STX0.9.21:ScummVM Classic Theme:No Author]
diff --git a/gui/themes/scummclassic/classic_layout.stx b/gui/themes/scummclassic/classic_layout.stx
index 6293819b02d..b1f644b2796 100644
--- a/gui/themes/scummclassic/classic_layout.stx
+++ b/gui/themes/scummclassic/classic_layout.stx
@@ -39,7 +39,8 @@
 		<def var = 'ShowChooserPics' value = '0'/>
 		<def var = 'ShowChooserPageDisplay' value = '1'/>
 
-		<def var = 'Launcher.HelpButton.Width' value = '24'  scalable = 'yes'/> <!-- Button.Width -->
+		<def var = 'Launcher.HelpButton.Width' value = '24' scalable = 'yes'/> <!-- Button.Width -->
+		<def var = 'Launcher.ShowMainHelp' value = '0'/>
 
 		<def var = 'SaveLoadChooser.ExtInfo.Visible' value = '1'/>
 		<def var = 'RecorderDialog.ExtInfo.Visible' value = '1'/>
@@ -240,9 +241,14 @@
 
 	<dialog name = 'Browser' overlays = 'Dialog.Launcher.GameList' shading = 'dim'>
 		<layout type = 'vertical' padding = '8, 8, 8, 8'>
-			<widget name = 'Headline'
-					height = 'Globals.Line.Height'
-			/>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
+				<widget name = 'Headline'
+						height = 'Globals.Line.Height'
+				/>
+				<widget name = 'Help'
+						type = 'Button'
+				/>
+			</layout>
 			<widget name = 'Path'
 					height = 'Globals.Line.Height'
 			/>
@@ -1530,6 +1536,10 @@
 					width = '150'
 					height = 'Globals.Button.Height'
 			/>
+			<widget name = 'MainHelp'
+					width = '150'
+					height = 'Globals.Button.Height'
+			/>
 			<widget name = 'About'
 					width = '150'
 					height = 'Globals.Button.Height'
diff --git a/gui/themes/scummclassic/classic_layout_lowres.stx b/gui/themes/scummclassic/classic_layout_lowres.stx
index ce6066dfb82..3defef5bed8 100644
--- a/gui/themes/scummclassic/classic_layout_lowres.stx
+++ b/gui/themes/scummclassic/classic_layout_lowres.stx
@@ -39,7 +39,8 @@
 		<def var = 'ShowChooserPics' value = '0'/>
 		<def var = 'ShowChooserPageDisplay' value = '0'/>
 
-		<def var = 'Launcher.HelpButton.Width' value = '16'  scalable = 'yes'/> <!-- Button.Width -->
+		<def var = 'Launcher.HelpButton.Width' value = '16' scalable = 'yes'/> <!-- Button.Width -->
+		<def var = 'Launcher.ShowMainHelp' value = '0'/>
 
 		<def var = 'SaveLoadChooser.ExtInfo.Visible' value = '0'/>
 		<def var = 'RecorderDialog.ExtInfo.Visible' value = '0'/>
@@ -248,9 +249,14 @@
 
 	<dialog name = 'Browser' overlays = 'screen' inset = '8' shading = 'dim'>
 		<layout type = 'vertical' padding = '8, 8, 0, 4'>
-			<widget name = 'Headline'
-					height = 'Globals.Line.Height'
-			/>
+			<layout type = 'horizontal' padding = '0, 0, 0, 0'>
+				<widget name = 'Headline'
+						height = 'Globals.Line.Height'
+				/>
+				<widget name = 'Help'
+						type = 'Button'
+				/>
+			</layout>
 			<widget name = 'Path'
 					height = 'Globals.Line.Height'
 			/>
@@ -1543,10 +1549,16 @@
 						width = '120'
 						height = '12'
 				/>
+			<layout type = 'horizontal' padding = '4, 4, 4, 4' align = 'center' spacing='2'>
 				<widget name = 'Help'
-						width = '120'
+						width = '60'
 						height = '12'
 				/>
+				<widget name = 'MainHelp'
+						width = '60'
+						height = '12'
+				/>
+			</layout>
 				<widget name = 'About'
 						width = '120'
 						height = '12'
diff --git a/gui/themes/scummmodern.zip b/gui/themes/scummmodern.zip
index 7a2626edd16..27208d1a6d3 100644
Binary files a/gui/themes/scummmodern.zip and b/gui/themes/scummmodern.zip differ
diff --git a/gui/themes/scummmodern/THEMERC b/gui/themes/scummmodern/THEMERC
index 3d2770ba976..c82ed30005a 100644
--- a/gui/themes/scummmodern/THEMERC
+++ b/gui/themes/scummmodern/THEMERC
@@ -1,2 +1,2 @@
-[SCUMMVM_STX0.9.20:ScummVM Modern Theme:No Author]
+[SCUMMVM_STX0.9.21:ScummVM Modern Theme:No Author]
 %using ../common
diff --git a/gui/themes/scummremastered.zip b/gui/themes/scummremastered.zip
index 4c3664d9074..3106f20d937 100644
Binary files a/gui/themes/scummremastered.zip and b/gui/themes/scummremastered.zip differ
diff --git a/gui/themes/scummremastered/THEMERC b/gui/themes/scummremastered/THEMERC
index 3908931d861..fee52be42ee 100644
--- a/gui/themes/scummremastered/THEMERC
+++ b/gui/themes/scummremastered/THEMERC
@@ -1,3 +1,3 @@
-[SCUMMVM_STX0.9.20:ScummVM Modern Theme Remastered:No Author]
+[SCUMMVM_STX0.9.21:ScummVM Modern Theme Remastered:No Author]
 %using ../common
 %using ../common-svg


Commit: e7219aa57f4b1a9a8078f1a2c5339723181a4f6e
    https://github.com/scummvm/scummvm/commit/e7219aa57f4b1a9a8078f1a2c5339723181a4f6e
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-02-08T15:56:42+01:00

Commit Message:
GRAPHICS: Do not crash in case help image packs are missing

Changed paths:
    graphics/image-archive.cpp


diff --git a/graphics/image-archive.cpp b/graphics/image-archive.cpp
index bc195d12a72..2246ecce366 100644
--- a/graphics/image-archive.cpp
+++ b/graphics/image-archive.cpp
@@ -39,7 +39,8 @@ ImageArchive::~ImageArchive() {
 void ImageArchive::reset() {
 #ifdef USE_PNG
 	for (auto &i : _imageCache) {
-		i._value->free();
+		if (i._value)
+			i._value->free();
 		delete i._value;
 	}
 	_imageCache.clear();
@@ -115,4 +116,3 @@ const Surface *ImageArchive::getImageSurface(const Common::Path &fname, int w, i
 }
 
 } // End of namespace Graphics
-




More information about the Scummvm-git-logs mailing list