@@ -106,7 +106,7 @@ Rectangle {
106 enabled: parent.promptSurfaceList !== null && parent.promptSurfaceList.count > 0
106 enabled: parent.promptSurfaceList !== null && parent.promptSurfaceList.count > 0
107 activeFocusOnPress: false
107 activeFocusOnPress: false
108 text: "Remove"
108 text: "Remove"
109− onClicked: { parent.promptSurfaceList.get(parent.promptSurfaceList.count - 1).close(); }
109+ onClicked: { parent.promptSurfaceList.get(0).close(); }
@@ -449,20 +449,21 @@ Rectangle {
449 for (i = 0; i < 3; i++) {
449 for (i = 0; i < 3; i++) {
450 promptSurfaceList.createSurface();
450 promptSurfaceList.createSurface();
451 compare(promptSurfaces.count, i+1);
451 compare(promptSurfaces.count, i+1);
452− waitUntilSurfaceContainerStopsAnimating(promptSurfaces.itemAt(promptSurfaces.count - 1));
452+ waitUntilSurfaceContainerStopsAnimating(promptSurfaces.itemAt(0));
455− for (i = 2; i >= 0; --i) {
455+ for (i = 3; i > 0; --i) {
456− var promptSurface = promptSurfaceList.get(i);
456+ var promptSurface = promptSurfaceList.get(0);
457 compare(promptSurface.activeFocus, true);
457 compare(promptSurface.activeFocus, true);
459 promptSurface.close();
459 promptSurface.close();
460+ promptSurface = null;
460− tryCompareFunction(function() { return promptSurfaces.count; }, i);
461+ tryCompareFunction(function() { return promptSurfaces.count; }, i-1);
462− if (i > 0) {
463+ if (promptSurfaces.count > 0) {
463− // active focus should have gone to the yongest remaining sibling
464+ // active focus should have gone to the new head of the list
464− var previousPromptSurface = promptSurfaceList.get(i-1);
465+ promptSurface = promptSurfaceList.get(0);
465− tryCompare(previousPromptSurface, "activeFocus", true);
466+ tryCompare(promptSurface, "activeFocus", true);
467 // active focus should have gone to the application surface
468 // active focus should have gone to the application surface
468 tryCompare(applicationWindow.surface, "activeFocus", true);
469 tryCompare(applicationWindow.surface, "activeFocus", true);
@@ -498,5 +499,34 @@ Rectangle {
498 delegate.surface.close();
499 delegate.surface.close();
499 tryCompare(promptSurfaces, "count", 0);
500 tryCompare(promptSurfaces, "count", 0);
503+ // Check that the z value of SurfaceContainers for prompt surfaces go from highest
504+ // for index 0 to lowest for the last index in the prompt surface list.
505+ // Regression test for https://bugs.launchpad.net/bugs/1586219
506+ function test_promptSurfacesZOrdering() {
507+ var promptSurfaceList = root.fakeApplication.promptSurfaceList;
508+ var promptSurfaces = testCase.findChild(applicationWindow, "promptSurfacesRepeater");
510+ promptSurfaceList.createSurface();
512+ for (var i = 2; i <= 3; i++) {
513+ promptSurfaceList.createSurface();
514+ tryCompare(promptSurfaces, "count", i);
515+ waitUntilSurfaceContainerStopsAnimating(promptSurfaces.itemAt(0));
517+ for (var j = 1; j < promptSurfaces.count; j++) {
518+ var delegate = promptSurfaces.itemAt(j);
519+ var previousDelegate = promptSurfaces.itemAt(j-1);
520+ verify(previousDelegate.z > delegate.z);
525+ while (promptSurfaceList.count > 0) {
526+ var currentCount = promptSurfaceList.count;
527+ promptSurfaceList.get(0).close();
528+ tryCompare(promptSurfaceList, "count", currentCount - 1);