Bug 418447 - Vertical spacing between FormLayout checkboxes is too high until the control draws itself again
Summary: Vertical spacing between FormLayout checkboxes is too high until the control ...
Status: RESOLVED FIXED
Alias: None
Product: frameworks-kirigami
Classification: Frameworks and Libraries
Component: general (show other bugs)
Version: Master
Platform: Other Linux
: HI normal
Target Milestone: Not decided
Assignee: Marco Martin
URL:
Keywords:
: 407464 417438 418534 418535 418966 (view as bug list)
Depends on:
Blocks:
 
Reported: 2020-03-03 22:49 UTC by Nate Graham
Modified: 2020-03-23 22:50 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In: 5.69
Sentry Crash Report:


Attachments
Spacing starts out too high (241.53 KB, video/mp4)
2020-03-03 22:49 UTC, Nate Graham
Details

Note You need to log in before you can comment on or make changes to this bug.
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!