Bug 391695

Summary: Workspace Theme/Desktop Theme KCM: use of QtQuickControls1 and/or PlasmaComponents labels causes blurry pixellated text with non-integer scale factors
Product: [Applications] systemsettings Reporter: Nate Graham <nate>
Component: generalAssignee: Plasma Bugs List <plasma-bugs>
Status: RESOLVED UPSTREAM    
Severity: normal CC: bugseforuns, kde
Priority: NOR    
Version: 5.12.3   
Target Milestone: ---   
Platform: Other   
OS: Linux   
URL: https://bugreports.qt.io/browse/QTBUG-67007
Latest Commit: Version Fixed In: Qt 5.11
Sentry Crash Report:
Attachments: Desktop Theme KCM with blurry pixellated Text at 1.3 scale factor

Description Nate Graham 2018-03-11 01:15:50 UTC
Created attachment 111310 [details]
Desktop Theme KCM with blurry pixellated Text at 1.3  scale factor

When a non-integer systemwide scale factor is set in System Settings > Display & Monitor > Displays > Scale, the Workspace Theme/Desktop Theme KCM has blurry pixellated text due to the use of QtQuickControls1 and/or PlasmaComponents text labels which had issues with non-integer scale factors because they did not force Text.NativeRendering for non-integer scale factors. Porting to QQC2 and PlasmaComponents3 should resolve the issue.
Comment 1 David Edmundson 2018-03-11 01:17:44 UTC
>PlasmaComponents3

That's not true.
Comment 2 Nate Graham 2018-03-11 02:40:32 UTC
No, so we need to fix PC3 too?
Comment 3 Nate Graham 2018-03-11 20:26:26 UTC
In fact, my patch does fix the issue in PlasmaComponents: https://bugs.kde.org/show_bug.cgi?id=356446

But you're right, that's not relevant here.
Comment 4 Nate Graham 2018-03-16 22:27:17 UTC
Git commit a21bc11fe11651f6d211489ebfc8435cef877194 by Nathaniel Graham.
Committed on 16/03/2018 at 22:26.
Pushed by ngraham into branch 'master'.

Fix text scaling with non-integer scale factors when PLASMA_USE_QT_SCALING=1 is set

Summary:
When `PLASMA_USE_QT_SCALING=1` is set, Plasma uses native Qt scaling. This works fine for integer scale factors, and fixes a lot of bugs (see [[https://bugs.kde.org/show_bug.cgi?id=356446|Bug 356446]]) but it introduces a new one: with non-integer scale factors, text becomes blurry and pixellated because of a bug in `Text.NativeRendering`: https://bugreports.qt.io/browse/QTBUG-67007

QQC2-desktop-style forces the use of `Text.QtRendering` rendering for non-integer scale factors, successfully working around the problem. But PlasmaComponents QML objects don't implement the same workaround, so we see the issue in Plasma. This patch fixes that, and gets us one step closer to being able to use Qt scaling in Plasmashell.

There is no effect when `PLASMA_USE_QT_SCALING=1` is not being used.

FIXED-IN 5.13
Related: bug 391691, bug 384031, bug 386216, bug 391694, bug 385547, bug 391692, bug 356446

Test Plan:
Before: `PLASMA_USE_QT_SCALING=1` set, 1.2 scale factor: Plasma text looks awful:
{F5749797}

After: `PLASMA_USE_QT_SCALING=1` set, 1.2 scale factor: Plasma text looks amazing!
{F5749798}

Note that we still get sub-pixel anti-aliasing and good kerning. There appear to be no layout regressions.

Without both `PLASMA_USE_QT_SCALING=1` and a non-integer scale factor set, there is no visual change compared to the status quo.

Reviewers: #plasma, davidedmundson

Reviewed By: #plasma, davidedmundson

Subscribers: mart, broulik, #frameworks

Tags: #frameworks

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

M  +4    -2    examples/applets/testtheme/contents/ui/FontGizmo.qml
M  +5    -1    src/declarativeimports/plasmacomponents/qml/Label.qml
M  +5    -1    src/declarativeimports/plasmacomponents/qml/private/DualStateButton.qml
M  +4    -0    src/declarativeimports/plasmacomponents3/ComboBox.qml
M  +5    -1    src/declarativeimports/plasmacomponents3/Label.qml
M  +5    -1    src/declarativeimports/plasmacomponents3/TextArea.qml
M  +5    -1    src/declarativeimports/plasmacomponents3/TextField.qml
M  +5    -0    src/declarativeimports/plasmastyle/ComboBoxStyle.qml
M  +4    -1    src/declarativeimports/plasmastyle/SpinBoxStyle.qml
M  +4    -1    src/declarativeimports/plasmastyle/TextAreaStyle.qml
M  +4    -1    src/declarativeimports/plasmastyle/TextFieldStyle.qml

https://commits.kde.org/plasma-framework/a21bc11fe11651f6d211489ebfc8435cef877194
Comment 5 Nate Graham 2018-03-19 17:08:31 UTC
Fixed upstream in https://bugreports.qt.io/browse/QTBUG-67007