Properly convert the icon_map

The enum is of unsigned long not int values
This commit is contained in:
Kovid Goyal 2021-11-19 15:32:42 +05:30
parent 50c16ef54d
commit 49141ebce2
No known key found for this signature in database
GPG Key ID: 06BC317B515ACE7C
4 changed files with 17 additions and 8 deletions

View File

@ -1149,8 +1149,8 @@ class Application(QApplication):
if ismacos: if ismacos:
from calibre_extensions.cocoa import transient_scroller from calibre_extensions.cocoa import transient_scroller
transient_scroller = 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 & 0xf0000000) + 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) + 2] = I('close-for-dark-theme.png')
self.pi.load_style(icon_map, transient_scroller) self.pi.load_style(icon_map, transient_scroller)
def _send_file_open_events(self): def _send_file_open_events(self):

View File

@ -122,13 +122,13 @@ dpiScaled(qreal value) {
class CalibreStyle: public QProxyStyle { class CalibreStyle: public QProxyStyle {
private: private:
QHash<int, QString> icon_map; const QHash<unsigned long, QString> icon_map;
QByteArray desktop_environment; QByteArray desktop_environment;
QDialogButtonBox::ButtonLayout button_layout; QDialogButtonBox::ButtonLayout button_layout;
int transient_scroller; int transient_scroller;
public: public:
CalibreStyle(QStyle *base, QHash<int, QString> icmap, int transient_scroller) : QProxyStyle(base), icon_map(icmap), transient_scroller(transient_scroller) { CalibreStyle(QStyle *base, const QHash<unsigned long, QString> &icmap, int transient_scroller) : QProxyStyle(base), icon_map(icmap), transient_scroller(transient_scroller) {
setObjectName(QString("calibre")); setObjectName(QString("calibre"));
desktop_environment = detectDesktopEnvironment(); desktop_environment = detectDesktopEnvironment();
button_layout = static_cast<QDialogButtonBox::ButtonLayout>(QProxyStyle::styleHint(SH_DialogButtonLayout)); button_layout = static_cast<QDialogButtonBox::ButtonLayout>(QProxyStyle::styleHint(SH_DialogButtonLayout));
@ -373,7 +373,7 @@ class CalibreStyle: public QProxyStyle {
} }
}; };
int load_style(QHash<int,QString> icon_map, int transient_scroller) { int load_style(const QHash<unsigned long,QString> &icon_map, int transient_scroller) {
QStyle *base_style = QStyleFactory::create(QString("Fusion")); QStyle *base_style = QStyleFactory::create(QString("Fusion"));
QApplication::setStyle(new CalibreStyle(base_style, icon_map, transient_scroller)); QApplication::setStyle(new CalibreStyle(base_style, icon_map, transient_scroller));
return 0; return 0;

View File

@ -137,6 +137,6 @@ private:
SpinAnimator m_animator; SpinAnimator m_animator;
}; };
int load_style(QHash<int,QString> icon_map, int transient_scroller=0); int load_style(const QHash<unsigned long,QString> &icon_map, int transient_scroller=0);
void set_no_activate_on_click(QWidget *widget); void set_no_activate_on_click(QWidget *widget);
void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark); void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark);

View File

@ -7,7 +7,7 @@
%ModuleHeaderCode %ModuleHeaderCode
#include <QPainter> #include <QPainter>
int load_style(QHash<int,QString> icon_map, int transient_scroller); int load_style(const QHash<unsigned long,QString> &icon_map, int transient_scroller);
void set_no_activate_on_click(QWidget *widget); void set_no_activate_on_click(QWidget *widget);
void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark); void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark);
%End %End
@ -74,6 +74,15 @@ signals:
}; };
int load_style(QHash<int,QString> icon_map, int transient_scroller); int load_style(SIP_PYDICT icon_map_, int transient_scroller);
%MethodCode
QHash<unsigned long,QString> 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 set_no_activate_on_click(QWidget *widget);
void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark) /ReleaseGIL/; void draw_snake_spinner(QPainter &painter, QRect rect, int angle, const QColor & light, const QColor & dark) /ReleaseGIL/;