[Scummvm-git-logs] scummvm master -> 93fa9318d505186bcf314cd2d8df80dfc6cd8fd8

lephilousophe noreply at scummvm.org
Sat Apr 25 11:07:43 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:
9b21baacd4 GUI: Properly chain focus change on dialog opening
93fa9318d5 GUI: Keep using _scrollPos as an integer when calculating


Commit: 9b21baacd488275fa33d82c03c51cc673cf542ea
    https://github.com/scummvm/scummvm/commit/9b21baacd488275fa33d82c03c51cc673cf542ea
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-04-25T12:57:30+02:00

Commit Message:
GUI: Properly chain focus change on dialog opening

Release focus first, then give it to the new dialog.
This is the reverse of closeTopDialog.

Changed paths:
    gui/gui-manager.cpp


diff --git a/gui/gui-manager.cpp b/gui/gui-manager.cpp
index 02de69aa7c9..6e90f4f5b7a 100644
--- a/gui/gui-manager.cpp
+++ b/gui/gui-manager.cpp
@@ -718,11 +718,11 @@ void GuiManager::restoreState() {
 }
 
 void GuiManager::openDialog(Dialog *dialog) {
-	giveFocusToDialog(dialog);
-
 	if (!_dialogStack.empty())
 		getTopDialog()->lostFocus();
 
+	giveFocusToDialog(dialog);
+
 	_dialogStack.push(dialog);
 	// We were already ready to redraw a new dialog
 	// Redraw fully to ensure a proper draw of the whole stack


Commit: 93fa9318d505186bcf314cd2d8df80dfc6cd8fd8
    https://github.com/scummvm/scummvm/commit/93fa9318d505186bcf314cd2d8df80dfc6cd8fd8
Author: Le Philousophe (lephilousophe at users.noreply.github.com)
Date: 2026-04-25T13:06:27+02:00

Commit Message:
GUI: Keep using _scrollPos as an integer when calculating

Only keep it float for scrolling stuff.

Changed paths:
    gui/widgets/grid.cpp


diff --git a/gui/widgets/grid.cpp b/gui/widgets/grid.cpp
index d80081287b9..1f2b517907e 100644
--- a/gui/widgets/grid.cpp
+++ b/gui/widgets/grid.cpp
@@ -737,7 +737,7 @@ bool GridWidget::calcVisibleEntries() {
 	bool needsReload = false;
 
 	int nFirstVisibleItem = 0, nLastVisibleItem = 0;
-	int temp = lastItemBeforeY(_sortedEntryList, _scrollPos);
+	int temp = lastItemBeforeY(_sortedEntryList, (int)_scrollPos);
 	nFirstVisibleItem = temp;
 	// We want the leftmost item from the topmost visible row, so we traverse backwards
 	while ((nFirstVisibleItem >= 0) &&
@@ -747,7 +747,7 @@ bool GridWidget::calcVisibleEntries() {
 	nFirstVisibleItem++;
 	nFirstVisibleItem = (nFirstVisibleItem < 0) ? 0 : nFirstVisibleItem;
 
-	nLastVisibleItem = lastItemBeforeY(_sortedEntryList, _scrollPos + _scrollWindowHeight);
+	nLastVisibleItem = lastItemBeforeY(_sortedEntryList, (int)_scrollPos + _scrollWindowHeight);
 	nLastVisibleItem = (nLastVisibleItem < 0) ? 0 : nLastVisibleItem;
 
 	if ((nFirstVisibleItem != _firstVisibleItem) || (nLastVisibleItem != _lastVisibleItem) || (_isGridInvalid)) {
@@ -886,10 +886,10 @@ void GridWidget::scrollToEntry(int id, bool forceToTop) {
 			if (forceToTop) {
 				newScrollPos = _sortedEntryList[i]->y + _scrollWindowPaddingY + _gridYSpacing;
 			} else {
-				if (_sortedEntryList[i]->y < _scrollPos) {
+				if (_sortedEntryList[i]->y < (int)_scrollPos) {
 					// Item is above the visible view
 					newScrollPos = _sortedEntryList[i]->y - _scrollWindowPaddingY - _gridYSpacing;
-				} else if (_sortedEntryList[i]->y > _scrollPos + _scrollWindowHeight - _gridItemHeight - _trayHeight) {
+				} else if (_sortedEntryList[i]->y > (int)_scrollPos + _scrollWindowHeight - _gridItemHeight - _trayHeight) {
 					// Item is below the visible view
 					newScrollPos = _sortedEntryList[i]->y - _scrollWindowHeight + _gridItemHeight + _trayHeight;
 				} else {
@@ -937,7 +937,7 @@ void GridWidget::assignEntriesToItems() {
 			item->setVisible(true);
 			GridItemInfo *entry = _visibleEntryList[k];
 			item->setActiveEntry(*entry);
-			item->setPos(entry->x, entry->y - _scrollPos);
+			item->setPos(entry->x, entry->y - (int)_scrollPos);
 			item->setSize(entry->w, entry->h);
 			item->update();
 		}
@@ -1093,8 +1093,8 @@ void GridWidget::handleCommand(CommandSender *sender, uint32 cmd, uint32 data) {
 	// Work in progress
 	switch (cmd) {
 	case kSetPositionCmd:
-		if (_scrollPos != (float)data) {
-			_scrollPos = (float)data;
+		if ((int)_scrollPos != (int)data) {
+			_scrollPos = data;
 			_fluidScroller->stopAnimation();
 			_scrollPos = _fluidScroller->setPosition(_scrollPos, false);
 
@@ -1272,7 +1272,7 @@ void GridWidget::reflowLayout() {
 
 void GridWidget::openTrayAtSelected() {
 	if (_selectedEntry) {
-		GridItemTray *tray = new GridItemTray(this, _x + _selectedEntry->x - _gridXSpacing / 3, _y + _selectedEntry->y + _selectedEntry->h - _scrollPos,
+		GridItemTray *tray = new GridItemTray(this, _x + _selectedEntry->x - _gridXSpacing / 3, _y + _selectedEntry->y + _selectedEntry->h - (int)_scrollPos,
 								_gridItemWidth + 2 * (_gridXSpacing / 3), _trayHeight, _selectedEntry->entryID, this);
 		tray->enableLoadButton(_selectedEntry->canLoadGame);
 
@@ -1304,7 +1304,7 @@ void GridWidget::setFilter(const Common::U32String &filter) {
 	_filter = filt;
 
 	// Reset the scrollbar and deselect everything if filter has changed
-	_scrollPos = 0;
+	_scrollPos = 0.f;
 	_selectedEntry = nullptr;
 
 	sortGroups();




More information about the Scummvm-git-logs mailing list