diff --git a/org.kde.desktop/Button.qml b/org.kde.desktop/Button.qml --- a/org.kde.desktop/Button.qml +++ b/org.kde.desktop/Button.qml @@ -60,6 +60,8 @@ properties: { "icon": controlRoot.icon ? (controlRoot.icon.name || controlRoot.icon.source) : "", "iconColor": controlRoot.icon && controlRoot.icon.color.a > 0? controlRoot.icon.color : Kirigami.Theme.textColor, + "iconWidth": controlRoot.icon && controlRoot.icon.width ? controlRoot.icon.width : 0, + "iconHeight": controlRoot.icon && controlRoot.icon.height ? controlRoot.icon.height : 0, "flat": controlRoot.flat } } diff --git a/plugin/kquickstyleitem.cpp b/plugin/kquickstyleitem.cpp --- a/plugin/kquickstyleitem.cpp +++ b/plugin/kquickstyleitem.cpp @@ -190,8 +190,17 @@ } else if (icon.canConvert()) { opt->icon = m_theme->iconFromTheme(icon.value(), m_properties[QStringLiteral("iconColor")].value()); } - int e = qApp->style()->pixelMetric(QStyle::PM_ButtonIconSize, m_styleoption, nullptr); - opt->iconSize = QSize(e, e); + auto iconSize = QSize(m_properties[QStringLiteral("iconWidth")].toInt(), m_properties[QStringLiteral("iconHeight")].toInt()); + if (iconSize.isEmpty()) { + int e = qApp->style()->pixelMetric(QStyle::PM_ButtonIconSize, m_styleoption, nullptr); + if (iconSize.width() <= 0) { + iconSize.setWidth(e); + } + if (iconSize.height() <= 0) { + iconSize.setHeight(e); + } + } + opt->iconSize = iconSize; opt->features = activeControl() == QLatin1String("default") ? QStyleOptionButton::DefaultButton : QStyleOptionButton::None;