Bug 418447

Summary: Vertical spacing between FormLayout checkboxes is too high until the control draws itself again
Product: [Frameworks and Libraries] frameworks-kirigami Reporter: Nate Graham <nate>
Component: generalAssignee: Marco Martin <notmart>
Status: RESOLVED FIXED    
Severity: normal CC: aria, bugseforuns
Priority: HI    
Version: Master   
Target Milestone: Not decided   
Platform: Other   
OS: Linux   
See Also: https://bugs.kde.org/show_bug.cgi?id=407464
https://bugs.kde.org/show_bug.cgi?id=417438
Latest Commit: Version Fixed In: 5.69
Sentry Crash Report:
Attachments: Spacing starts out too high

Description Nate Graham 2020-03-03 22:49:39 UTC
Created attachment 126583 [details]
Spacing starts out too high

See the attached video.

`git bisect` says this regression was introduced by https://phabricator.kde.org/D27595
Comment 1 Patrick Silva 2020-03-06 11:24:48 UTC
The following bugs seem related:
bug 407464
bug 417438
bug 418534
bug 418535
Comment 2 Nate Graham 2020-03-06 13:21:11 UTC
*** Bug 418534 has been marked as a duplicate of this bug. ***
Comment 3 Nate Graham 2020-03-06 13:21:22 UTC
*** Bug 418535 has been marked as a duplicate of this bug. ***
Comment 4 Kai Uwe Broulik 2020-03-18 09:10:25 UTC
Git commit b738ebbb6369e4c1d9705b4e0c6e0fba4f96bd5d by Kai Uwe Broulik.
Committed on 18/03/2020 at 09:09.
Pushed by broulik into branch 'master'.

Fix sizing of CheckBox and RadioButton

KQuickStyleItem manages its implicit size internally. Overriding it on the QML side makes it non-deterministic
which assignment wins and might cause unexpected re-evaluation of the size causing it to change.

Moreover, the CheckIndicator implicit size is based on sizeFromContents for CT_CheckBox, which in case of Breeze
(but not the Qt built-in styles) already contains some extra padding on the side between checkbox and label.
Instead of using that for layouting our full checkbox (indicator + label), do what qqc1 did and use
PM_CheckBoxLabelSpacing for spacing and PM_IndicatorWidth as size hint for the indicator.

Also while at it for radio buttons use the appropriate (PM_RadioButtonLabelSpacing and PM_ExclusiveIndicatorWidth) hints.

This makes QQC2 CheckBox and RadioButton layouted pixel-perfect to their QWidget counterparts and also fixes
it randomly changing size hints as you switch between pages as demonstrated by the bug report.

Differential Revision: https://phabricator.kde.org/D28116

M  +6    -5    org.kde.desktop/CheckBox.qml
M  +0    -3    org.kde.desktop/CheckIndicator.qml
M  +6    -5    org.kde.desktop/RadioButton.qml
M  +6    -0    plugin/kquickstyleitem.cpp

https://commits.kde.org/qqc2-desktop-style/b738ebbb6369e4c1d9705b4e0c6e0fba4f96bd5d
Comment 5 Patrick Silva 2020-03-18 11:04:59 UTC
This patch also fixes bug 417438 and bug 407464 on Neon unstable.
Comment 6 Patrick Silva 2020-03-18 11:05:18 UTC
*** Bug 407464 has been marked as a duplicate of this bug. ***
Comment 7 Patrick Silva 2020-03-18 11:05:20 UTC
*** Bug 417438 has been marked as a duplicate of this bug. ***
Comment 8 ariasuni 2020-03-23 21:04:10 UTC
Bug 418966 could be a duplicate.
Comment 9 Nate Graham 2020-03-23 22:50:24 UTC
*** Bug 418966 has been marked as a duplicate of this bug. ***
Comment 10 Nate Graham 2020-03-23 22:50:34 UTC
Yep, same issue. Thanks!