on xenial help sign in
Don't animate rotation when greeter is shown or while display is off
commit45a59d6a09b37d01c2150ecfa68cfd6d7ac5d266 authorDaniel d'Andrada <daniel.dandrada@canonical.com> dateFri 24 Apr 2015, 09:30 (12 years ago) parent5106604
3 files changed+34−1
qml/Rotation/RotationStates.qml+7 qml/Shell.qml+2 tests/qmltests/tst_OrientedShell.qml+25−1
qml/Rotation/RotationStates.qml+7
@@ -16,6 +16,7 @@
1616
1717import QtQuick 2.0
1818import Ubuntu.Components 1.1
19+import Powerd 0.1
1920
2021// Why the state machine is done that way:
2122// We cannot use regular PropertyChanges{} inside the State elements as steps in the
@@ -121,6 +122,12 @@ StateGroup {
121122 // During start up, inital property values are still settling while we're still
122123 // to render the very first frame
123124 d.animationType = d.noAnimation;
125+ } else if (Powerd.status === Powerd.Off) {
126+ // There's no point in animating if the user can't see it (display is off).
127+ d.animationType = d.noAnimation;
128+ } else if (root.shell.showingGreeter) {
129+ // A rotating greeter looks weird.
130+ d.animationType = d.noAnimation;
124131 } else {
125132 if (!root.shell.mainApp) {
126133 // shouldn't happen but, anyway
qml/Shell.qml+2
@@ -70,6 +70,8 @@ Item {
7070 && (applicationsDisplayLoader.item && applicationsDisplayLoader.item.orientationChangesEnabled)
7171 && !greeter.animating
7272
73+ readonly property bool showingGreeter: greeter.shown
74+
7375 property bool startingUp: true
7476 Timer { id: finishStartUpTimer; interval: 500; onTriggered: startingUp = false }
7577
tests/qmltests/tst_OrientedShell.qml+25−1
@@ -22,6 +22,7 @@ import Ubuntu.Components.ListItems 1.0 as ListItem
2222import Unity.Application 0.1
2323import Unity.Test 0.1
2424import LightDM 0.1 as LightDM
25+import Powerd 0.1
2526
2627import "../../qml"
2728
@@ -161,8 +162,16 @@ Rectangle {
161162 }
162163
163164 Rectangle {
164− id: controls
165+ width: controls.width
166+ anchors {
167+ top: parent.top
168+ bottom: parent.bottom
169+ right: parent.right
170+ }
165171 color: "darkgrey"
172+ }
173+ Flickable {
174+ id: controls
166175 width: units.gu(30)
167176 anchors {
168177 top: parent.top
@@ -170,7 +179,11 @@ Rectangle {
170179 right: parent.right
171180 }
172181
182+ boundsBehavior: Flickable.StopAtBounds
183+ contentHeight: controlsColumn.height
184+
173185 Column {
186+ id: controlsColumn
174187 anchors { left: parent.left; right: parent.right; top: parent.top; margins: units.gu(1) }
175188 spacing: units.gu(1)
176189 Button {
@@ -281,6 +294,17 @@ Rectangle {
281294 anchors.verticalCenter: parent.verticalCenter
282295 }
283296 }
297+ Button {
298+ text: Powerd.status === Powerd.On ? "Display ON" : "Display OFF"
299+ activeFocusOnPress: false
300+ onClicked: {
301+ if (Powerd.status === Powerd.On) {
302+ Powerd.status = Powerd.Off;
303+ } else {
304+ Powerd.status = Powerd.On;
305+ }
306+ }
307+ }
284308 }
285309 }
286310