on xenial help sign in
prevent hiding the launcher when the mouse hover event is eaten by the EdgePushArea (LP: #1657045)
47b1884Michael Zanetti
qml/Components/EdgeBarrier.qml+1
@@ -30,6 +30,7 @@ Item {
30 property int edge: Qt.LeftEdge
30 property int edge: Qt.LeftEdge
31
31
32 readonly property alias progress: controller.progress
32 readonly property alias progress: controller.progress
33+ readonly property alias containsMouse: controller.containsMouse
33
34
34 property Item target: parent
35 property Item target: parent
35 function push(amount) { controller.push(amount); }
36 function push(amount) { controller.push(amount); }
qml/Launcher/Launcher.qml+1−1
@@ -414,7 +414,7 @@ FocusScope {
414 target: panel.dismissTimer
414 target: panel.dismissTimer
415 onTriggered: {
415 onTriggered: {
416 if (root.autohideEnabled && !root.lockedVisible) {
416 if (root.autohideEnabled && !root.lockedVisible) {
417− if (!panel.preventHiding) {
417+ if (!edgeBarrier.containsMouse && !panel.preventHiding) {
418 root.state = ""
418 root.state = ""
419 } else {
419 } else {
420 panel.dismissTimer.restart()
420 panel.dismissTimer.restart()
tests/qmltests/Launcher/tst_Launcher.qml+13
@@ -1480,6 +1480,19 @@ Rectangle {
1480 launcher.available = true;
1480 launcher.available = true;
1481 }
1481 }
1482
1482
1483+ function test_hoverOnEdgeBarrerPreventsHiding() {
1484+ revealByEdgePush();
1485+
1486+ // Make sure the mouse is on the very left edge (on top of the barrier)
1487+ mouseMove(root, 1, root.height / 2);
1488+
1489+ // trigger the hide timer
1490+ compare(fakeDismissTimer.running, true);
1491+ fakeDismissTimer.triggered();
1492+
1493+ compare(launcher.state, "visibleTemporary");
1494+ }
1495+
1483 function test_hintOnSizeChange() {
1496 function test_hintOnSizeChange() {
1484 var oldSize = launcher.panelWidth;
1497 var oldSize = launcher.panelWidth;
1485 launcher.maxPanelX = -launcher.panelWidth;
1498 launcher.maxPanelX = -launcher.panelWidth;