@@ -28,8 +28,8 @@ import Utils 0.1 // For EdgeBarrierSettings
28 launcher. */
28 launcher. */
31− width: units.gu(50)
31+ width: units.gu(140)
32− height: units.gu(55)
32+ height: units.gu(70)
35 id: launcherLoader
35 id: launcherLoader
@@ -79,11 +79,40 @@ Item {
83+ target: launcherLoader.item
84+ property: "lockedVisible"
85+ value: lockedVisibleCheckBox.checked
88+ target: launcherLoader.item
89+ property: "panelWidth"
90+ value: units.gu(Math.round(widthSlider.value))
82 ColumnLayout {
93 ColumnLayout {
83 anchors { bottom: parent.bottom; right: parent.right; margins: units.gu(1) }
94 anchors { bottom: parent.bottom; right: parent.right; margins: units.gu(1) }
84 spacing: units.gu(1)
95 spacing: units.gu(1)
85 width: childrenRect.width
96 width: childrenRect.width
100+ id: lockedVisibleCheckBox
104+ text: "Launcher always visible"
110+ Layout.fillWidth: true
87 MouseTouchEmulationCheckbox {}
116 MouseTouchEmulationCheckbox {}
89 EdgeBarrierControls {
118 EdgeBarrierControls {
@@ -217,10 +246,6 @@ Item {
217 // growing while populating it with icons etc.
246 // growing while populating it with icons etc.
218 tryCompare(listView, "flicking", false);
247 tryCompare(listView, "flicking", false);
220− // Make sure noone changed the height of the window. The issue this test case
221− // is verifying only happens on certain heights of the Launcher
222− compare(root.height, units.gu(55));
224 compare(listView.contentY, -listView.topMargin, "Launcher did not start up with first item unfolded");
249 compare(listView.contentY, -listView.topMargin, "Launcher did not start up with first item unfolded");
226 // Now do check that snapping is in fact enabled
251 // Now do check that snapping is in fact enabled
@@ -277,23 +302,31 @@ Item {
278 function positionLauncherListAtBeginning() {
303 function positionLauncherListAtBeginning() {
279 var listView = testCase.findChild(launcherLoader.item, "launcherListView");
304 var listView = testCase.findChild(launcherLoader.item, "launcherListView");
280− listView.contentY = -listView.topMargin;
305+ var moveAnimation = findInvisibleChild(listView, "moveAnimation")
307+ listView.moveToIndex(0);
309+ waitForRendering(listView);
310+ tryCompare(moveAnimation, "running", false);
282 function positionLauncherListAtEnd() {
312 function positionLauncherListAtEnd() {
283 var listView = testCase.findChild(launcherLoader.item, "launcherListView");
313 var listView = testCase.findChild(launcherLoader.item, "launcherListView");
284− if ((listView.contentHeight + listView.topMargin + listView.bottomMargin) > listView.height) {
314+ var moveAnimation = findInvisibleChild(listView, "moveAnimation")
285− listView.contentY = listView.topMargin + listView.contentHeight
315+
316+ listView.moveToIndex(listView.count -1);
286− - listView.height;
318+ waitForRendering(listView);
287− }
319+ tryCompare(moveAnimation, "running", false);
290 function assertFocusOnIndex(index) {
322 function assertFocusOnIndex(index) {
291− var launcherPanel = findChild(launcherLoader.item, "launcherPanel");
323+ var launcherPanel = findChild(launcher, "launcherPanel");
292− var launcherListView = findChild(launcherLoader.item, "launcherListView");
324+ var launcherListView = findChild(launcher, "launcherListView");
293− var bfbFocusHighlight = findChild(launcherLoader.item, "bfbFocusHighlight");
325+ var bfbFocusHighlight = findChild(launcher, "bfbFocusHighlight");
294− waitForRendering(launcherLoader.item);
327+ waitForRendering(launcher);
295 tryCompare(launcherPanel, "highlightIndex", index);
328 tryCompare(launcherPanel, "highlightIndex", index);
296− tryCompare(bfbFocusHighlight, "visible", index === -1);
329+ compare(bfbFocusHighlight.visible, index === -1);
297 for (var i = 0; i < launcherListView.count; i++) {
330 for (var i = 0; i < launcherListView.count; i++) {
298 var item = findChild(launcher, "launcherDelegate" + i);
331 var item = findChild(launcher, "launcherDelegate" + i);
299 // Delegates might be destroyed when not visible. We can't check if they paint a focus highlight.
332 // Delegates might be destroyed when not visible. We can't check if they paint a focus highlight.
@@ -406,6 +439,7 @@ Item {
406 wait(100)
439 wait(100)
407 compare(launcher.maxPanelX, -launcher.panelWidth, "Launcher moved even if it shouldn't")
440 compare(launcher.maxPanelX, -launcher.panelWidth, "Launcher moved even if it shouldn't")
409 waitUntilLauncherDisappears();
443 waitUntilLauncherDisappears();
410 launcher.available = true;
444 launcher.available = true;
@@ -429,6 +463,8 @@ Item {
429 dragLauncherIntoView();
463 dragLauncherIntoView();
430 var launcherListView = findChild(launcher, "launcherListView");
464 var launcherListView = findChild(launcher, "launcherListView");
431 for (var i = 0; i < launcherListView.count; ++i) {
465 for (var i = 0; i < launcherListView.count; ++i) {
466+ launcherListView.moveToIndex(i);
467+ waitForRendering(launcherListView);
432 var delegate = findChild(launcherListView, "launcherDelegate" + i)
468 var delegate = findChild(launcherListView, "launcherDelegate" + i)
433 compare(findChild(delegate, "countEmblem").visible, LauncherModel.get(i).countVisible)
469 compare(findChild(delegate, "countEmblem").visible, LauncherModel.get(i).countVisible)
434 // Intentionally allow type coercion (string/number)
470 // Intentionally allow type coercion (string/number)
@@ -489,6 +525,7 @@ Item {
489 launcher.lastSelectedApplication = "";
525 launcher.lastSelectedApplication = "";
490 dragLauncherIntoView();
526 dragLauncherIntoView();
491 var listView = findChild(launcher, "launcherListView");
527 var listView = findChild(launcher, "launcherListView");
528+ var moveAnimation = findInvisibleChild(listView, "moveAnimation")
493 // flicking is unreliable. sometimes it works, sometimes the
530 // flicking is unreliable. sometimes it works, sometimes the
494 // list view moves just a tiny bit or not at all, making tests fail.
531 // list view moves just a tiny bit or not at all, making tests fail.
@@ -499,12 +536,14 @@ Item {
500 positionLauncherListAtEnd();
537 positionLauncherListAtEnd();
502− tryCompare(listView, "flicking", false);
504 var oldY = listView.contentY;
539 var oldY = listView.contentY;
506 mouseClick(listView, listView.width / 2, data.clickY);
541 mouseClick(listView, listView.width / 2, data.clickY);
543+ if (data.expectFlick) {
544+ tryCompare(moveAnimation, "running", true);
507− tryCompare(listView, "flicking", false);
546+ tryCompare(moveAnimation, "running", false);
509 if (data.expectFlick) {
548 if (data.expectFlick) {
510 verify(listView.contentY != oldY);
549 verify(listView.contentY != oldY);
@@ -1092,11 +1131,14 @@ Item {
1092 function test_keyboardNavigation() {
1131 function test_keyboardNavigation() {
1093 var bfbFocusHighlight = findChild(launcher, "bfbFocusHighlight");
1132 var bfbFocusHighlight = findChild(launcher, "bfbFocusHighlight");
1094 var quickList = findChild(launcher, "quickList");
1133 var quickList = findChild(launcher, "quickList");
1134+ var launcherPanel = findChild(launcher, "launcherPanel");
1095 var launcherListView = findChild(launcher, "launcherListView");
1135 var launcherListView = findChild(launcher, "launcherListView");
1096 var last = launcherListView.count - 1;
1136 var last = launcherListView.count - 1;
1098 compare(bfbFocusHighlight.visible, false);
1138 compare(bfbFocusHighlight.visible, false);
1099 launcher.openForKeyboardNavigation();
1139 launcher.openForKeyboardNavigation();
1140+ tryCompare(launcherPanel, "x", 0);
1141+ waitForRendering(launcher);
1101 assertFocusOnIndex(-1);
1143 assertFocusOnIndex(-1);
@@ -1173,11 +1215,47 @@ Item {
1173 compare(signalSpy.count, 1, "Quicklist signal wasn't triggered")
1215 compare(signalSpy.count, 1, "Quicklist signal wasn't triggered")
1174 compare(signalSpy.signalArguments[0][0], LauncherModel.get(1).appId)
1216 compare(signalSpy.signalArguments[0][0], LauncherModel.get(1).appId)
1175 compare(signalSpy.signalArguments[0][1], 2)
1217 compare(signalSpy.signalArguments[0][1], 2)
1218+ assertFocusOnIndex(-2);
1221+ function test_hideNotWorkingWhenLockedOut_data() {
1223+ {tag: "locked visible", locked: true},
1224+ {tag: "no locked visible", locked: false},
1228+ function test_hideNotWorkingWhenLockedOut(data) {
1229+ launcher.lockedVisible = data.locked;
1231+ tryCompare(launcher, "state", "visible");
1233+ tryCompare(launcher, "state", "");
1237+ waitForRendering(launcher);
1239+ verify(launcher.state == "visible");
1241+ verify(launcher.state == "");
1245+ function test_cancelKbdNavigationWitMouse_data() {
1247+ {tag: "locked out - no quicklist", autohide: false, withQuickList: false },
1248+ {tag: "locked out - with quicklist", autohide: false, withQuickList: true },
1249+ {tag: "autohide - no quicklist", autohide: true, withQuickList: false },
1250+ {tag: "autohide - with quicklist", autohide: true, withQuickList: true },
1178− function test_cancelKbdNavigationWitMouse() {
1254+ function test_cancelKbdNavigationWitMouse(data) {
1255+ launcher.autohideEnabled = data.autohide;
1179 launcher.openForKeyboardNavigation();
1256 launcher.openForKeyboardNavigation();
1180 waitForRendering(launcher);
1257 waitForRendering(launcher);
1181 var launcherPanel = findChild(launcher, "launcherPanel");
1259 var launcherPanel = findChild(launcher, "launcherPanel");
1182 tryCompare(launcherPanel, "x", 0);
1260 tryCompare(launcherPanel, "x", 0);
@@ -1185,15 +1263,22 @@ Item {
1186 keyClick(Qt.Key_Down); // Down to launcher item 0
1264 keyClick(Qt.Key_Down); // Down to launcher item 0
1187 keyClick(Qt.Key_Down); // Down to launcher item 1
1265 keyClick(Qt.Key_Down); // Down to launcher item 1
1188− keyClick(Qt.Key_Right); // Into quicklist
1267+ if (data.withQuickList) {
1268+ keyClick(Qt.Key_Right); // Into quicklist
1269+ tryCompare(quickList, "visible", true)
1190 waitForRendering(launcher)
1271 waitForRendering(launcher)
1191− tryCompare(quickList, "visible", true)
1193− mouseClick(root, root.width / 2, units.gu(2));
1273+ mouseClick(root);
1275+ if (data.autohide) {
1195− tryCompare(launcher, "state", "");
1276+ tryCompare(launcher, "state", "");
1196− tryCompare(launcherPanel, "highlightIndex", -2);
1277+ } else {
1278+ tryCompare(launcher, "state", "visible");
1281+ assertFocusOnIndex(-2);