Fix #1927167 [Book details window: Dark mode background reverts after deleting metadata](https://bugs.launchpad.net/calibre/+bug/1927167)

This commit is contained in:
Kovid Goyal 2021-05-05 09:29:47 +05:30
parent 3fe28fb1a4
commit 28f16bec0f
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
2 changed files with 17 additions and 5 deletions

View File

@ -27,6 +27,9 @@ class Cover(CoverView):
open_with_requested = pyqtSignal(object) open_with_requested = pyqtSignal(object)
choose_open_with_requested = pyqtSignal() choose_open_with_requested = pyqtSignal()
def __init__(self, parent, show_size=False):
CoverView.__init__(self, parent, show_size=show_size)
def build_context_menu(self): def build_context_menu(self):
ans = CoverView.build_context_menu(self) ans = CoverView.build_context_menu(self)
create_open_cover_with_menu(self, ans) create_open_cover_with_menu(self, ans)
@ -42,6 +45,13 @@ class Cover(CoverView):
ev.accept() ev.accept()
self.open_with_requested.emit(None) self.open_with_requested.emit(None)
def set_marked(self, marked):
if marked:
marked_brush = QBrush(Qt.GlobalColor.darkGray if QApplication.instance().is_dark_theme else Qt.GlobalColor.lightGray)
self.set_background(marked_brush)
else:
self.set_background()
class Configure(Dialog): class Configure(Dialog):
@ -125,8 +135,6 @@ class BookInfo(QDialog):
def __init__(self, parent, view, row, link_delegate): def __init__(self, parent, view, row, link_delegate):
QDialog.__init__(self, parent) QDialog.__init__(self, parent)
self.normal_brush = QBrush(Qt.GlobalColor.white)
self.marked_brush = QBrush(Qt.GlobalColor.lightGray)
self.marked = None self.marked = None
self.gui = parent self.gui = parent
self.splitter = QSplitter(self) self.splitter = QSplitter(self)
@ -275,6 +283,7 @@ class BookInfo(QDialog):
def resize_cover(self): def resize_cover(self):
if self.cover_pixmap is None: if self.cover_pixmap is None:
self.cover.set_marked(self.marked)
return return
pixmap = self.cover_pixmap pixmap = self.cover_pixmap
if self.fit_cover.isChecked(): if self.fit_cover.isChecked():
@ -290,6 +299,7 @@ class BookInfo(QDialog):
Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation) Qt.AspectRatioMode.KeepAspectRatio, Qt.TransformationMode.SmoothTransformation)
pixmap.setDevicePixelRatio(dpr) pixmap.setDevicePixelRatio(dpr)
self.cover.set_pixmap(pixmap) self.cover.set_pixmap(pixmap)
self.cover.set_marked(self.marked)
self.update_cover_tooltip() self.update_cover_tooltip()
def update_cover_tooltip(self): def update_cover_tooltip(self):
@ -331,11 +341,10 @@ class BookInfo(QDialog):
except AttributeError: except AttributeError:
dpr = self.devicePixelRatio() dpr = self.devicePixelRatio()
self.cover_pixmap.setDevicePixelRatio(dpr) self.cover_pixmap.setDevicePixelRatio(dpr)
self.marked = mi.marked
self.resize_cover() self.resize_cover()
html = render_html(mi, True, self, pref_name='popup_book_display_fields') html = render_html(mi, True, self, pref_name='popup_book_display_fields')
set_html(mi, html, self.details) set_html(mi, html, self.details)
self.marked = mi.marked
self.cover.setBackgroundBrush(self.marked_brush if mi.marked else self.normal_brush)
self.update_cover_tooltip() self.update_cover_tooltip()
def open_with(self, entry): def open_with(self, entry):

View File

@ -403,6 +403,7 @@ class CoverView(QGraphicsView, ImageDropMixin): # {{{
self.pixmap_size = 0, 0 self.pixmap_size = 0, 0
if self.show_size: if self.show_size:
self.setViewportUpdateMode(QGraphicsView.ViewportUpdateMode.FullViewportUpdate) self.setViewportUpdateMode(QGraphicsView.ViewportUpdateMode.FullViewportUpdate)
self.set_background()
def get_pixmap(self): def get_pixmap(self):
for item in self.scene.items(): for item in self.scene.items():
@ -413,7 +414,9 @@ class CoverView(QGraphicsView, ImageDropMixin): # {{{
self.scene = QGraphicsScene() self.scene = QGraphicsScene()
self.scene.addPixmap(pmap) self.scene.addPixmap(pmap)
self.setScene(self.scene) self.setScene(self.scene)
self.setBackgroundBrush(self.palette().color(QPalette.ColorRole.Window))
def set_background(self, brush=None):
self.setBackgroundBrush(brush or self.palette().color(QPalette.ColorRole.Window))
def paintEvent(self, ev): def paintEvent(self, ev):
QGraphicsView.paintEvent(self, ev) QGraphicsView.paintEvent(self, ev)