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;