@@ -60,6 +60,58 @@ Showable {
6060 onRunningChanged: if (!__rightHideAnimation.running) greeter.hideAnimation = __leftHideAnimation
6161 }
6262
63+ // Bi-directional revealer
64+ DraggingArea {
65+ id: dragHandle
66+ anchors.fill: parent
67+ enabled: greeter.narrowMode || !greeter.locked
68+ orientation: Qt.Horizontal
69+ propagateComposedEvents: true
70+
71+ Component.onCompleted: {
72+ // set evaluators to baseline of dragValue == 0
73+ leftEvaluator.reset()
74+ rightEvaluator.reset()
75+ }
76+
77+ function maybeTease() {
78+ if (!greeter.locked || greeter.narrowMode)
79+ greeter.tease();
80+ }
81+
82+ onClicked: maybeTease()
83+ onDragStart: maybeTease()
84+ onPressAndHold: {} // eat event, but no need to tease, as drag will cover it
85+
86+ onDragEnd: {
87+ if (rightEvaluator.shouldAutoComplete())
88+ greeter.hideRight()
89+ else if (leftEvaluator.shouldAutoComplete())
90+ greeter.hide();
91+ else
92+ greeter.show(); // undo drag
93+ }
94+
95+ onDragValueChanged: {
96+ // dragValue is kept as a "step" value since we do this x adjusting on the fly
97+ greeter.x += dragValue
98+ }
99+
100+ EdgeDragEvaluator {
101+ id: rightEvaluator
102+ trackedPosition: dragHandle.dragValue + greeter.x
103+ maxDragDistance: parent.width
104+ direction: Direction.Rightwards
105+ }
106+
107+ EdgeDragEvaluator {
108+ id: leftEvaluator
109+ trackedPosition: dragHandle.dragValue + greeter.x
110+ maxDragDistance: parent.width
111+ direction: Direction.Leftwards
112+ }
113+ }
114+
63115 Loader {
64116 id: greeterContentLoader
65117 objectName: "greeterContentLoader"
@@ -117,59 +169,6 @@ Showable {
117169 duration: UbuntuAnimation.SleepyDuration
118170 }
119171 }
120−
121− }
122−
123− // Bi-directional revealer
124− DraggingArea {
125− id: dragHandle
126− anchors.fill: greeterContentLoader
127− enabled: greeter.narrowMode || !greeter.locked
128− orientation: Qt.Horizontal
129− propagateComposedEvents: true
130−
131− Component.onCompleted: {
132− // set evaluators to baseline of dragValue == 0
133− leftEvaluator.reset()
134− rightEvaluator.reset()
135− }
136−
137− function maybeTease() {
138− if (!greeter.locked || greeter.narrowMode)
139− greeter.tease();
140− }
141−
142− onClicked: maybeTease()
143− onDragStart: maybeTease()
144− onPressAndHold: {} // eat event, but no need to tease, as drag will cover it
145−
146− onDragEnd: {
147− if (rightEvaluator.shouldAutoComplete())
148− greeter.hideRight()
149− else if (leftEvaluator.shouldAutoComplete())
150− greeter.hide();
151− else
152− greeter.show(); // undo drag
153− }
154−
155− onDragValueChanged: {
156− // dragValue is kept as a "step" value since we do this x adjusting on the fly
157− greeter.x += dragValue
158− }
159−
160− EdgeDragEvaluator {
161− id: rightEvaluator
162− trackedPosition: dragHandle.dragValue + greeter.x
163− maxDragDistance: parent.width
164− direction: Direction.Rightwards
165− }
166−
167− EdgeDragEvaluator {
168− id: leftEvaluator
169− trackedPosition: dragHandle.dragValue + greeter.x
170− maxDragDistance: parent.width
171− direction: Direction.Leftwards
172− }
173172 }
174173
175174 // right side shadow