diff --git a/imgsrc/close-for-dark-theme.svg b/imgsrc/close-for-dark-theme.svg new file mode 100644 index 0000000000..d4d38e52cc --- /dev/null +++ b/imgsrc/close-for-dark-theme.svg @@ -0,0 +1,48 @@ + +image/svg+xml diff --git a/imgsrc/close-for-light-theme.svg b/imgsrc/close-for-light-theme.svg new file mode 100644 index 0000000000..1648ac347e --- /dev/null +++ b/imgsrc/close-for-light-theme.svg @@ -0,0 +1,48 @@ + +image/svg+xml \ No newline at end of file diff --git a/resources/images/close-for-dark-theme.png b/resources/images/close-for-dark-theme.png new file mode 100644 index 0000000000..4c222c7473 Binary files /dev/null and b/resources/images/close-for-dark-theme.png differ diff --git a/resources/images/close-for-light-theme.png b/resources/images/close-for-light-theme.png new file mode 100644 index 0000000000..a32a9e7f34 Binary files /dev/null and b/resources/images/close-for-light-theme.png differ diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index 8c443dbb40..8d2206c648 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -1120,10 +1120,9 @@ class Application(QApplication): transient_scroller = 0 if isosx: transient_scroller = plugins['cocoa'][0].transient_scroller() - try: - self.pi.load_style(icon_map, transient_scroller) - except TypeError: - self.pi.load_style(icon_map) + icon_map[QStyle.SP_CustomBase + 1] = I('close-for-light-theme.png') + icon_map[QStyle.SP_CustomBase + 2] = I('close-for-dark-theme.png') + self.pi.load_style(icon_map, transient_scroller) def _send_file_open_events(self): with self._file_open_lock: diff --git a/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp b/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp index eca591fa75..dbe356b5c1 100644 --- a/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp +++ b/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp @@ -180,6 +180,10 @@ class CalibreStyle: public QProxyStyle { } QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const { + if (standardIcon == QStyle::SP_DialogCloseButton) { + bool is_dark_theme = QApplication::instance()->property("is_dark_theme").toBool(); + return QIcon(icon_map.value(QStyle::SP_CustomBase + (is_dark_theme ? 2 : 1))); + } if (icon_map.contains(standardIcon)) return QIcon(icon_map.value(standardIcon)); return QProxyStyle::standardIcon(standardIcon, option, widget); }