[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