diff --git a/src/calibre/gui2/__init__.py b/src/calibre/gui2/__init__.py index d9b69b68af..8d7e5651ed 100644 --- a/src/calibre/gui2/__init__.py +++ b/src/calibre/gui2/__init__.py @@ -1149,8 +1149,8 @@ class Application(QApplication): if ismacos: from calibre_extensions.cocoa import transient_scroller transient_scroller = transient_scroller() - icon_map[QStyle.StandardPixmap.SP_CustomBase + 1] = I('close-for-light-theme.png') - icon_map[QStyle.StandardPixmap.SP_CustomBase + 2] = I('close-for-dark-theme.png') + icon_map[(QStyle.StandardPixmap.SP_CustomBase & 0xf0000000) + 1] = I('close-for-light-theme.png') + icon_map[(QStyle.StandardPixmap.SP_CustomBase & 0xf0000000) + 2] = I('close-for-dark-theme.png') self.pi.load_style(icon_map, transient_scroller) def _send_file_open_events(self): diff --git a/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp b/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp index 0336f3a3f3..ba0e3accc0 100644 --- a/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp +++ b/src/calibre/gui2/progress_indicator/QProgressIndicator.cpp @@ -122,13 +122,13 @@ dpiScaled(qreal value) { class CalibreStyle: public QProxyStyle { private: - QHash icon_map; + const QHash icon_map; QByteArray desktop_environment; QDialogButtonBox::ButtonLayout button_layout; int transient_scroller; public: - CalibreStyle(QStyle *base, QHash icmap, int transient_scroller) : QProxyStyle(base), icon_map(icmap), transient_scroller(transient_scroller) { + CalibreStyle(QStyle *base, const QHash &icmap, int transient_scroller) : QProxyStyle(base), icon_map(icmap), transient_scroller(transient_scroller) { setObjectName(QString("calibre")); desktop_environment = detectDesktopEnvironment(); button_layout = static_cast(QProxyStyle::styleHint(SH_DialogButtonLayout)); @@ -373,7 +373,7 @@ class CalibreStyle: public QProxyStyle { } }; -int load_style(QHash icon_map, int transient_scroller) { +int load_style(const QHash &icon_map, int transient_scroller) { QStyle *base_style = QStyleFactory::create(QString("Fusion")); QApplication::setStyle(new CalibreStyle(base_style, icon_map, transient_scroller)); return 0; diff --git a/src/calibre/gui2/progress_indicator/QProgressIndicator.h b/src/calibre/gui2/progress_indicator/QProgressIndicator.h index d76cb32a5b..fdb60b2d05 100644 --- a/src/calibre/gui2/progress_indicator/QProgressIndicator.h +++ b/src/calibre/gui2/progress_indicator/QProgressIndicator.h @@ -137,6 +137,6 @@ private: SpinAnimator m_animator; }; -int load_style(QHash icon_map, int transient_scroller=0); +int load_style(const QHash &icon_map, int transient_scroller=0); void set_no_activate_on_click(QWidget *widget); void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark); diff --git a/src/calibre/gui2/progress_indicator/QProgressIndicator.sip b/src/calibre/gui2/progress_indicator/QProgressIndicator.sip index 7387099234..8230622e85 100644 --- a/src/calibre/gui2/progress_indicator/QProgressIndicator.sip +++ b/src/calibre/gui2/progress_indicator/QProgressIndicator.sip @@ -7,7 +7,7 @@ %ModuleHeaderCode #include -int load_style(QHash icon_map, int transient_scroller); +int load_style(const QHash &icon_map, int transient_scroller); void set_no_activate_on_click(QWidget *widget); void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark); %End @@ -74,6 +74,15 @@ signals: }; -int load_style(QHash icon_map, int transient_scroller); +int load_style(SIP_PYDICT icon_map_, int transient_scroller); +%MethodCode + QHash icon_map; + PyObject *key, *value; + Py_ssize_t pos = 0; + while (PyDict_Next(a0, &pos, &key, &value)) { + icon_map.insert(PyLong_AsUnsignedLong(key), QString::fromUtf8(PyUnicode_AsUTF8(value))); + } + load_style(icon_map, a1); +%End void set_no_activate_on_click(QWidget *widget); void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark) /ReleaseGIL/;