From dbb19ba333043670b616bfa586b054685892f531 Mon Sep 17 00:00:00 2001 From: Nate Graham Date: Mon, 4 Feb 2019 11:43:58 -0700 Subject: [PATCH] With software rendering, use outlines instead of shadows on login & lock screen Summary: QML shadows aren't supported with software rendering, so the white text often has poor readability. This patch falls back to outlines when using software rendering to ensure adequate readability. BUG: 398317 FIXED-IN: 5.15.0 Test Plan: No visual change with hardware rendering of some sort. When forcing software rendering, I get outlines instead of shadows Reviewers: #plasma, davidedmundson Reviewed By: #plasma, davidedmundson Subscribers: plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D18733 --- lookandfeel/contents/components/Clock.qml | 32 +++++++++++-------- .../contents/components/UserDelegate.qml | 28 +++++++++------- 2 files changed, 35 insertions(+), 25 deletions(-) diff --git a/lookandfeel/contents/components/Clock.qml b/lookandfeel/contents/components/Clock.qml index a1c8ca005..57c07e476 100644 --- a/lookandfeel/contents/components/Clock.qml +++ b/lookandfeel/contents/components/Clock.qml @@ -17,7 +17,7 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. */ -import QtQuick 2.0 +import QtQuick 2.8 import QtQuick.Layouts 1.1 import QtGraphicalEffects 1.0 @@ -25,30 +25,26 @@ import org.kde.plasma.core 2.0 import org.kde.plasma.components 2.0 Item { + // If we're using software rendering, draw outlines instead of shadows + // See https://bugs.kde.org/show_bug.cgi?id=398317 + readonly property bool softwareRendering: GraphicsInfo.api === GraphicsInfo.Software + width: clock.implicitWidth height: clock.implicitHeight - DropShadow { - id: clockShadow - anchors.fill: clock - source: clock - horizontalOffset: 0 - verticalOffset: 2 - radius: 14 - samples: 32 - spread: 0.3 - color: ColorScope.backgroundColor - } - ColumnLayout { id: clock Label { text: Qt.formatTime(timeSource.data["Local"]["DateTime"]) + style: softwareRendering ? Text.Outline : undefined + styleColor: softwareRendering ? ColorScope.backgroundColor : undefined font.pointSize: 48 Layout.alignment: Qt.AlignHCenter } Label { text: Qt.formatDate(timeSource.data["Local"]["DateTime"], Qt.DefaultLocaleLongDate) + style: softwareRendering ? Text.Outline : undefined + styleColor: softwareRendering ? ColorScope.backgroundColor : undefined font.pointSize: 24 Layout.alignment: Qt.AlignHCenter } @@ -59,4 +55,14 @@ Item { interval: 1000 } } + + layer.enabled: !softwareRendering + layer.effect: DropShadow { + horizontalOffset: 0 + verticalOffset: 2 + radius: 14 + samples: 32 + spread: 0.3 + color: ColorScope.backgroundColor + } } diff --git a/lookandfeel/contents/components/UserDelegate.qml b/lookandfeel/contents/components/UserDelegate.qml index d505318e0..69b8150e8 100644 --- a/lookandfeel/contents/components/UserDelegate.qml +++ b/lookandfeel/contents/components/UserDelegate.qml @@ -27,6 +27,10 @@ import org.kde.plasma.components 2.0 as PlasmaComponents Item { id: wrapper + // If we're using software rendering, draw outlines instead of shadows + // See https://bugs.kde.org/show_bug.cgi?id=398317 + readonly property bool softwareRendering: GraphicsInfo.api === GraphicsInfo.Software + property bool isCurrent: true readonly property var m: model @@ -143,18 +147,6 @@ Item { " } - - DropShadow { - id: labelShadow - anchors.fill: usernameDelegate - source: usernameDelegate - horizontalOffset: 0 - verticalOffset: 1 - radius: 12 - samples: 32 - spread: 0.35 - color: PlasmaCore.ColorScope.backgroundColor - } PlasmaComponents.Label { id: usernameDelegate anchors { @@ -164,10 +156,22 @@ Item { height: implicitHeight // work around stupid bug in Plasma Components that sets the height width: constrainText ? parent.width : implicitWidth text: wrapper.name + style: softwareRendering ? Text.Outline : undefined + styleColor: softwareRendering ? ColorScope.backgroundColor : undefined elide: Text.ElideRight horizontalAlignment: Text.AlignHCenter //make an indication that this has active focus, this only happens when reached with keyboard navigation font.underline: wrapper.activeFocus + + layer.enabled: !softwareRendering + layer.effect: DropShadow { + horizontalOffset: 0 + verticalOffset: 1 + radius: 12 + samples: 32 + spread: 0.35 + color: ColorScope.backgroundColor + } } MouseArea {