--- 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;