[Scummvm-git-logs] scummvm master -> a1c7b9f3f3c458247be74b4c24b4f84f823e5908
sev-
noreply at scummvm.org
Fri Feb 13 18:53: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:
72b9bc70fb GUI: Fix scrolling over collapsed groups in List
a1c7b9f3f3 JANITORIAL: GUI: code cleanup
Commit: 72b9bc70fba0c31541127363b90edee715f6fa91
https://github.com/scummvm/scummvm/commit/72b9bc70fba0c31541127363b90edee715f6fa91
Author: Mohit Bankar (mohitbankar1212 at gmail.com)
Date: 2026-02-13T19:53:40+01:00
Commit Message:
GUI: Fix scrolling over collapsed groups in List
Navigation/Selection with arrow keys now scrolls at the top/bottom of the list, if there are no unselectable items.
Changed paths:
gui/widgets/list.cpp
diff --git a/gui/widgets/list.cpp b/gui/widgets/list.cpp
index 5de6dd56abd..0c2202d6628 100644
--- a/gui/widgets/list.cpp
+++ b/gui/widgets/list.cpp
@@ -309,6 +309,7 @@ void ListWidget::scrollTo(int item) {
_currentPos = item;
checkBounds();
scrollBarRecalc();
+ markAsDirty();
}
}
@@ -554,6 +555,7 @@ 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) {
+ bool scrolled = false;
if ( g_system->getEventManager()->getModifierState() & Common::KBD_SHIFT) {
int newItem = _selectedItem + 1;
// Skip selecting Group Headers
@@ -566,6 +568,7 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
else
markSelectedItem(_selectedItem, false);
_selectedItem = newItem;
+ scrolled = true;
}
} else {
clearSelection();
@@ -574,14 +577,19 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
while (newItem < (int)_list.size() && !isItemSelectable(newItem)) {
newItem++;
}
- if (newItem < (int)_list.size())
+ if (newItem < (int)_list.size()) {
_selectedItem = newItem;
+ scrolled = true;
+ }
// If dead end, restore the previous selection
markSelectedItem(_selectedItem, true);
_lastSelectionStartItem = _selectedItem;
}
if (_selectedItem < (int)_list.size() && !isItemVisible(_selectedItem))
scrollToCurrent();
+ // If there are no selectable items, Scroll to Bottom
+ if (!scrolled)
+ scrollTo((int)_list.size() - 1);
}
break;
@@ -618,6 +626,7 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
case Common::KEYCODE_UP:
// Up: Add previous item to selection (Ctrl+Click logic without toggle)
if (_selectedItem > 0) {
+ bool scrolled = false;
if (g_system->getEventManager()->getModifierState() & Common::KBD_SHIFT) {
int newItem = _selectedItem - 1;
// Skip selecting Group Headers
@@ -630,6 +639,7 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
else
markSelectedItem(_selectedItem, false);
_selectedItem = newItem;
+ scrolled = true;
}
} else {
clearSelection();
@@ -638,14 +648,19 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
while (newItem >= 0 && !isItemSelectable(newItem)) {
newItem--;
}
- if (newItem >= 0)
+ if (newItem >= 0) {
_selectedItem = newItem;
+ scrolled = true;
+ }
// If dead end, restore the previous selection
markSelectedItem(_selectedItem, true);
_lastSelectionStartItem = _selectedItem;
}
if (_selectedItem >= 0 && !isItemVisible(_selectedItem))
scrollToCurrent();
+ // If there are no selectable items, Scroll to Top
+ if (!scrolled)
+ scrollTo(0);
}
break;
Commit: a1c7b9f3f3c458247be74b4c24b4f84f823e5908
https://github.com/scummvm/scummvm/commit/a1c7b9f3f3c458247be74b4c24b4f84f823e5908
Author: Mohit Bankar (mohitbankar1212 at gmail.com)
Date: 2026-02-13T19:53:40+01:00
Commit Message:
JANITORIAL: GUI: code cleanup
Changed paths:
gui/widgets/list.cpp
diff --git a/gui/widgets/list.cpp b/gui/widgets/list.cpp
index 0c2202d6628..dea2e40dd02 100644
--- a/gui/widgets/list.cpp
+++ b/gui/widgets/list.cpp
@@ -555,13 +555,12 @@ 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;
bool scrolled = false;
if ( g_system->getEventManager()->getModifierState() & Common::KBD_SHIFT) {
- int newItem = _selectedItem + 1;
// Skip selecting Group Headers
- while (newItem < (int)_list.size() && !isItemSelectable(newItem)) {
+ while (newItem < (int)_list.size() && !isItemSelectable(newItem))
newItem++;
- }
if (newItem < (int)_list.size()) {
if (_lastSelectionStartItem < newItem)
markSelectedItem(newItem, true);
@@ -572,11 +571,9 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
}
} else {
clearSelection();
- int newItem = _selectedItem + 1;
// Skip selecting Group Headers
- while (newItem < (int)_list.size() && !isItemSelectable(newItem)) {
+ while (newItem < (int)_list.size() && !isItemSelectable(newItem))
newItem++;
- }
if (newItem < (int)_list.size()) {
_selectedItem = newItem;
scrolled = true;
@@ -626,13 +623,12 @@ 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;
bool scrolled = false;
if (g_system->getEventManager()->getModifierState() & Common::KBD_SHIFT) {
- int newItem = _selectedItem - 1;
// Skip selecting Group Headers
- while (newItem >= 0 && !isItemSelectable(newItem)) {
+ while (newItem >= 0 && !isItemSelectable(newItem))
newItem--;
- }
if (newItem >= 0) {
if (_lastSelectionStartItem > newItem)
markSelectedItem(newItem, true);
@@ -643,11 +639,9 @@ bool ListWidget::handleKeyDown(Common::KeyState state) {
}
} else {
clearSelection();
- int newItem = _selectedItem - 1;
// Skip selecting Group Headers
- while (newItem >= 0 && !isItemSelectable(newItem)) {
+ while (newItem >= 0 && !isItemSelectable(newItem))
newItem--;
- }
if (newItem >= 0) {
_selectedItem = newItem;
scrolled = true;
More information about the Scummvm-git-logs
mailing list