@@ -216,6 +216,11 @@ Item {
216216 }
217217
218218 function revealByEdgePush() {
219+ // make the dismissTimer interval very big temporarily
220+ var dismissTimer = findInvisibleChild(launcher, "dismissTimer");
221+ var oldInterval = dismissTimer.interval;
222+ dismissTimer.interval = 100000;
223+
219224 // Place the mouse against the window/screen edge and push beyond the barrier threshold
220225 mouseMove(root, 1, root.height / 2);
221226 launcher.pushEdge(EdgeBarrierSettings.pushThreshold * 1.1);
@@ -226,6 +231,15 @@ Item {
226231 // wait until it gets fully extended
227232 tryCompare(panel, "x", 0);
228233 tryCompare(launcher, "state", "visibleTemporary");
234+
235+ // move the mouse a bit, this should not be needed but without it
236+ // the mouse areas do not realize their containsMouse have changed
237+ // i've tested in real life without moving the mouse at all and it works
238+ // so it seems to be a test-only issue
239+ mouseMove(root, 2, root.height / 2);
240+
241+ // now that the launcher is out, bring the interval back
242+ dismissTimer.interval = oldInterval;
229243 }
230244
231245 function waitUntilLauncherDisappears() {
@@ -892,6 +906,12 @@ Item {
892906 revealByEdgePush();
893907 compare(launcher.state, "visibleTemporary");
894908
909+ // wait three times the dismiss timer to check the launcher still shown
910+ // because the mouse is still over the launcher
911+ var dismissTimer = findInvisibleChild(launcher, "dismissTimer");
912+ wait(dismissTimer.interval * 3);
913+ compare(panel.x, 0);
914+
895915 // Now move the mouse away and make sure it hides in less than a second
896916 mouseMove(root, root.width, root.height / 2)
897917