[Scummvm-git-logs] scummvm master -> 829c600a02ad6124006ae8cc784a873f52140637

sev- noreply at scummvm.org
Sat May 28 22:40:36 UTC 2022


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

Summary:
829c600a02 GUI: Remove remains of the old color lists in *ListWidget


Commit: 829c600a02ad6124006ae8cc784a873f52140637
    https://github.com/scummvm/scummvm/commit/829c600a02ad6124006ae8cc784a873f52140637
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2022-05-29T00:39:35+02:00

Commit Message:
GUI: Remove remains of the old color lists in *ListWidget

Changed paths:
    engines/testbed/config.cpp
    engines/testbed/config.h
    engines/testbed/testbed.cpp
    gui/ThemeEngine.h
    gui/browser.cpp
    gui/launcher.cpp
    gui/remotebrowser.cpp
    gui/saveload-dialog.cpp
    gui/saveload-dialog.h
    gui/saveload.cpp
    gui/saveload.h
    gui/widgets/groupedlist.cpp
    gui/widgets/groupedlist.h
    gui/widgets/list.cpp
    gui/widgets/list.h


diff --git a/engines/testbed/config.cpp b/engines/testbed/config.cpp
index 48535a7aa0e..7124d75d168 100644
--- a/engines/testbed/config.cpp
+++ b/engines/testbed/config.cpp
@@ -38,25 +38,23 @@ TestbedOptionsDialog::TestbedOptionsDialog(Common::Array<Testsuite *> &tsList, T
 
 	// Construct a String Array
 	Common::Array<Testsuite *>::const_iterator iter;
-	Common::String description;
+	Common::U32String description;
 	uint selected = 0;
 
 	for (iter = tsList.begin(); iter != tsList.end(); iter++) {
 		_testSuiteArray.push_back(*iter);
 		description = (*iter)->getDescription();
 		if ((*iter)->isEnabled()) {
-			_testSuiteDescArray.push_back(description + "(selected)");
+			_testSuiteDescArray.push_back(GUI::ListWidget::getThemeColor(GUI::ThemeEngine::kFontColorNormal) + description + "(selected)");
 			selected++;
-			_colors.push_back(GUI::ThemeEngine::kFontColorNormal);
 		} else {
-			_testSuiteDescArray.push_back(description);
-			_colors.push_back(GUI::ThemeEngine::kFontColorAlternate);
+			_testSuiteDescArray.push_back(GUI::ListWidget::getThemeColor(GUI::ThemeEngine::kFontColorAlternate) + description);
 		}
 	}
 
 	_testListDisplay = new TestbedListWidget(this, "TestbedOptions.List", _testSuiteArray);
 	_testListDisplay->setNumberingMode(GUI::kListNumberingOff);
-	_testListDisplay->setList(_testSuiteDescArray, &_colors);
+	_testListDisplay->setList(_testSuiteDescArray);
 
 	// This list shouldn't be editable
 	_testListDisplay->setEditable(false);
@@ -157,13 +155,13 @@ void TestbedInteractionDialog::addButton(uint w, uint h, const Common::String na
 	_yOffset += h;
 }
 
-void TestbedInteractionDialog::addList(uint x, uint y, uint w, uint h, const Common::Array<Common::U32String> &strArray, GUI::ListWidget::ColorList *colors, uint yPadding) {
+void TestbedInteractionDialog::addList(uint x, uint y, uint w, uint h, const Common::Array<Common::U32String> &strArray, uint yPadding) {
 	_yOffset += yPadding;
 	GUI::ListWidget *list = new GUI::ListWidget(this, x, y, w, h);
 	list->resize(x, y, w, h);
 	list->setEditable(false);
 	list->setNumberingMode(GUI::kListNumberingOff);
-	list->setList(strArray, colors);
+	list->setList(strArray);
 	_yOffset += h;
 }
 
diff --git a/engines/testbed/config.h b/engines/testbed/config.h
index c58aa6c53b8..e2d2a2ba120 100644
--- a/engines/testbed/config.h
+++ b/engines/testbed/config.h
@@ -72,23 +72,16 @@ public:
 
 	void markAsSelected(int i) {
 		if (!_list[i].encode().contains("selected")) {
-			_list[i] += Common::U32String(" (selected)");
+			_list[i] = GUI::ListWidget::getThemeColor(GUI::ThemeEngine::kFontColorNormal) + _testSuiteArray[i]->getDescription() + " (selected)";
 		}
-		_listColors[i] = GUI::ThemeEngine::kFontColorNormal;
 		draw();
 	}
 
 	void markAsDeselected(int i) {
 		if (_list[i].encode().contains("selected")) {
-			_list[i] = _testSuiteArray[i]->getDescription();
+			_list[i] = GUI::ListWidget::getThemeColor(GUI::ThemeEngine::kFontColorAlternate) +
+					_testSuiteArray[i]->getDescription();
 		}
-		_listColors[i] = GUI::ThemeEngine::kFontColorAlternate;
-		draw();
-	}
-
-	void setColor(uint32 indx, GUI::ThemeEngine::FontColor color) {
-		assert(indx < _listColors.size());
-		_listColors[indx] = color;
 		draw();
 	}
 
@@ -103,7 +96,6 @@ public:
 	void handleCommand(GUI::CommandSender *sender, uint32 cmd, uint32 data) override;
 
 private:
-	GUI::ListWidget::ColorList _colors;
 	GUI::ButtonWidget	*_selectButton;
 	Common::Array<Testsuite *> _testSuiteArray;
 	Common::U32StringArray _testSuiteDescArray;
@@ -119,7 +111,7 @@ public:
 	void addButton(uint w, uint h, const Common::String name, uint32 cmd, uint xOffset = 0, uint yPadding = 8);
 	void addButtonXY(uint x, uint y, uint w, uint h, const Common::String name, uint32 cmd);
 	void addText(uint w, uint h, const Common::String text, Graphics::TextAlign textAlign, uint xOffset, uint yPadding = 8);
-	void addList(uint x, uint y, uint w, uint h, const Common::Array<Common::U32String> &strArray, GUI::ListWidget::ColorList *colors = 0, uint yPadding = 8);
+	void addList(uint x, uint y, uint w, uint h, const Common::Array<Common::U32String> &strArray, uint yPadding = 8);
 protected:
 	Common::Array<GUI::ButtonWidget *> _buttonArray;
 	uint _xOffset;
diff --git a/engines/testbed/testbed.cpp b/engines/testbed/testbed.cpp
index 4c8b1e37550..e472dbe8bb7 100644
--- a/engines/testbed/testbed.cpp
+++ b/engines/testbed/testbed.cpp
@@ -59,20 +59,21 @@ void TestbedExitDialog::init() {
 	Common::String text = "Thank you for using ScummVM testbed! Here are yor summarized results:";
 	addText(450, 20, text, Graphics::kTextAlignCenter, _xOffset, 15);
 	Common::Array<Common::U32String> strArray;
-	GUI::ListWidget::ColorList colors;
+	Common::U32String color;
 
 	for (Common::Array<Testsuite *>::const_iterator i = _testsuiteList.begin(); i != _testsuiteList.end(); ++i) {
-		strArray.push_back(Common::String::format("%s :", (*i)->getDescription()));
-		colors.push_back(GUI::ThemeEngine::kFontColorNormal);
+		color = GUI::ListWidget::getThemeColor(GUI::ThemeEngine::kFontColorNormal);
+		strArray.push_back(color + Common::U32String::format("%s :", (*i)->getDescription()));
+
+		color = GUI::ListWidget::getThemeColor(GUI::ThemeEngine::kFontColorAlternate);
 		if ((*i)->isEnabled()) {
-			strArray.push_back(Common::String::format("Passed: %d  Failed: %d Skipped: %d", (*i)->getNumTestsPassed(), (*i)->getNumTestsFailed(), (*i)->getNumTestsSkipped()));
+			strArray.push_back(color + Common::U32String::format("Passed: %d  Failed: %d Skipped: %d", (*i)->getNumTestsPassed(), (*i)->getNumTestsFailed(), (*i)->getNumTestsSkipped()));
 		} else {
-			strArray.push_back(Common::U32String("Skipped"));
+			strArray.push_back(color + Common::U32String("Skipped"));
 		}
-		colors.push_back(GUI::ThemeEngine::kFontColorAlternate);
 	}
 
-	addList(0, _yOffset, 500, 200, strArray, &colors);
+	addList(0, _yOffset, 500, 200, strArray);
 	text = "More Details can be viewed in the Log file : " + ConfParams.getLogFilename();
 	addText(450, 20, text, Graphics::kTextAlignLeft, 0, 0);
 	if (ConfParams.getLogDirectory().size()) {
diff --git a/gui/ThemeEngine.h b/gui/ThemeEngine.h
index 3e1f3fe6463..e2728a4f881 100644
--- a/gui/ThemeEngine.h
+++ b/gui/ThemeEngine.h
@@ -279,6 +279,7 @@ public:
 
 	/// Font color selector
 	enum FontColor {
+		kFontColorFormatting = -1,	///< Use color from formatting
 		kFontColorNormal = 0,       ///< The default color of the theme
 		kFontColorAlternate = 1,    ///< Alternative font color
 		kFontColorMax
diff --git a/gui/browser.cpp b/gui/browser.cpp
index 89c5c1fcfd5..110f1757d95 100644
--- a/gui/browser.cpp
+++ b/gui/browser.cpp
@@ -232,25 +232,22 @@ void BrowserDialog::updateListing() {
 
 	// Populate the ListWidget
 	Common::U32StringArray list;
-	ListWidget::ColorList colors;
+	Common::U32String color = ListWidget::getThemeColor(ThemeEngine::kFontColorNormal);
 	for (Common::FSList::iterator i = _nodeContent.begin(); i != _nodeContent.end(); ++i) {
-		if (i->isDirectory())
-			list.push_back(i->getName() + "/");
-		else
-			list.push_back(i->getName());
-
 		if (_isDirBrowser) {
 			if (i->isDirectory())
-				colors.push_back(ThemeEngine::kFontColorNormal);
+				color = ListWidget::getThemeColor(ThemeEngine::kFontColorNormal);
 			else
-				colors.push_back(ThemeEngine::kFontColorAlternate);
+				color = ListWidget::getThemeColor(ThemeEngine::kFontColorAlternate);
 		}
+
+		if (i->isDirectory())
+			list.push_back(color + Common::U32String(i->getName() + "/"));
+		else
+			list.push_back(color + Common::U32String(i->getName()));
 	}
 
-	if (_isDirBrowser)
-		_fileList->setList(list, &colors);
-	else
-		_fileList->setList(list);
+	_fileList->setList(list);
 	_fileList->scrollTo(0);
 
 	// Finally, redraw
diff --git a/gui/launcher.cpp b/gui/launcher.cpp
index 0e5c4532a68..1dcdfa626d5 100644
--- a/gui/launcher.cpp
+++ b/gui/launcher.cpp
@@ -1009,7 +1009,6 @@ void LauncherSimple::build() {
 void LauncherSimple::updateListing() {
 	Common::U32StringArray l;
 	Common::Array<const Common::ConfigManager::Domain *> attrs;
-	ListWidget::ColorList colors;
 	ThemeEngine::FontColor color;
 	int numEntries = ConfMan.getInt("gui_list_max_scan_entries");
 
@@ -1067,13 +1066,12 @@ void LauncherSimple::updateListing() {
 		Common::U32String gameDesc = GUI::ListWidget::getThemeColor(color) + Common::U32String(iter->description);
 
 		l.push_back(gameDesc);
-		colors.push_back(color);
 		attrs.push_back(iter->domain);
 		_domains.push_back(iter->key);
 	}
 
 	const int oldSel = _list->getSelected();
-	_list->setList(l, &colors);
+	_list->setList(l);
 
 	groupEntries(attrs);
 
diff --git a/gui/remotebrowser.cpp b/gui/remotebrowser.cpp
index 894c755d56e..4e7810bac68 100644
--- a/gui/remotebrowser.cpp
+++ b/gui/remotebrowser.cpp
@@ -144,18 +144,15 @@ void RemoteBrowserDialog::updateListing() {
 	if (!_navigationLocked) {
 		// Populate the ListWidget
 		Common::U32StringArray list;
-		ListWidget::ColorList colors;
 		for (Common::Array<Cloud::StorageFile>::iterator i = _nodeContent.begin(); i != _nodeContent.end(); ++i) {
 			if (i->isDirectory()) {
-				list.push_back(i->name() + "/");
-				colors.push_back(ThemeEngine::kFontColorNormal);
+				list.push_back(ListWidget::getThemeColor(ThemeEngine::kFontColorNormal) + Common::U32String(i->name() + "/"));
 			} else {
-				list.push_back(i->name());
-				colors.push_back(ThemeEngine::kFontColorAlternate);
+				list.push_back(ListWidget::getThemeColor(ThemeEngine::kFontColorAlternate) + Common::U32String(i->name()));
 			}
 		}
 
-		_fileList->setList(list, &colors);
+		_fileList->setList(list);
 		_fileList->scrollTo(0);
 	}
 
diff --git a/gui/saveload-dialog.cpp b/gui/saveload-dialog.cpp
index f62baa0da92..32b803da822 100644
--- a/gui/saveload-dialog.cpp
+++ b/gui/saveload-dialog.cpp
@@ -437,7 +437,7 @@ int SaveLoadChooserSimple::runIntern() {
 	return Dialog::runModal();
 }
 
-const Common::U32String &SaveLoadChooserSimple::getResultString() const {
+const Common::U32String SaveLoadChooserSimple::getResultString() const {
 	int selItem = _list->getSelected();
 	return (selItem >= 0) ? _list->getSelectedString() : _resultString;
 }
@@ -628,8 +628,7 @@ void SaveLoadChooserSimple::updateSelection(bool redraw) {
 		if (startEditMode) {
 			_list->startEditMode();
 
-			if (_chooseButton->isEnabled() && _list->getSelectedString() == _("Untitled saved game") &&
-					_list->getSelectionColor() == ThemeEngine::kFontColorAlternate) {
+			if (_chooseButton->isEnabled() && _list->getSelectedString() == _("Untitled saved game")) {
 				_list->setEditString(Common::U32String());
 				_list->setEditColor(ThemeEngine::kFontColorNormal);
 			}
@@ -691,7 +690,7 @@ void SaveLoadChooserSimple::updateSaveList() {
 	int curSlot = 0;
 	int saveSlot = 0;
 	Common::U32StringArray saveNames;
-	ListWidget::ColorList colors;
+	ThemeEngine::FontColor color = ThemeEngine::kFontColorNormal;
 	for (SaveStateList::const_iterator x = _saveList.begin(); x != _saveList.end(); ++x) {
 		// Handle gaps in the list of save games
 		saveSlot = x->getSaveSlot();
@@ -699,8 +698,7 @@ void SaveLoadChooserSimple::updateSaveList() {
 			while (curSlot < saveSlot) {
 				SaveStateDescriptor dummySave(_metaEngine, curSlot, "");
 				_saveList.insert_at(curSlot, dummySave);
-				saveNames.push_back(dummySave.getDescription());
-				colors.push_back(ThemeEngine::kFontColorNormal);
+				saveNames.push_back(GUI::ListWidget::getThemeColor(color) + dummySave.getDescription());
 				curSlot++;
 			}
 
@@ -717,12 +715,12 @@ void SaveLoadChooserSimple::updateSaveList() {
 		trimmedDescription.trim();
 		if (trimmedDescription.empty()) {
 			description = _("Untitled saved game");
-			colors.push_back(ThemeEngine::kFontColorAlternate);
+			color = ThemeEngine::kFontColorAlternate;
 		} else {
-			colors.push_back((x->getLocked() ? ThemeEngine::kFontColorAlternate : ThemeEngine::kFontColorNormal));
+			color = x->getLocked() ? ThemeEngine::kFontColorAlternate : ThemeEngine::kFontColorNormal;
 		}
 
-		saveNames.push_back(description);
+		saveNames.push_back(GUI::ListWidget::getThemeColor(color) + description);
 		curSlot++;
 	}
 
@@ -738,16 +736,16 @@ void SaveLoadChooserSimple::updateSaveList() {
 	}
 #endif
 
-	Common::String emptyDesc;
+	Common::U32String emptyDesc;
+	color = ThemeEngine::kFontColorNormal;
 	for (int i = curSlot; i <= maximumSaveSlots; i++) {
 		saveNames.push_back(emptyDesc);
 		SaveStateDescriptor dummySave(_metaEngine, i, "");
 		_saveList.push_back(dummySave);
-		colors.push_back(ThemeEngine::kFontColorNormal);
 	}
 
 	int selected = _list->getSelected();
-	_list->setList(saveNames, &colors);
+	_list->setList(saveNames);
 	if (selected >= 0 && selected < (int)saveNames.size())
 		_list->setSelected(selected);
 	else
@@ -798,7 +796,7 @@ SaveLoadChooserGrid::~SaveLoadChooserGrid() {
 	delete _pageDisplay;
 }
 
-const Common::U32String &SaveLoadChooserGrid::getResultString() const {
+const Common::U32String SaveLoadChooserGrid::getResultString() const {
 	return _resultString;
 }
 
diff --git a/gui/saveload-dialog.h b/gui/saveload-dialog.h
index 2eb431d2d51..3569892ef3c 100644
--- a/gui/saveload-dialog.h
+++ b/gui/saveload-dialog.h
@@ -91,7 +91,7 @@ public:
 #endif // !DISABLE_SAVELOADCHOOSER_GRID
 
 	int run(const Common::String &target, const MetaEngine *metaEngine);
-	virtual const Common::U32String &getResultString() const = 0;
+	virtual const Common::U32String getResultString() const = 0;
 
 protected:
 	virtual int runIntern() = 0;
@@ -138,7 +138,7 @@ public:
 
 	void handleCommand(CommandSender *sender, uint32 cmd, uint32 data) override;
 
-	const Common::U32String &getResultString() const override;
+	const Common::U32String getResultString() const override;
 
 	void reflowLayout() override;
 
@@ -194,7 +194,7 @@ public:
 	SaveLoadChooserGrid(const Common::U32String &title, bool saveMode);
 	~SaveLoadChooserGrid() override;
 
-	const Common::U32String &getResultString() const override;
+	const Common::U32String getResultString() const override;
 
 	void open() override;
 
diff --git a/gui/saveload.cpp b/gui/saveload.cpp
index 618e3eb0d89..dc84f898c02 100644
--- a/gui/saveload.cpp
+++ b/gui/saveload.cpp
@@ -112,7 +112,7 @@ int SaveLoadChooser::runModalWithMetaEngineAndTarget(const MetaEngine *engine, c
 	return ret;
 }
 
-const Common::U32String &SaveLoadChooser::getResultString() const {
+const Common::U32String SaveLoadChooser::getResultString() const {
 	assert(_impl);
 	return _impl->getResultString();
 }
diff --git a/gui/saveload.h b/gui/saveload.h
index 5203874fee1..da1c33b006c 100644
--- a/gui/saveload.h
+++ b/gui/saveload.h
@@ -51,7 +51,7 @@ public:
 	int runModalWithCurrentTarget();
 	int runModalWithMetaEngineAndTarget(const MetaEngine *engine, const Common::String &target);
 
-	const Common::U32String &getResultString() const;
+	const Common::U32String getResultString() const;
 
 	/**
 	 * Creates a default save description for the specified slot. Depending
diff --git a/gui/widgets/groupedlist.cpp b/gui/widgets/groupedlist.cpp
index c9159570d50..2cd7849da70 100644
--- a/gui/widgets/groupedlist.cpp
+++ b/gui/widgets/groupedlist.cpp
@@ -42,8 +42,8 @@ GroupedListWidget::GroupedListWidget(Dialog *boss, const Common::String &name, c
 	_groupsVisible = true;
 }
 
-void GroupedListWidget::setList(const Common::U32StringArray &list, const ColorList *colors) {
-	ListWidget::setList(list, colors);
+void GroupedListWidget::setList(const Common::U32StringArray &list) {
+	ListWidget::setList(list);
 
 	groupByAttribute();
 	scrollBarRecalc();
@@ -120,7 +120,6 @@ void GroupedListWidget::sortGroups() {
 		uint groupID = _groupValueIndex[header];
 
 		if (_groupsVisible) {
-			_listColors.insert_at(curListSize, ThemeEngine::kFontColorNormal);
 			_listIndex.push_back(kGroupTag - groupID);
 
 			displayedHeader.toUppercase();
@@ -298,17 +297,6 @@ void GroupedListWidget::drawWidget() {
 			pad = 0;
 		}
 
-#if 0
-		ThemeEngine::FontColor color = ThemeEngine::kFontColorNormal;
-
-		if (!_listColors.empty()) {
-			if (_filter.empty() || _selectedItem == -1)
-				color = _listColors[pos];
-			else
-				color = _listColors[_listIndex[pos]];
-		}
-#endif
-
 		Common::Rect r1(_x + r.left, y, _x + r.right, y + fontHeight);
 
 		if (g_gui.useRTL()) {
@@ -321,17 +309,17 @@ void GroupedListWidget::drawWidget() {
 			}
 		}
 
+		ThemeEngine::FontColor color = ThemeEngine::kFontColorFormatting;
+
 		if (_selectedItem == pos && _editMode) {
 			buffer = _editString;
-#if 0
 			color = _editColor;
-#endif
 			adjustOffset();
 		} else {
 			buffer = _list[pos];
 		}
 
-		drawFormattedText(r1, buffer, _state, _drawAlign, inverted, pad, true);
+		drawFormattedText(r1, buffer, _state, _drawAlign, inverted, pad, true, color);
 
 		// If in numbering mode & using RTL layout in GUI, we print a number suffix after drawing the text
 		if (_numberingMode != kListNumberingOff && g_gui.useRTL()) {
diff --git a/gui/widgets/groupedlist.h b/gui/widgets/groupedlist.h
index 292feb31009..0c85d47e6f9 100644
--- a/gui/widgets/groupedlist.h
+++ b/gui/widgets/groupedlist.h
@@ -46,7 +46,7 @@ public:
 	GroupedListWidget(Dialog *boss, const Common::String &name, const Common::U32String &tooltip = Common::U32String(), uint32 cmd = 0);
 	GroupedListWidget(Dialog *boss, int x, int y, int w, int h, const Common::U32String &tooltip = Common::U32String(), uint32 cmd = 0);
 
-	void setList(const Common::U32StringArray &list, const ColorList *colors = nullptr);
+	void setList(const Common::U32StringArray &list);
 	void setAttributeValues(const Common::U32StringArray &attrValues);
 	void setMetadataNames(const Common::StringMap &metadata);
 
diff --git a/gui/widgets/list.cpp b/gui/widgets/list.cpp
index 0685c0dbbf0..c2d9a305e05 100644
--- a/gui/widgets/list.cpp
+++ b/gui/widgets/list.cpp
@@ -179,17 +179,7 @@ void ListWidget::setSelected(int item) {
 	}
 }
 
-ThemeEngine::FontColor ListWidget::getSelectionColor() const {
-	if (_listColors.empty())
-		return ThemeEngine::kFontColorNormal;
-
-	if (_filter.empty())
-		return _listColors[_selectedItem];
-	else
-		return _listColors[_listIndex[_selectedItem]];
-}
-
-void ListWidget::setList(const Common::U32StringArray &list, const ColorList *colors) {
+void ListWidget::setList(const Common::U32StringArray &list) {
 	if (_editMode && _caretVisible)
 		drawCaret(true);
 
@@ -198,12 +188,6 @@ void ListWidget::setList(const Common::U32StringArray &list, const ColorList *co
 	_list = list;
 	_filter.clear();
 	_listIndex.clear();
-	_listColors.clear();
-
-	if (colors) {
-		_listColors = *colors;
-		assert(_listColors.size() == _dataList.size());
-	}
 
 	int size = list.size();
 	if (_currentPos >= size)
@@ -216,19 +200,7 @@ void ListWidget::setList(const Common::U32StringArray &list, const ColorList *co
 	scrollBarRecalc();
 }
 
-void ListWidget::append(const Common::String &s, ThemeEngine::FontColor color) {
-	if (_dataList.size() == _listColors.size()) {
-		// If the color list has the size of the data list, we append the color.
-		_listColors.push_back(color);
-	} else if (!_listColors.size() && color != ThemeEngine::kFontColorNormal) {
-		// If it's the first entry to use a non default color, we will fill
-		// up all other entries of the color list with the default color and
-		// add the requested color for the new entry.
-		for (uint i = 0; i < _dataList.size(); ++i)
-			_listColors.push_back(ThemeEngine::kFontColorNormal);
-		_listColors.push_back(color);
-	}
-
+void ListWidget::append(const Common::String &s) {
 	Common::U32String stripped = stripGUIformatting(s);
 	_dataList.push_back(ListData(s, stripped));
 	_cleanedList.push_back(stripped);
@@ -589,17 +561,6 @@ void ListWidget::drawWidget() {
 			pad = 0;
 		}
 
-#if 0
-		ThemeEngine::FontColor color = ThemeEngine::kFontColorNormal;
-
-		if (!_listColors.empty()) {
-			if (_filter.empty() || _selectedItem == -1)
-				color = _listColors[pos];
-			else
-				color = _listColors[_listIndex[pos]];
-		}
-#endif
-
 		Common::Rect r1(_x + r.left, y, _x + r.right, y + fontHeight);
 
 		if (g_gui.useRTL()) {
@@ -612,17 +573,17 @@ void ListWidget::drawWidget() {
 			}
 		}
 
+		ThemeEngine::FontColor color = ThemeEngine::kFontColorFormatting;
+
 		if (_selectedItem == pos && _editMode) {
 			buffer = _editString;
-#if 0
 			color = _editColor;
-#endif
 			adjustOffset();
 		} else {
 			buffer = _list[pos];
 		}
 
-		drawFormattedText(r1, buffer, _state, _drawAlign, inverted, pad, true);
+		drawFormattedText(r1, buffer, _state, _drawAlign, inverted, pad, true, color);
 
 		// If in numbering mode & using RTL layout in GUI, we print a number suffix after drawing the text
 		if (_numberingMode != kListNumberingOff && g_gui.useRTL()) {
@@ -702,14 +663,7 @@ void ListWidget::startEditMode() {
 		_editMode = true;
 		setEditString(_list[_selectedItem]);
 		_caretPos = _editString.size();	// Force caret to the *end* of the selection.
-		if (_listColors.empty()) {
-			_editColor = ThemeEngine::kFontColorNormal;
-		} else {
-			if (_filter.empty())
-				_editColor = _listColors[_selectedItem];
-			else
-				_editColor = _listColors[_listIndex[_selectedItem]];
-		}
+		_editColor = ThemeEngine::kFontColorNormal;
 		markAsDirty();
 		g_system->setFeatureState(OSystem::kFeatureVirtualKeyboard, true);
 	}
@@ -901,11 +855,12 @@ Common::U32String ListWidget::stripGUIformatting(const Common::U32String &str) {
 }
 
 void ListWidget::drawFormattedText(const Common::Rect &r, const Common::U32String &str, ThemeEngine::WidgetStateInfo state,
-				Graphics::TextAlign align, ThemeEngine::TextInversionState inverted, int deltax, bool useEllipsis) {
+				Graphics::TextAlign align, ThemeEngine::TextInversionState inverted, int deltax, bool useEllipsis,
+				ThemeEngine::FontColor color) {
 	Common::U32String chunk;
 	const uint32 *s = str.u32_str();
-	ThemeEngine::FontStyle font = ThemeEngine::kFontStyleBold;
-	ThemeEngine::FontColor color = ThemeEngine::kFontColorNormal;
+	ThemeEngine::FontStyle curfont = ThemeEngine::kFontStyleBold;
+	ThemeEngine::FontColor curcolor = ThemeEngine::kFontColorNormal;
 	Common::U32String tmp;
 
 	while (*s) {
@@ -915,9 +870,9 @@ void ListWidget::drawFormattedText(const Common::Rect &r, const Common::U32Strin
 		}
 
 		if (chunk.size()) {
-			g_gui.theme()->drawText(r, chunk, state, align, inverted, deltax, true, font, color);
+			g_gui.theme()->drawText(r, chunk, state, align, inverted, deltax, true, curfont, curcolor);
 
-			deltax += g_gui.theme()->getStringWidth(chunk, font);
+			deltax += g_gui.theme()->getStringWidth(chunk, curfont);
 			chunk.clear();
 		}
 
@@ -945,7 +900,10 @@ void ListWidget::drawFormattedText(const Common::Rect &r, const Common::U32Strin
 			if (*s == '}')	// skip the closing bracket
 				s++;
 
-			color = getThemeColor(tmp);
+			if (color == ThemeEngine::kFontColorFormatting)
+				curcolor = getThemeColor(tmp);
+			else
+				curcolor = color;	// Ignore color and use the requested one
 
 			break;
 
@@ -955,7 +913,7 @@ void ListWidget::drawFormattedText(const Common::Rect &r, const Common::U32Strin
 	}
 
 	if (chunk.size())
-		g_gui.theme()->drawText(r, chunk, state, align, inverted, deltax, true, font, color);
+		g_gui.theme()->drawText(r, chunk, state, align, inverted, deltax, true, curfont, curcolor);
 }
 
 } // End of namespace GUI
diff --git a/gui/widgets/list.h b/gui/widgets/list.h
index d528e6077c7..873364b6394 100644
--- a/gui/widgets/list.h
+++ b/gui/widgets/list.h
@@ -48,8 +48,6 @@ enum {
 /* ListWidget */
 class ListWidget : public EditableWidget {
 public:
-	typedef Common::Array<ThemeEngine::FontColor> ColorList;
-
 	typedef bool (*FilterMatcher)(void *arg, int idx, const Common::U32String &item, Common::U32String token);
 
 	struct ListData {
@@ -65,7 +63,6 @@ protected:
 	Common::U32StringArray	_list;
 	Common::U32StringArray	_cleanedList;
 	ListDataArray	_dataList;
-	ColorList		_listColors;
 	Common::Array<int>	_listIndex;
 	bool			_editable;
 	bool			_editMode;
@@ -107,16 +104,15 @@ public:
 	bool containsWidget(Widget *) const override;
 	Widget *findWidget(int x, int y) override;
 
-	void setList(const Common::U32StringArray &list, const ColorList *colors = nullptr);
+	void setList(const Common::U32StringArray &list);
 	const Common::U32StringArray &getList()	const			{ return _cleanedList; }
 
-	void append(const Common::String &s, ThemeEngine::FontColor color = ThemeEngine::kFontColorNormal);
+	void append(const Common::String &s);
 
 	void setSelected(int item);
 	int getSelected() const						{ return (_filter.empty() || _selectedItem == -1) ? _selectedItem : _listIndex[_selectedItem]; }
 
-	const Common::U32String &getSelectedString() const	{ return _list[_selectedItem]; }
-	ThemeEngine::FontColor getSelectionColor() const;
+	const Common::U32String getSelectedString() const	{ return stripGUIformatting(_list[_selectedItem]); }
 
 	void setNumberingMode(NumberingMode numberingMode)	{ _numberingMode = numberingMode; }
 
@@ -179,7 +175,8 @@ protected:
 
 	void drawFormattedText(const Common::Rect &r, const Common::U32String &str, ThemeEngine::WidgetStateInfo state = ThemeEngine::kStateEnabled,
 					Graphics::TextAlign align = Graphics::kTextAlignCenter,
-					ThemeEngine::TextInversionState inverted = ThemeEngine::kTextInversionNone, int deltax = 0, bool useEllipsis = true);
+					ThemeEngine::TextInversionState inverted = ThemeEngine::kTextInversionNone, int deltax = 0, bool useEllipsis = true,
+					ThemeEngine::FontColor color = ThemeEngine::kFontColorFormatting);
 };
 
 } // End of namespace GUI




More information about the Scummvm-git-logs mailing list