You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
40 lines
1.4 KiB
40 lines
1.4 KiB
--- src/qt6gtk2-style/qstylehelper_p.h.orig 2025-06-11 06:41:16 UTC
|
|
+++ src/qt6gtk2-style/qstylehelper_p.h
|
|
@@ -43,6 +43,37 @@
|
|
|
|
QT_BEGIN_NAMESPACE
|
|
|
|
+#if (QT_VERSION >= QT_VERSION_CHECK(6, 9, 0))
|
|
+#define BEGIN_STYLE_PIXMAPCACHE(a) \
|
|
+ QRect rect = option->rect; \
|
|
+ QPixmap internalPixmapCache; \
|
|
+ QPainter *p = painter; \
|
|
+ const auto dpr = p->device()->devicePixelRatio(); \
|
|
+ const QString unique = QStyleHelper::uniqueName((a), option, option->rect.size(), dpr); \
|
|
+ int txType = painter->deviceTransform().type() | painter->worldTransform().type(); \
|
|
+ const bool doPixmapCache = (!option->rect.isEmpty()) \
|
|
+ && ((txType <= QTransform::TxTranslate) || (painter->deviceTransform().type() == QTransform::TxScale)); \
|
|
+ if (doPixmapCache && QPixmapCache::find(unique, &internalPixmapCache)) { \
|
|
+ painter->drawPixmap(option->rect.topLeft(), internalPixmapCache); \
|
|
+ } else { \
|
|
+ if (doPixmapCache) { \
|
|
+ rect.setRect(0, 0, option->rect.width(), option->rect.height()); \
|
|
+ internalPixmapCache = styleCachePixmap(option->rect.size(), dpr); \
|
|
+ p = new QPainter(&internalPixmapCache); \
|
|
+ }
|
|
+
|
|
+
|
|
+
|
|
+#define END_STYLE_PIXMAPCACHE \
|
|
+ if (doPixmapCache) { \
|
|
+ p->end(); \
|
|
+ delete p; \
|
|
+ painter->drawPixmap(option->rect.topLeft(), internalPixmapCache); \
|
|
+ QPixmapCache::insert(unique, internalPixmapCache); \
|
|
+ } \
|
|
+ }
|
|
+#endif
|
|
+
|
|
class QPainter;
|
|
class QPixmap;
|
|
class QStyleOptionSlider;
|
|
|