From 355b8e4d1a3b7dc4b69773781480673c3d9aa0fd Mon Sep 17 00:00:00 2001 From: hjk Date: Wed, 5 Jun 2024 17:58:59 +0200 Subject: [PATCH] Fix QIcon::pixmap() related deprecation warnings QPixmap pixmap(const QSize &size, qreal devicePixelRatio, Mode mode = Normal, State state = Off) const; QT_DEPRECATED_VERSION_X_6_0("Use pixmap(size, devicePixelRatio) instead") QPixmap pixmap(QWindow *window, const QSize &size, Mode mode = Normal, State state = Off) const; Change-Id: I8b08bec86014809887c1915b72c2776bae4a87fb Reviewed-by: Alessandro Portale --- src/libs/utils/historycompleter.cpp | 6 +++--- src/libs/utils/icon.cpp | 4 ++-- src/libs/utils/infolabel.cpp | 3 +-- src/libs/utils/stylehelper.cpp | 5 ++--- src/plugins/autotest/testresultdelegate.cpp | 9 ++++----- src/plugins/coreplugin/manhattanstyle.cpp | 5 ++--- .../components/navigator/iconcheckboxitemdelegate.cpp | 5 +---- 7 files changed, 15 insertions(+), 22 deletions(-) diff --git a/src/libs/utils/historycompleter.cpp b/src/libs/utils/historycompleter.cpp index 8eff3fdad82..8dc9ec3887e 100644 --- a/src/libs/utils/historycompleter.cpp +++ b/src/libs/utils/historycompleter.cpp @@ -54,11 +54,11 @@ public: optCopy.state |= QStyle::State_HasFocus; QItemDelegate::paint(painter,option,index); // add remove button - QWindow *window = view->window()->windowHandle(); - const QPixmap iconPixmap = icon.pixmap(window, option.rect.size()); + const qreal devicePixelRatio = painter->device()->devicePixelRatio(); + const QPixmap iconPixmap = icon.pixmap(option.rect.size(), devicePixelRatio); QRect pixmapRect = QStyle::alignedRect(option.direction, Qt::AlignRight | Qt::AlignVCenter, - iconPixmap.size() / window->devicePixelRatio(), + iconPixmap.size() / devicePixelRatio, option.rect); if (!clearIconSize.isValid()) clearIconSize = pixmapRect.size(); diff --git a/src/libs/utils/icon.cpp b/src/libs/utils/icon.cpp index 132494e8252..df880ac67ec 100644 --- a/src/libs/utils/icon.cpp +++ b/src/libs/utils/icon.cpp @@ -221,11 +221,11 @@ QIcon Icon::modeIcon(const Icon &classic, const Icon &flat, const Icon &flatActi QIcon Icon::combinedIcon(const QList &icons) { QIcon result; - QWindow *window = QApplication::allWidgets().constFirst()->windowHandle(); + const qreal devicePixelRatio = QApplication::allWidgets().constFirst()->devicePixelRatio(); for (const QIcon &icon: icons) for (const QIcon::Mode mode: {QIcon::Disabled, QIcon::Normal}) for (const QSize &size: icon.availableSizes(mode)) - result.addPixmap(icon.pixmap(window, size, mode), mode); + result.addPixmap(icon.pixmap(size, devicePixelRatio, mode), mode); return result; } diff --git a/src/libs/utils/infolabel.cpp b/src/libs/utils/infolabel.cpp index 9eb9f801060..e05c093ca57 100644 --- a/src/libs/utils/infolabel.cpp +++ b/src/libs/utils/infolabel.cpp @@ -118,10 +118,9 @@ void InfoLabel::paintEvent(QPaintEvent *event) p.restore(); } const QIcon &icon = iconForType(m_type); - QWindow *window = this->window()->windowHandle(); const QIcon::Mode mode = !this->isEnabled() ? QIcon::Disabled : QIcon::Normal; const QPixmap iconPx = - icon.pixmap(window, QSize(iconSize, iconSize) * devicePixelRatio(), mode); + icon.pixmap(QSize(iconSize, iconSize) * devicePixelRatio(), devicePixelRatio(), mode); p.drawPixmap(iconRect, iconPx); ElidingLabel::paintEvent(event); } diff --git a/src/libs/utils/stylehelper.cpp b/src/libs/utils/stylehelper.cpp index 4472c43b558..080bb8a3820 100644 --- a/src/libs/utils/stylehelper.cpp +++ b/src/libs/utils/stylehelper.cpp @@ -551,8 +551,7 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect, // return a high-dpi pixmap, which will in that case have a devicePixelRatio // different than 1. The shadow drawing caluculations are done in device // pixels. - QWindow *window = dynamic_cast(p->device())->window()->windowHandle(); - QPixmap px = icon.pixmap(window, rect.size(), iconMode); + QPixmap px = icon.pixmap(rect.size(), devicePixelRatio, iconMode); int radius = int(dipRadius * devicePixelRatio); QPoint offset = dipOffset * devicePixelRatio; cache = QPixmap(px.size() + QSize(radius * 2, radius * 2)); @@ -563,7 +562,7 @@ void StyleHelper::drawIconWithShadow(const QIcon &icon, const QRect &rect, const bool hasDisabledState = icon.availableSizes().count() == icon.availableSizes(QIcon::Disabled).count(); if (!hasDisabledState) - px = disabledSideBarIcon(icon.pixmap(window, rect.size())); + px = disabledSideBarIcon(icon.pixmap(rect.size(), devicePixelRatio)); } else if (creatorTheme()->flag(Theme::ToolBarIconShadow)) { // Draw shadow QImage tmp(px.size() + QSize(radius * 2, radius * 2 + 1), QImage::Format_ARGB32_Premultiplied); diff --git a/src/plugins/autotest/testresultdelegate.cpp b/src/plugins/autotest/testresultdelegate.cpp index 14fe1f646f9..8c9f11b2c79 100644 --- a/src/plugins/autotest/testresultdelegate.cpp +++ b/src/plugins/autotest/testresultdelegate.cpp @@ -53,13 +53,12 @@ void TestResultDelegate::paint(QPainter *painter, const QStyleOptionViewItem &op const TestResult testResult = resultFilterModel->testResult(index); QTC_ASSERT(testResult.isValid(), painter->restore(); return); - const QWidget *widget = dynamic_cast(painter->device()); - QWindow *window = widget ? widget->window()->windowHandle() : nullptr; - QIcon icon = index.data(Qt::DecorationRole).value(); - if (!icon.isNull()) + if (!icon.isNull()) { painter->drawPixmap(positions.left(), positions.top(), - icon.pixmap(window, QSize(positions.iconSize(), positions.iconSize()))); + icon.pixmap(QSize(positions.iconSize(), positions.iconSize()), + painter->device()->devicePixelRatio())); + } TestResultItem *item = resultFilterModel->itemForIndex(index); QTC_ASSERT(item, painter->restore(); return); diff --git a/src/plugins/coreplugin/manhattanstyle.cpp b/src/plugins/coreplugin/manhattanstyle.cpp index 390970eb84e..7a51c633782 100644 --- a/src/plugins/coreplugin/manhattanstyle.cpp +++ b/src/plugins/coreplugin/manhattanstyle.cpp @@ -563,16 +563,15 @@ static void drawPrimitiveTweakedForDarkTheme(QStyle::PrimitiveElement element, break; } case QStyle::PE_IndicatorTabClose: { - QWindow *window = widget ? widget->window()->windowHandle() : nullptr; + const qreal devicePixelRatio = painter->device()->devicePixelRatio(); QRect iconRect = QRect(0, 0, 16, 16); iconRect.moveCenter(option->rect.center()); const QIcon::Mode mode = !isEnabled ? QIcon::Disabled : QIcon::Normal; const static QIcon closeIcon = Utils::Icons::CLOSE_FOREGROUND.icon(); if (option->state & QStyle::State_MouseOver && widget) widget->style()->drawPrimitive(QStyle::PE_PanelButtonCommand, option, painter, widget); - const int devicePixelRatio = widget ? widget->devicePixelRatio() : 1; const QPixmap iconPx = - closeIcon.pixmap(window, iconRect.size() * devicePixelRatio, mode); + closeIcon.pixmap(iconRect.size() * devicePixelRatio, devicePixelRatio, mode); painter->drawPixmap(iconRect, iconPx); break; } diff --git a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp index 5b36bee7f97..09cf5945e82 100644 --- a/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp +++ b/src/plugins/qmldesigner/components/navigator/iconcheckboxitemdelegate.cpp @@ -79,15 +79,12 @@ void IconCheckboxItemDelegate::paint(QPainter *painter, if (rowIsPropertyRole(modelIndex.model(), modelIndex) || getModelNode(modelIndex).isRootNode()) return; // Do not paint icons for property rows or root node - QWindow *window = dynamic_cast(painter->device())->window()->windowHandle(); - QTC_ASSERT(window, return); - const QSize iconSize(16, 16); QPoint iconPosition(styleOption.rect.left() + (styleOption.rect.width() - iconSize.width()) / 2, styleOption.rect.top() + 2 + delegateMargin); const QIcon::State state = isChecked(modelIndex) ? QIcon::State::On : QIcon::State::Off; - const QPixmap iconPixmap = m_icon.pixmap(window, iconSize, mode, state); + const QPixmap iconPixmap = m_icon.pixmap(iconSize, painter->device()->devicePixelRatio(), mode, state); // Shift the lock icon (last column) slightly to the left due to vertical scrollbar width if (modelIndex.column() == NavigatorTreeModel::ColumnType::Lock)