diff --git a/gui/themes/common/highres_layout.stx b/gui/themes/common/highres_layout.stx index 2cb8ec2427d..51cc5030010 100644 --- a/gui/themes/common/highres_layout.stx +++ b/gui/themes/common/highres_layout.stx @@ -77,6 +77,8 @@ + + + + drawManagedSurface(Common::Point(_x, _y), _thumbGfx); + g_gui.theme()->drawManagedSurface(Common::Point(_x + _grid->_thumbnailMargin, _y + _grid->_thumbnailMargin), _thumbGfx); } // Draw Platform Icon @@ -405,6 +405,7 @@ GridWidget::GridWidget(GuiObject *boss, const Common::String &name) _minGridYSpacing = 0; _isTitlesVisible = 0; _scrollBarWidth = 0; + _thumbnailMargin = 0; _scrollWindowPaddingX = 0; _scrollWindowPaddingY = 0; @@ -681,6 +682,8 @@ void GridWidget::setGroupHeaderFormat(const Common::U32String &prefix, const Com } void GridWidget::reloadThumbnails() { + const int thumbnailWidth = MAX(_thumbnailWidth - 2 * _thumbnailMargin, 0); + const int thumbnailHeight = MAX(_thumbnailHeight - 2 * _thumbnailMargin, 0); for (Common::Array::iterator iter = _visibleEntryList.begin(); iter != _visibleEntryList.end(); ++iter) { GridItemInfo *entry = *iter; if (entry->thumbPath.empty()) @@ -701,7 +704,7 @@ void GridWidget::reloadThumbnails() { } if (surf) { - const Graphics::ManagedSurface *scSurf(scaleGfx(surf, _thumbnailWidth, _thumbnailHeight, true)); + const Graphics::ManagedSurface *scSurf(scaleGfx(surf, thumbnailWidth, thumbnailHeight, true)); _loadedSurfaces[entry->thumbPath] = scSurf; if (path != entry->thumbPath) { @@ -966,6 +969,11 @@ void GridWidget::reflowLayout() { Widget::reflowLayout(); destroyItems(); + // Recompute thumbnail size + int oldThumbnailHeight = _thumbnailHeight; + int oldThumbnailWidth = _thumbnailWidth; + int oldThumbnailMargin = _thumbnailMargin; + _scrollWindowHeight = _h; _scrollWindowWidth = _w; @@ -975,15 +983,12 @@ void GridWidget::reflowLayout() { _minGridYSpacing = int(g_gui.xmlEval()->getVar("Globals.Grid.YSpacing") * g_gui.getScaleFactor() + .5f); _isTitlesVisible = g_gui.xmlEval()->getVar("Globals.Grid.ShowTitles"); _scrollBarWidth = g_gui.xmlEval()->getVar("Globals.Scrollbar.Width", 0); + _thumbnailMargin = g_gui.xmlEval()->getVar("Globals.Grid.ThumbnailMargin", 0); _scrollWindowPaddingX = _minGridXSpacing; _scrollWindowPaddingY = _minGridYSpacing; _gridYSpacing = _minGridYSpacing; - // Recompute thumbnail size - int oldThumbnailHeight = _thumbnailHeight; - int oldThumbnailWidth = _thumbnailWidth; - int availableWidth = _scrollWindowWidth - (2 * _scrollWindowPaddingX) - _scrollBarWidth; _thumbnailWidth = availableWidth / _itemsPerRow - _minGridXSpacing; const int minimumthumbnailWidth = int(36 * g_gui.getScaleFactor() + .5f); @@ -999,7 +1004,9 @@ void GridWidget::reflowLayout() { _extraIconWidth = _thumbnailWidth; _extraIconHeight = _thumbnailHeight; - if ((oldThumbnailHeight != _thumbnailHeight) || (oldThumbnailWidth != _thumbnailWidth)) { + if ((oldThumbnailHeight != _thumbnailHeight) || + (oldThumbnailWidth != _thumbnailWidth) || + (oldThumbnailMargin != _thumbnailMargin)) { unloadSurfaces(_extraIcons); unloadSurfaces(_platformIcons); unloadSurfaces(_languageIcons); diff --git a/gui/widgets/grid.h b/gui/widgets/grid.h index 4a51b6b693b..79ee987b2df 100644 --- a/gui/widgets/grid.h +++ b/gui/widgets/grid.h @@ -157,6 +157,7 @@ public: int _gridItemWidth; int _gridXSpacing; int _gridYSpacing; + int _thumbnailMargin; bool _isTitlesVisible;