@@ -93,10 +93,10 @@ Item {
9393 Timer {
9494 id: dismissTimer
9595 objectName: "dismissTimer"
96− interval: 5000
96+ interval: 500
9797 onTriggered: {
9898 if (root.autohideEnabled) {
99− if (!panel.preventHiding) {
99+ if (!panel.preventHiding && !hoverArea.containsMouse) {
100100 root.state = ""
101101 } else {
102102 dismissTimer.restart()
@@ -159,7 +159,7 @@ Item {
159159
160160 MouseArea {
161161 id: launcherDragArea
162− enabled: root.available && root.state == "visible"
162+ enabled: root.available && (root.state == "visible" || root.state == "visibleTemporary")
163163 anchors.fill: panel
164164 anchors.rightMargin: -units.gu(2)
165165 drag {
@@ -245,6 +245,33 @@ Item {
245245 }
246246 }
247247
248+ // TODO: This should be replaced by some mechanism that reveals the launcher
249+ // after a certain resistance has been overcome, like unity7 does. However,
250+ // as we don't get relative mouse coordinates yet, this will do for now.
251+ MouseArea {
252+ id: hoverArea
253+ anchors { fill: panel; rightMargin: -1 }
254+ hoverEnabled: true
255+ propagateComposedEvents: true
256+ onContainsMouseChanged: {
257+ if (containsMouse) {
258+ root.switchToNextState("visibleTemporary");
259+ } else {
260+ dismissTimer.restart();
261+ }
262+ }
263+ onPressed: mouse.accepted = false;
264+
265+ // We need to eat touch events here in order to make sure that
266+ // we don't trigger both, the dragArea and the hoverArea
267+ MultiPointTouchArea {
268+ anchors { top: parent.top; right: parent.right; bottom: parent.bottom }
269+ width: units.dp(1)
270+ mouseEnabled: false
271+ enabled: parent.enabled
272+ }
273+ }
274+
248275 EdgeDragArea {
249276 id: dragArea
250277 objectName: "launcherDragArea"
@@ -300,6 +327,16 @@ Item {
300327 target: panel
301328 x: -root.x // so we never go past panelWidth, even when teased by tutorial
302329 }
330+ PropertyChanges { target: hoverArea; enabled: false }
331+ },
332+ State {
333+ name: "visibleTemporary"
334+ extend: "visible"
335+ PropertyChanges {
336+ target: root
337+ autohideEnabled: true
338+ }
339+ PropertyChanges { target: hoverArea; enabled: true }
303340 },
304341 State {
305342 name: "teasing"