diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py
index 9c28b0ebe9..bec9a3177c 100644
--- a/src/calibre/gui2/__init__.py
+++ b/src/calibre/gui2/__init__.py
@@ -115,6 +115,7 @@ defs['cover_grid_width'] = 0
defs['cover_grid_height'] = 0
defs['cover_grid_color'] = (80, 80, 80)
defs['cover_grid_cache_size'] = 200
+defs['cover_grid_spacing'] = 0
del defs
# }}}
diff --git a/src/calibre/gui2/library/alternate_views.py b/src/calibre/gui2/library/alternate_views.py
index 0b3fc86b0a..260b2460ea 100644
--- a/src/calibre/gui2/library/alternate_views.py
+++ b/src/calibre/gui2/library/alternate_views.py
@@ -368,11 +368,18 @@ class CoverDelegate(QStyledItemDelegate):
width *= self.parent().logicalDpiX() * CM_TO_INCH
self.cover_size = QSize(width, height)
self.item_size = self.cover_size + QSize(8, 8)
- self.spacing = max(10, min(50, int(0.1 * width)))
+ self.calculate_spacing()
self.animation.setStartValue(1.0)
self.animation.setKeyValueAt(0.5, 0.5)
self.animation.setEndValue(1.0)
+ def calculate_spacing(self):
+ spc = self.original_spacing = gprefs['cover_grid_spacing']
+ if spc < 0.1:
+ self.spacing = max(10, min(50, int(0.1 * self.original_width)))
+ else:
+ self.spacing = self.parent().logicalDpiX() * CM_TO_INCH * spc
+
def sizeHint(self, option, index):
return self.item_size
@@ -479,6 +486,9 @@ class GridView(QListView):
self.delegate.set_dimensions()
self.setSpacing(self.delegate.spacing)
self.delegate.cover_cache.clear()
+ if gprefs['cover_grid_spacing'] != self.delegate.original_spacing:
+ self.delegate.calculate_spacing()
+ self.setSpacing(self.delegate.spacing)
self.set_color()
self.delegate.cover_cache.set_limit(gprefs['cover_grid_cache_size'])
diff --git a/src/calibre/gui2/preferences/look_feel.py b/src/calibre/gui2/preferences/look_feel.py
index e0bd8ead36..80521abf9f 100644
--- a/src/calibre/gui2/preferences/look_feel.py
+++ b/src/calibre/gui2/preferences/look_feel.py
@@ -113,6 +113,7 @@ class ConfigWidget(ConfigWidgetBase, Ui_Form):
r('cover_grid_width', gprefs)
r('cover_grid_height', gprefs)
r('cover_grid_cache_size', gprefs)
+ r('cover_grid_spacing', gprefs)
r('cover_flow_queue_length', config, restart_required=True)
r('cover_browser_reflections', gprefs)
diff --git a/src/calibre/gui2/preferences/look_feel.ui b/src/calibre/gui2/preferences/look_feel.ui
index 9e4851d73e..d704e1a214 100644
--- a/src/calibre/gui2/preferences/look_feel.ui
+++ b/src/calibre/gui2/preferences/look_feel.ui
@@ -231,8 +231,8 @@
Cover Grid
-
- -
+
+
-
-
@@ -272,6 +272,9 @@
The height of displayed covers
+
+ Automatic
+
cm
@@ -305,13 +308,16 @@
- -
+
-
-
Background color for the cover grid:
+
+ cover_grid_color_button
+
-
@@ -352,52 +358,48 @@
- -
-
-
-
-
-
- Number of covers to cache in &memory:
-
-
- opt_cover_grid_cache_size
-
-
-
- -
-
-
- 3000
-
-
-
- -
-
-
- Qt::Horizontal
-
-
-
- 40
- 20
-
-
-
-
-
+ -
+
+
+ Number of covers to cache in &memory:
+
+
+ opt_cover_grid_cache_size
+
+
- -
-
-
- Qt::Vertical
+
-
+
+
+ 3000
-
-
- 20
- 355
-
+
+
+ -
+
+
+ &Spacing between covers:
-
+
+ opt_cover_grid_spacing
+
+
+
+ -
+
+
+ The spacing between covers. A value of zero means calculate automatically based on cover size.
+
+
+ Automatic
+
+
+ cm
+
+
+ 1
+
+