make sure the size hints are integer and even

Summary:
for retrocompatibility with pc2 units.gridUnit * 1.6 is used
a lot as size hint (we have to guarantee buttons and
textfields have the same height by default for perfect
horizontal alignment.
tough we have make sure that size is integer and even otherwise
we'll have a lot of internal misalignments

Reviewers: broulik

Reviewed By: broulik

Subscribers: kde-frameworks-devel

Tags: #frameworks

Differential Revision: https://phabricator.kde.org/D27399
This commit is contained in:
Marco Martin 2020-02-14 13:09:17 +01:00
parent 3de1c2462e
commit 667dce502a
4 changed files with 16 additions and 16 deletions

View File

@ -46,8 +46,7 @@ T.Button {
PlasmaCore.IconItem {
id: icon
Layout.fillWidth: control.icon.width <= 0
Layout.fillHeight: control.icon.height <= 0
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: control.icon.width > 0 ? control.icon.width : units.iconSizes.small
Layout.preferredHeight: control.icon.height > 0 ? control.icon.height : units.iconSizes.small
@ -72,7 +71,8 @@ T.Button {
background: Item {
//retrocompatibility with old controls
implicitHeight: units.gridUnit * 1.6
implicitWidth: Math.floor(units.gridUnit * 1.6) + Math.floor(units.gridUnit * 1.6) % 2
implicitHeight: implicitWidth
Private.ButtonShadow {
anchors.fill: parent
visible: (!control.flat || control.hovered) && (!control.pressed || !control.checked)

View File

@ -45,8 +45,7 @@ T.TabButton {
PlasmaCore.IconItem {
id: icon
Layout.fillWidth: control.icon.width <= 0
Layout.fillHeight: control.icon.height <= 0
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: control.icon.width > 0 ? control.icon.width : units.iconSizes.smallMedium
Layout.preferredHeight: control.icon.height > 0 ? control.icon.height : units.iconSizes.smallMedium

View File

@ -32,7 +32,7 @@ T.TextField {
implicitWidth: Math.max(units.gridUnit * 8,
placeholderText ? placeholder.implicitWidth + leftPadding + rightPadding : 0)
|| contentWidth + leftPadding + rightPadding
implicitHeight: units.gridUnit * 1.6
implicitHeight: Math.floor(units.gridUnit * 1.6) + Math.floor(units.gridUnit * 1.6) % 2
padding: 6

View File

@ -50,8 +50,7 @@ T.ToolButton {
PlasmaCore.IconItem {
id: icon
Layout.fillWidth: control.icon.width <= 0
Layout.fillHeight: control.icon.height <= 0
Layout.alignment: Qt.AlignCenter
Layout.preferredWidth: control.icon.width > 0 ? control.icon.width : units.iconSizes.smallMedium
Layout.preferredHeight: control.icon.height > 0 ? control.icon.height : units.iconSizes.smallMedium
@ -60,12 +59,7 @@ T.ToolButton {
source: control.icon ? (control.icon.name || control.icon.source) : ""
status: control.activeFocus && !control.pressed && !control.checked ? PlasmaCore.Svg.Selected : PlasmaCore.Svg.Normal
}
PlasmaCore.FrameSvgItem {
id: buttonsurfaceChecker
visible: false
imagePath: "widgets/button"
prefix: control.flat ? ["toolbutton-hover", "normal"] : "normal"
}
Label {
Layout.fillWidth: true
visible: text.length > 0
@ -76,13 +70,20 @@ T.ToolButton {
horizontalAlignment: Text.AlignHCenter
verticalAlignment: Text.AlignVCenter
elide: Text.ElideRight
PlasmaCore.FrameSvgItem {
id: buttonsurfaceChecker
visible: false
imagePath: "widgets/button"
prefix: control.flat ? ["toolbutton-hover", "normal"] : "normal"
}
}
}
background: Item {
//retrocompatibility with old controls
implicitWidth: units.gridUnit * 1.6
implicitHeight: units.gridUnit * 1.6
implicitWidth: Math.floor(units.gridUnit * 1.6) + Math.floor(units.gridUnit * 1.6) % 2
implicitHeight: implicitWidth
Private.ButtonShadow {
anchors.fill: parent
visible: (!control.flat || control.hovered) && (!control.pressed || !control.checked)