on xenial help sign in
merge with another prereq
85148c9Michael Zanetti
qml/OrientedShell.qml+11−4
@@ -202,11 +202,18 @@ Rectangle {
202 return "tablet";
202 return "tablet";
203 }
203 }
204 } else { // automatic
204 } else { // automatic
205+ var longEdgeWidth = Math.max(root.width, root.height)
206+ if (longEdgeWidth > units.gu(120)) {
205− if (miceModel.count + touchPadModel.count > 0) {
207+ if (keyboardsModel.count + miceModel.count + touchPadModel.count > 0) {
206− return "desktop";
208+ return "desktop";
207− } else {
209+ }
208− return deviceConfiguration.category;
210+ } else if (longEdgeWidth > units.gu(90)){
211+ if (miceModel.count + touchPadModel.count > 0) {
212+ return "desktop";
213+ }
209 }
214 }
215+
216+ return deviceConfiguration.category;
210 }
217 }
211 }
218 }
212
219
tests/qmltests/tst_OrientedShell.qml+37−19
@@ -1001,37 +1001,55 @@ Rectangle {
1001 tryCompare(shell, "transformRotationAngle", 0);
1001 tryCompare(shell, "transformRotationAngle", 0);
1002 }
1002 }
1003
1003
1004+ function test_attachRemoveInputDevices_data() {
1005+ return [
1006+ { tag: "small screen, no devices", screenWidth: units.gu(50), mouse: false, kbd: false, expectedMode: "phone", oskExpected: true },
1007+ { tag: "medium screen, no devices", screenWidth: units.gu(100), mouse: false, kbd: false, expectedMode: "phone", oskExpected: true },
1008+ { tag: "big screen, no devices", screenWidth: units.gu(200), mouse: false, kbd: false, expectedMode: "phone", oskExpected: true },
1009+ { tag: "small screen, mouse", screenWidth: units.gu(50), mouse: true, kbd: false, expectedMode: "phone", oskExpected: true },
1010+ { tag: "medium screen, mouse", screenWidth: units.gu(100), mouse: true, kbd: false, expectedMode: "desktop", oskExpected: true },
1011+ { tag: "big screen, mouse", screenWidth: units.gu(200), mouse: true, kbd: false, expectedMode: "desktop", oskExpected: true },
1012+ { tag: "small screen, kbd", screenWidth: units.gu(50), mouse: false, kbd: true, expectedMode: "phone", oskExpected: false },
1013+ { tag: "medium screen, kbd", screenWidth: units.gu(100), mouse: false, kbd: true, expectedMode: "phone", oskExpected: false },
1014+ { tag: "big screen, kbd", screenWidth: units.gu(200), mouse: false, kbd: true, expectedMode: "desktop", oskExpected: false },
1015+ { tag: "small screen, mouse & kbd", screenWidth: units.gu(50), mouse: true, kbd: true, expectedMode: "phone", oskExpected: false },
1016+ { tag: "medium screen, mouse & kbd", screenWidth: units.gu(100), mouse: true, kbd: true, expectedMode: "desktop", oskExpected: false },
1017+ { tag: "big screen, mouse & kbd", screenWidth: units.gu(200), mouse: true, kbd: true, expectedMode: "desktop", oskExpected: false },
1018+ ]
1019+ }
1020+
1004− function test_attachRemoveInputDevices() {
1021+ function test_attachRemoveInputDevices(data) {
1005 usageModeSelector.selectAutomatic();
1022 usageModeSelector.selectAutomatic();
1006 tryCompare(mockUnity8Settings, "usageMode", "Automatic")
1023 tryCompare(mockUnity8Settings, "usageMode", "Automatic")
1007
1024
1008 loadShell("mako")
1025 loadShell("mako")
1009 var shell = findChild(orientedShell, "shell");
1026 var shell = findChild(orientedShell, "shell");
1010
1027
1011− tryCompare(shell, "usageScenario", "phone");
1028+ var oldWidth = orientedShellLoader.width;
1012− tryCompare(mockOskSettings, "stayHidden", false);
1029+ orientedShellLoader.width = data.screenWidth;
1013
1030
1014− MockInputDeviceBackend.addMockDevice("/kbd0", InputInfo.Keyboard);
1015 tryCompare(shell, "usageScenario", "phone");
1031 tryCompare(shell, "usageScenario", "phone");
1016− tryCompare(mockOskSettings, "stayHidden", true);
1017−
1018− MockInputDeviceBackend.addMockDevice("/mouse0", InputInfo.Mouse);
1019− tryCompare(shell, "usageScenario", "desktop");
1020− tryCompare(mockOskSettings, "stayHidden", true);
1021−
1022− MockInputDeviceBackend.removeDevice("/kbd0");
1023− tryCompare(shell, "usageScenario", "desktop");
1024 tryCompare(mockOskSettings, "stayHidden", false);
1032 tryCompare(mockOskSettings, "stayHidden", false);
1025
1033
1034+ if (data.kbd) {
1035+ MockInputDeviceBackend.addMockDevice("/kbd0", InputInfo.Keyboard);
1036+ }
1037+ if (data.mouse) {
1026− MockInputDeviceBackend.removeDevice("/mouse0");
1038+ MockInputDeviceBackend.addMockDevice("/mouse0", InputInfo.Mouse);
1027− tryCompare(shell, "usageScenario", "phone");
1039+ }
1028− tryCompare(mockOskSettings, "stayHidden", false);
1029
1040
1030− MockInputDeviceBackend.addMockDevice("/touchpad0", InputInfo.TouchPad);
1031− tryCompare(shell, "usageScenario", "desktop");
1041+ tryCompare(shell, "usageScenario", data.expectedMode);
1042+ tryCompare(mockOskSettings, "stayHidden", !data.oskExpected);
1032
1043
1044+ if (data.kbd) {
1033− MockInputDeviceBackend.removeDevice("/touchpad0");
1045+ MockInputDeviceBackend.removeDevice("/kbd0");
1034− tryCompare(shell, "usageScenario", "phone");
1046+ }
1047+ if (data.mouse) {
1048+ MockInputDeviceBackend.removeDevice("/mouse0");
1049+ }
1050+
1051+ // Restore width
1052+ orientedShellLoader.width = oldWidth;
1035 }
1053 }
1036
1054
1037 /*
1055 /*