Fix cover grid scaling for non-integral device pixel ratios

This commit is contained in:
Kovid Goyal 2016-08-26 12:21:59 +05:30
parent 1207eb4f8b
commit 9e8141d5db

View File

@ -627,7 +627,7 @@ class GridView(QListView):
self.padding_left = 0 self.padding_left = 0
self.set_color() self.set_color()
self.ignore_render_requests = Event() self.ignore_render_requests = Event()
dpr = self.devicePixelRatio() dpr = self.device_pixel_ratio
self.thumbnail_cache = ThumbnailCache(max_size=gprefs['cover_grid_disk_cache_size'], self.thumbnail_cache = ThumbnailCache(max_size=gprefs['cover_grid_disk_cache_size'],
thumbnail_size=(int(dpr * self.delegate.cover_size.width()), int(dpr * self.delegate.cover_size.height()))) thumbnail_size=(int(dpr * self.delegate.cover_size.width()), int(dpr * self.delegate.cover_size.height())))
self.render_thread = None self.render_thread = None
@ -644,6 +644,13 @@ class GridView(QListView):
t.setInterval(200), t.setSingleShot(True) t.setInterval(200), t.setSingleShot(True)
t.timeout.connect(self.update_memory_cover_cache_size) t.timeout.connect(self.update_memory_cover_cache_size)
@property
def device_pixel_ratio(self):
try:
return self.devicePixelRatioF()
except AttributeError:
return self.devicePixelRatio()
@property @property
def first_visible_row(self): def first_visible_row(self):
geom = self.viewport().geometry() geom = self.viewport().geometry()
@ -728,7 +735,7 @@ class GridView(QListView):
self.setSpacing(self.delegate.spacing) self.setSpacing(self.delegate.spacing)
self.set_color() self.set_color()
if size_changed: if size_changed:
dpr = self.devicePixelRatio() dpr = self.device_pixel_ratio
self.thumbnail_cache.set_thumbnail_size(int(dpr * self.delegate.cover_size.width()), int(dpr*self.delegate.cover_size.height())) self.thumbnail_cache.set_thumbnail_size(int(dpr * self.delegate.cover_size.width()), int(dpr*self.delegate.cover_size.height()))
cs = gprefs['cover_grid_disk_cache_size'] cs = gprefs['cover_grid_disk_cache_size']
if (cs*(1024**2)) != self.thumbnail_cache.max_size: if (cs*(1024**2)) != self.thumbnail_cache.max_size:
@ -793,7 +800,7 @@ class GridView(QListView):
if has_cover: if has_cover:
p = QImage() p = QImage()
p.loadFromData(cdata, CACHE_FORMAT if cdata is tcdata else 'JPEG') p.loadFromData(cdata, CACHE_FORMAT if cdata is tcdata else 'JPEG')
dpr = self.devicePixelRatio() dpr = self.device_pixel_ratio
p.setDevicePixelRatio(dpr) p.setDevicePixelRatio(dpr)
if p.isNull() and cdata is tcdata: if p.isNull() and cdata is tcdata:
# Invalid image in cache # Invalid image in cache