@@ -85,11 +85,6 @@ Rectangle {
85 width: units.gu(40)
85 width: units.gu(40)
86 height: units.gu(71)
86 height: units.gu(71)
90− GSettingsController.setUsageMode("Staged")
95 name: "tablet"
90 name: "tablet"
@@ -98,28 +93,6 @@ Rectangle {
98 width: units.gu(100)
93 width: units.gu(100)
99 height: units.gu(71)
94 height: units.gu(71)
103− GSettingsController.setUsageMode("Staged")
111− width: units.gu(100)
112− height: units.gu(71)
115− target: mouseEmulation
120− GSettingsController.setUsageMode("Windowed")
@@ -185,13 +158,23 @@ Rectangle {
185 anchors { left: parent.left; right: parent.right }
158 anchors { left: parent.left; right: parent.right }
186 activeFocusOnPress: false
159 activeFocusOnPress: false
187 text: "Size"
160 text: "Size"
188− model: ["phone", "tablet", "desktop"]
161+ model: ["phone", "tablet"]
189 onSelectedIndexChanged: {
162 onSelectedIndexChanged: {
190 shellLoader.active = false;
163 shellLoader.active = false;
191 shellLoader.state = model[selectedIndex];
164 shellLoader.state = model[selectedIndex];
192 shellLoader.active = true;
165 shellLoader.active = true;
168+ ListItem.ItemSelector {
169+ id: usageModeSelector
170+ anchors { left: parent.left; right: parent.right }
171+ activeFocusOnPress: false
173+ model: ["Staged", "Windowed"]
174+ onSelectedIndexChanged: {
175+ GSettingsController.setUsageMode(model[selectedIndex]);
195 MouseTouchEmulationCheckbox {
178 MouseTouchEmulationCheckbox {
196 id: mouseEmulation
179 id: mouseEmulation
197 checked: true
180 checked: true
@@ -287,6 +270,7 @@ Rectangle {
287 function cleanup() {
270 function cleanup() {
288 tryCompare(shell, "enabled", true); // make sure greeter didn't leave us in disabled state
271 tryCompare(shell, "enabled", true); // make sure greeter didn't leave us in disabled state
289 tearDown();
272 tearDown();
273+ GSettingsController.setUsageMode("Staged");
292 function loadShell(formFactor) {
276 function loadShell(formFactor) {
@@ -733,13 +717,14 @@ Rectangle {
734 function test_launchedAppHasActiveFocus_data() {
718 function test_launchedAppHasActiveFocus_data() {
736− {tag: "phone", formFactor: "phone"},
720+ {tag: "phone", formFactor: "phone", usageMode: "Staged"},
737− {tag: "tablet", formFactor: "tablet"},
721+ {tag: "tablet", formFactor: "tablet", usageMode: "Staged"},
738− {tag: "desktop", formFactor: "desktop"}
722+ {tag: "desktop", formFactor: "tablet", usageMode: "Windowed"}
742 function test_launchedAppHasActiveFocus(data) {
726 function test_launchedAppHasActiveFocus(data) {
727+ GSettingsController.setUsageMode(data.usageMode);
743 loadShell(data.formFactor);
728 loadShell(data.formFactor);
744 swipeAwayGreeter();
729 swipeAwayGreeter();
@@ -752,19 +737,8 @@ Rectangle {
752 tryCompare(webApp.session.surface, "activeFocus", true);
737 tryCompare(webApp.session.surface, "activeFocus", true);
755− function test_launchedAppHasActiveFocusWhenFormFactorSwitched_data() {
740+ function test_launchedAppKeepsActiveFocusOnUsageModeChange() {
757− {tag: "phone->tablet", from: "phone", to: "tablet"},
758− {tag: "phone->desktop", from: "phone", to: "desktop"},
759− {tag: "tablet->phone", from: "tablet", to: "phone"},
760− {tag: "tablet->desktop", from: "tablet", to: "desktop"},
761− {tag: "desktop->phone", from: "desktop", to: "phone"},
762− {tag: "desktop->tablet", from: "desktop", to: "tablet"},
766− function test_launchedAppHasActiveFocusWhenFormFactorSwitched(data) {
767− loadShell(data.from);
741+ loadShell("tablet");
768 swipeAwayGreeter();
742 swipeAwayGreeter();
770 var webApp = ApplicationManager.startApplication("webbrowser-app");
744 var webApp = ApplicationManager.startApplication("webbrowser-app");
@@ -775,7 +749,24 @@ Rectangle {
776 tryCompare(webApp.session.surface, "activeFocus", true);
750 tryCompare(webApp.session.surface, "activeFocus", true);
778− loadShell(data.to);
752+ GSettingsController.setUsageMode("Windowed");
754+ // check that the desktop stage and window have been loaded
756+ var desktopWindow = findChild(shell, "decoratedWindow_webbrowser-app");
757+ verify(desktopWindow);
760+ tryCompare(webApp.session.surface, "activeFocus", true);
762+ GSettingsController.setUsageMode("Staged");
764+ // check that the tablet stage and app surface delegate have been loaded
766+ var desktopWindow = findChild(shell, "tabletSpreadDelegate_webbrowser-app");
767+ verify(desktopWindow);
779 tryCompare(webApp.session.surface, "activeFocus", true);
770 tryCompare(webApp.session.surface, "activeFocus", true);
@@ -1262,31 +1253,33 @@ Rectangle {
1263 function test_stageLoader_data() {
1254 function test_stageLoader_data() {
1264 return [
1255 return [
1265− {tag: "phone", source: "Stages/PhoneStage.qml"},
1256+ {tag: "phone", source: "Stages/PhoneStage.qml", formFactor: "phone", usageMode: "Staged"},
1266− {tag: "tablet", source: "Stages/TabletStage.qml"},
1257+ {tag: "tablet", source: "Stages/TabletStage.qml", formFactor: "tablet", usageMode: "Staged"},
1267− {tag: "desktop", source: "Stages/DesktopStage.qml"}
1258+ {tag: "desktop", source: "Stages/DesktopStage.qml", formFactor: "tablet", usageMode: "Windowed"}
1271 function test_stageLoader(data) {
1262 function test_stageLoader(data) {
1263+ GSettingsController.setUsageMode(data.usageMode);
1272− loadShell(data.tag);
1264+ loadShell(data.formFactor);
1273 var stageLoader = findChild(shell, "applicationsDisplayLoader");
1265 var stageLoader = findChild(shell, "applicationsDisplayLoader");
1274 verify(String(stageLoader.source).indexOf(data.source) >= 0);
1266 verify(String(stageLoader.source).indexOf(data.source) >= 0);
1277 function test_launcherInverted_data() {
1269 function test_launcherInverted_data() {
1278 return [
1270 return [
1279− {tag: "phone", formFactor: "phone"},
1271+ {tag: "phone", formFactor: "phone", usageMode: "Staged", launcherInverted: true},
1280− {tag: "tablet", formFactor: "tablet"},
1272+ {tag: "tablet", formFactor: "tablet", usageMode: "Staged", launcherInverted: true},
1281− {tag: "desktop", formFactor: "desktop"}
1273+ {tag: "desktop", formFactor: "tablet", usageMode: "Windowed", launcherInverted: false}
1285 function test_launcherInverted(data) {
1277 function test_launcherInverted(data) {
1278+ GSettingsController.setUsageMode(data.usageMode);
1286 loadShell(data.formFactor);
1279 loadShell(data.formFactor);
1288 var launcher = findChild(shell, "launcher");
1281 var launcher = findChild(shell, "launcher");
1289− compare(launcher.inverted, data.formFactor !== "desktop");
1282+ compare(launcher.inverted, data.launcherInverted);