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 @@ -62,6 +62,8 @@ //controlRoot.display != AbstractButton.TextOnly == 1, for Qt 5.9 compatibility "icon": controlRoot.icon && (controlRoot.display == undefined || controlRoot.display != 1) ? (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 ? controlRoot.flat : false } } diff --git a/plugin/kquickstyleitem.cpp b/plugin/kquickstyleitem.cpp --- a/plugin/kquickstyleitem.cpp +++ b/plugin/kquickstyleitem.cpp @@ -190,8 +190,10 @@ } else if (icon.canConvert()) { opt->icon = m_theme->iconFromTheme(icon.value(), m_properties[QStringLiteral("iconColor")].value()); } + int iconWidth = m_properties[QStringLiteral("iconWidth")].toInt(); + int iconHeight = m_properties[QStringLiteral("iconHeight")].toInt(); int e = qApp->style()->pixelMetric(QStyle::PM_ButtonIconSize, m_styleoption, nullptr); - opt->iconSize = QSize(e, e); + opt->iconSize = QSize(iconWidth > 0 ? iconWidth : e, iconHeight > 0 ? iconHeight : e); opt->features = activeControl() == QLatin1String("default") ? QStyleOptionButton::DefaultButton : QStyleOptionButton::None;