[Scummvm-git-logs] scummvm master -> 6ec7d5b811b59dd44aabc2be7360a10b22699956

sev- noreply at scummvm.org
Fri May 10 10:16:14 UTC 2024


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:
6ec7d5b811 GUI: Move Mass Add list code into MassAddListWidget


Commit: 6ec7d5b811b59dd44aabc2be7360a10b22699956
    https://github.com/scummvm/scummvm/commit/6ec7d5b811b59dd44aabc2be7360a10b22699956
Author: sluicebox (22204938+sluicebox at users.noreply.github.com)
Date: 2024-05-10T12:16:11+02:00

Commit Message:
GUI: Move Mass Add list code into MassAddListWidget

Fixes list colors in other dialogs that use ListWidget

See: e9f2468df9c442b569081feb384a8fa2ed3fcc91

Changed paths:
    gui/massadd.cpp
    gui/massadd.h
    gui/widgets/list.cpp
    gui/widgets/list.h


diff --git a/gui/massadd.cpp b/gui/massadd.cpp
index 63102523147..1c90a19aa63 100644
--- a/gui/massadd.cpp
+++ b/gui/massadd.cpp
@@ -82,7 +82,7 @@ MassAddDialog::MassAddDialog(const Common::FSNode &startDir)
 	_dirProgressText->setAlign(Graphics::kTextAlignCenter);
 	_gameProgressText->setAlign(Graphics::kTextAlignCenter);
 
-	_list = new ListWidget(this, "MassAdd.GameList");
+	_list = new MassAddListWidget(this, "MassAdd.GameList");
 	_list->setEditable(false);
 	_list->setNumberingMode(kListNumberingOff);
 	_list->setList(l);
@@ -100,7 +100,7 @@ MassAddDialog::MassAddDialog(const Common::FSNode &startDir)
 
 		// Remove trailing slash, so that "/foo" and "/foo/" match.
 		// This works around a bug in the POSIX FS code (and others?)
-		// where paths are not normalized (so FSNodes refering to identical
+		// where paths are not normalized (so FSNodes referring to identical
 		// FS objects may return different values in path()).
 		path.removeTrailingSeparators();
 		if (!path.empty()) {
diff --git a/gui/massadd.h b/gui/massadd.h
index b693a39324e..004c7b2b209 100644
--- a/gui/massadd.h
+++ b/gui/massadd.h
@@ -32,6 +32,7 @@
 namespace GUI {
 
 class StaticTextWidget;
+class MassAddListWidget;
 
 class MassAddDialog : public Dialog {
 public:
@@ -54,7 +55,7 @@ private:
 	void updateGameList();
 
 	/**
-	 * Map each path occuring in the config file to the target(s) using that path.
+	 * Map each path occurring in the config file to the target(s) using that path.
 	 * Used to detect whether a potential new target is already present in the
 	 * config manager.
 	 */
@@ -69,9 +70,29 @@ private:
 	StaticTextWidget *_dirProgressText;
 	StaticTextWidget *_gameProgressText;
 
-	ListWidget *_list;
+	MassAddListWidget *_list;
 };
 
+class MassAddListWidget : public ListWidget {
+public:
+	MassAddListWidget(Dialog *boss, const Common::String &name)
+		: ListWidget(boss, name) { }
+
+	void appendToSelectedList(bool selected) { _listSelected.push_back(selected); }
+	void clearSelectedList() { _listSelected.clear(); }
+
+protected:
+	ThemeEngine::WidgetStateInfo getItemState(int item) const override {
+		// Display selected/unselected games in mass detection as enabled/disabled items.
+		if (item < (signed int)_listSelected.size() && _listSelected[item]) {
+			return ThemeEngine::kStateEnabled;
+		} else {
+			return ThemeEngine::kStateDisabled;
+		}
+	}
+
+	Common::Array<bool>	_listSelected;
+};
 
 } // End of namespace GUI
 
diff --git a/gui/widgets/list.cpp b/gui/widgets/list.cpp
index deda99f4163..0bbec31b6a7 100644
--- a/gui/widgets/list.cpp
+++ b/gui/widgets/list.cpp
@@ -559,11 +559,8 @@ void ListWidget::drawWidget() {
 		if (_selectedItem == pos)
 			inverted = _inversion;
 
-		// Display selected/unselected games in mass detection as enabled/disabled items.
-		if (pos < (signed int)_listSelected.size() && _listSelected[pos])
-			_state = ThemeEngine::kStateEnabled;
-		else
-			_state = ThemeEngine::kStateDisabled;
+		// Get state for drawing the item text
+		ThemeEngine::WidgetStateInfo itemState = getItemState(pos);
 
 		Common::Rect r(getEditRect());
 		int pad = _leftPadding;
@@ -573,7 +570,7 @@ void ListWidget::drawWidget() {
 		if (_numberingMode != kListNumberingOff && g_gui.useRTL() == false) {
 			buffer = Common::String::format("%2d. ", (pos + _numberingMode));
 			g_gui.theme()->drawText(Common::Rect(_x + _hlLeftPadding, y, _x + r.left + _leftPadding, y + fontHeight),
-									buffer, _state, _drawAlign, inverted, _leftPadding, true);
+									buffer, itemState, _drawAlign, inverted, _leftPadding, true);
 			pad = 0;
 		}
 
@@ -599,7 +596,7 @@ void ListWidget::drawWidget() {
 			buffer = _list[pos];
 		}
 
-		drawFormattedText(r1, buffer, _state, _drawAlign, inverted, pad, true, color);
+		drawFormattedText(r1, buffer, itemState, _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()) {
@@ -610,7 +607,7 @@ void ListWidget::drawWidget() {
 			r2.left = r1.right;
 			r2.right = r1.right + rtlPad;
 
-			g_gui.theme()->drawText(r2, buffer, _state, _drawAlign, inverted, _leftPadding, true);
+			g_gui.theme()->drawText(r2, buffer, itemState, _drawAlign, inverted, _leftPadding, true);
 		}
 	}
 
diff --git a/gui/widgets/list.h b/gui/widgets/list.h
index b0e17ea541e..72ce9d3a844 100644
--- a/gui/widgets/list.h
+++ b/gui/widgets/list.h
@@ -96,9 +96,6 @@ protected:
 
 	FilterMatcher	_filterMatcher;
 	void			*_filterMatcherArg;
-
-	Common::Array<bool>	_listSelected;
-
 public:
 	ListWidget(Dialog *boss, const Common::String &name, const Common::U32String &tooltip = Common::U32String(), uint32 cmd = 0);
 	ListWidget(Dialog *boss, int x, int y, int w, int h, bool scale, const Common::U32String &tooltip = Common::U32String(), uint32 cmd = 0);
@@ -133,9 +130,6 @@ public:
 	void setEditColor(ThemeEngine::FontColor color) { _editColor = color; }
 	void setFilterMatcher(FilterMatcher matcher, void *arg) { _filterMatcher = matcher; _filterMatcherArg = arg; }
 
-	void appendToSelectedList(bool selected) { _listSelected.push_back(selected); }
-	void clearSelectedList() { _listSelected.clear(); }
-
 	// Made startEditMode/endEditMode for SaveLoadChooser
 	void startEditMode() override;
 	void endEditMode() override;
@@ -181,6 +175,8 @@ protected:
 	void checkBounds();
 	void scrollToCurrent();
 
+	virtual ThemeEngine::WidgetStateInfo getItemState(int item) const { return _state; }
+
 	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,




More information about the Scummvm-git-logs mailing list