[Scummvm-git-logs] scummvm master -> 346e5da5cb52fd7695424380ed188430d84e177a
sev-
noreply at scummvm.org
Sat Jan 31 22:40:03 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:
346e5da5cb GUI: Fix up/down key behavior in list.cpp
Commit: 346e5da5cb52fd7695424380ed188430d84e177a
https://github.com/scummvm/scummvm/commit/346e5da5cb52fd7695424380ed188430d84e177a
Author: Eugene Sandulenko (sev at scummvm.org)
Date: 2026-01-31T23:39:56+01:00
Commit Message:
GUI: Fix up/down key behavior in list.cpp
The introduced change was not logical as it was forcing the
multiselection mode. Now, in order to keep the selection,
you need to hold the Shift key
Changed paths:
gui/widgets/list.cpp
diff --git a/gui/widgets/list.cpp b/gui/widgets/list.cpp
index 30c7490bf4e..b6a5c2ac7f5 100644
--- a/gui/widgets/list.cpp
+++ b/gui/widgets/list.cpp
@@ -282,14 +282,14 @@ int ListWidget::getVisualPos(int dataIndex) const {
if (_listIndex.empty()) {
return dataIndex;
}
-
+
// Find visual index by searching _listIndex for dataIndex
for (uint i = 0; i < _listIndex.size(); ++i) {
if (_listIndex[i] == dataIndex) {
return i;
}
}
-
+
// Not found
return -1;
}
@@ -550,12 +550,21 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
case Common::KEYCODE_DOWN:
// Down: Add next item to selection (Ctrl+Click logic without toggle)
if (_selectedItem < (int)_list.size() - 1) {
- int newItem = _selectedItem + 1;
- markSelectedItem(newItem, true);
- _selectedItem = newItem;
- _lastSelectionStartItem = newItem;
- scrollToCurrent();
- dirty = true;
+ if ( g_system->getEventManager()->getModifierState() & Common::KBD_SHIFT) {
+ int newItem = _selectedItem + 1;
+ if (_lastSelectionStartItem < newItem)
+ markSelectedItem(newItem, true);
+ else
+ markSelectedItem(_selectedItem, false);
+ _selectedItem = newItem;
+ scrollToCurrent();
+ dirty = true;
+ } else {
+ clearSelection();
+ _selectedItem++;
+ markSelectedItem(_selectedItem, true);
+ _lastSelectionStartItem = _selectedItem;
+ }
}
break;
@@ -592,12 +601,21 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
case Common::KEYCODE_UP:
// Up: Add previous item to selection (Ctrl+Click logic without toggle)
if (_selectedItem > 0) {
- int newItem = _selectedItem - 1;
- markSelectedItem(newItem, true);
- _selectedItem = newItem;
- _lastSelectionStartItem = newItem;
- scrollToCurrent();
- dirty = true;
+ if (g_system->getEventManager()->getModifierState() & Common::KBD_SHIFT) {
+ int newItem = _selectedItem - 1;
+ if (_lastSelectionStartItem > newItem)
+ markSelectedItem(newItem, true);
+ else
+ markSelectedItem(_selectedItem, false);
+ _selectedItem = newItem;
+ scrollToCurrent();
+ dirty = true;
+ } else {
+ clearSelection();
+ _selectedItem--;
+ markSelectedItem(_selectedItem, true);
+ _lastSelectionStartItem = _selectedItem;
+ }
}
break;
More information about the Scummvm-git-logs
mailing list