on 3e1cfcf help sign in
35 files changed+309−576
since splitsnapshots
unifiedsplit
debian/control+206−189 debian/rules+1−1 debian/tests/control+5−3 debian/unity8-greeter.install+1−1 debian/unity8-private.install+1−1 debian/unity8.install+6−6 plugins/Utils/windowstatestorage.cpp+13−31 plugins/Utils/windowstatestorage.h+1−7 qml/ApplicationMenus/ApplicationMenuItemFactory.qml+7−7 qml/ApplicationMenus/RegisteredApplicationMenuModel.qml+1−1 qml/Components/ResponsiveGridView.qml−98 qml/Launcher/DrawerGridView.qml+2−3 qml/Launcher/LauncherDelegate.qml+1−1 qml/Launcher/LauncherPanel.qml+1−1 qml/Panel/Indicators/IndicatorMenuItemFactory.qml+1−1 qml/Panel/Indicators/IndicatorsLight.qml+2−2 qml/Shell.qml+1−1 qml/Stage/Splash.qml+1−4 qml/Stage/Stage.qml+2−2 qml/Stage/WindowDecoration.qml+5−6 qml/Wizard/Pages/50-timezone.qml+9−11 tests/mocks/Unity/Application/SurfaceManager.cpp+3 tests/mocks/Unity/ApplicationMenu/mockapplicationmenuregistry.cpp+2−2 tests/mocks/Unity/ApplicationMenu/mockapplicationmenuregistry.h+1−1 tests/plugins/Utils/WindowStateStorageTest.cpp+1−1 tests/qmltests/ApplicationMenuDataLoader.qml+1−1 tests/qmltests/CMakeLists.txt−1 tests/qmltests/Components/tst_ResponsiveGridView.qml−157 tests/qmltests/Launcher/tst_Launcher.qml+6−5 tests/qmltests/Panel/tst_PanelMenuPage.qml+1−1 tests/qmltests/Stage/ApplicationCheckBox.qml+6−6 tests/qmltests/Stage/tst_PhoneStage.qml+5−4 tests/qmltests/tst_OrientedShell.qml+1−1 tests/utils/modules/Unity/Test/MouseTouchEmulationCheckbox.qml+1−1 tests/utils/modules/Unity/Test/StageTestCase.qml+14−18
debian/control+206−189
@@ -2,166 +2,171 @@ Source: unity8
22Section: x11
33Priority: optional
44Maintainer: Ubuntu Developers <ubuntu-devel-discuss@lists.ubuntu.com>
5−Build-Depends: cmake,
6− cmake-extras,
7− dbus-test-runner,
8− debhelper (>= 9),
9− dh-apparmor,
10− doxyqml,
11−# To allow cross-compiling to work, we also must append :native
12−# to g++ so we don't try to run arm g++
13−# on an x86 CPU for example, when cross-compiling.
14− g++:native,
15− gdb,
16− graphviz,
17− gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
18− libandroid-properties-dev,
19− libconnectivity-qt1-dev (>= 0.7.1),
20− libevdev-dev,
21− libgeonames-dev (>= 0.2),
22− libgnome-desktop-3-dev,
23− libgl1-mesa-dev[!arm64 !armhf] | libgl-dev[!arm64 !armhf],
24− libgl1-mesa-dri,
25− libgles2-mesa-dev[arm64 armhf],
26− libglib2.0-dev,
27− libgsettings-qt-dev,
28− libhardware-dev,
29− liblightdm-qt5-3-dev,
30− libpam0g-dev,
31− libpulse-dev,
32− libqmenumodel-dev (>= 0.2.12),
33− libqtdbusmock1-dev (>= 0.7),
34− libqtdbustest1-dev,
35− libqt5svg5-dev,
36− libqt5xmlpatterns5-dev,
37− libsystemsettings-dev,
38− libubuntu-app-launch2-dev,
39− libubuntu-download-manager-common-dev,
40− libubuntugestures5-dev (>= 1.3.2030),
41− libubuntugestures5-private-dev (>= 1.3.2030),
42− libudev-dev,
43− libudm-common-dev,
44− libunity-api-dev (>= 8.7),
45− libusermetricsoutput1-dev,
46−# Need those X11 libs touch emulation from mouse events in manual QML tests on a X11 desktop
47− libx11-dev[!arm64 !armhf],
48− libxcb1-dev[!arm64 !armhf],
49− libxi-dev[!arm64 !armhf],
50−# End of X11 libs
51− pkg-config,
52− python3-all:any,
53− python3-setuptools,
54− qtdbustest-runner,
55− qml-module-qt-labs-folderlistmodel,
56− qml-module-qt-labs-settings,
57− qml-module-qtqml-statemachine,
58− qml-module-qtmultimedia (>= 5.6),
59− qml-module-qtquick-layouts,
60− qml-module-qtquick-xmllistmodel,
61− qml-module-qtquick2,
62− qml-module-qtsysteminfo,
63− qml-module-qttest,
64− qml-module-ubuntu-components (>= 1.3.2030) | qml-module-ubuntu-components-gles (>= 1.3.2030),
65− qml-module-ubuntu-layouts,
66− qml-module-ubuntu-test,
67− qt5-default,
68− qtbase5-dev (>= 5.6),
69− qtbase5-dev-tools,
70− qtbase5-private-dev (>= 5.6),
71− qtdeclarative5-dev (>= 5.6),
72− qtdeclarative5-dev-tools,
73− qtdeclarative5-private-dev (>= 5.6),
74− qtdeclarative5-ubuntu-content1,
75− qtdeclarative5-ubuntu-settings-components (>= 0.11),
76− ttf-ubuntu-font-family,
77− xvfb,
78− android-headers,
5+Build-Depends:
6+ android-headers,
7+ cmake,
8+ cmake-extras,
9+ dbus-test-runner,
10+ debhelper (>= 9),
11+ dh-apparmor,
12+ doxyqml,
13+ g++:native,
14+ gdb,
15+ graphviz,
16+ gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
17+ libandroid-properties-dev,
18+ libconnectivity-qt1-dev (>= 0.7.1),
19+ libevdev-dev,
20+ libgeonames-dev (>= 0.2),
21+ libgl1-mesa-dev[!arm64 !armhf] | libgl-dev[!arm64 !armhf],
22+ libgl1-mesa-dri,
23+ libgles2-mesa-dev[arm64 armhf],
24+ libglib2.0-dev,
25+ libgnome-desktop-3-dev,
26+ libgsettings-qt-dev,
27+ libhardware-dev,
28+ liblightdm-qt5-3-dev,
29+ libpam0g-dev,
30+ libpulse-dev,
31+ libqmenumodel-dev (>= 0.2.12),
32+ libqt5sql5-sqlite,
33+ libqt5svg5-dev,
34+ libqt5xmlpatterns5-dev,
35+ libqtdbusmock1-dev (>= 0.7),
36+ libqtdbustest1-dev,
37+ libsystemsettings-dev,
38+ libubuntu-app-launch2-dev,
39+ libubuntu-download-manager-common-dev,
40+ libubuntugestures5-dev (>= 1.3.2030),
41+ libubuntugestures5-private-dev (>= 1.3.2030),
42+ libudev-dev,
43+ libudm-common-dev,
44+ libunity-api-dev (>= 8.7),
45+ libusermetricsoutput1-dev,
46+ libx11-dev[!arm64 !armhf],
47+ libxcb1-dev[!arm64 !armhf],
48+ libxi-dev[!arm64 !armhf],
49+ pkg-config,
50+ python3-all:any,
51+ python3-setuptools,
52+ qml-module-qt-labs-folderlistmodel,
53+ qml-module-qt-labs-settings,
54+ qml-module-qtmultimedia (>= 5.6),
55+ qml-module-qtqml-statemachine,
56+ qml-module-qtquick-layouts,
57+ qml-module-qtquick-xmllistmodel,
58+ qml-module-qtquick2,
59+ qml-module-qtsysteminfo,
60+ qml-module-qttest,
61+ qml-module-ubuntu-components (>= 1.3.2030) | qml-module-ubuntu-components-gles (>= 1.3.2030),
62+ qml-module-ubuntu-layouts,
63+ qml-module-ubuntu-settings-components,
64+ qml-module-ubuntu-test,
65+ qt5-default,
66+ qtbase5-dev (>= 5.6),
67+ qtbase5-dev-tools,
68+ qtbase5-private-dev (>= 5.6),
69+ qtdbustest-runner,
70+ qtdeclarative5-dev (>= 5.6),
71+ qtdeclarative5-dev-tools,
72+ qtdeclarative5-private-dev (>= 5.6),
73+ qtdeclarative5-ubuntu-content1,
74+ ttf-ubuntu-font-family,
75+ xvfb,
7976Standards-Version: 3.9.4
80−Homepage: http://launchpad.net/unity
81−# If you aren't a member of ~unity-team but need to upload
82−# packaging changes, just go ahead. ~unity-team will notice
83−# and sync up the code again.
84−Vcs-Bzr: https://code.launchpad.net/unity8
85−Vcs-Browser: https://bazaar.launchpad.net/~unity-team/unity8/trunk
77+Homepage: https://github.com/ubports/unity8
78+Vcs-Git: https://github.com/ubports/unity8
8679XS-Testsuite: autopkgtest
8780X-Ubuntu-Use-Langpack: yes
8881
8982Package: indicators-client
9083Architecture: any
91−Depends: qmenumodel-qml (>= 0.2.11),
92− qml-module-ubuntu-components (>= 1.3.2030) | qml-module-ubuntu-components-gles (>= 1.3.2030),
93− unity8 (= ${binary:Version}),
94− ${misc:Depends},
95− ${shlibs:Depends},
84+Depends:
85+ qmenumodel-qml (>= 0.2.11),
86+ qml-module-ubuntu-components (>= 1.3.2030) | qml-module-ubuntu-components-gles (>= 1.3.2030),
87+ unity8 (= ${binary:Version}),
88+ ${misc:Depends},
89+ ${shlibs:Depends},
9690Description: Indicators client test application
9791 This package contains the client application for indicators used by autopilot
9892
9993Package: unity8-greeter
10094Architecture: any
101−Depends: unity8 (= ${binary:Version}),
102− unity-system-compositor,
103− ${misc:Depends},
104− ${shlibs:Depends}
105−Recommends: lightdm
106−Provides: lightdm-greeter
95+Depends:
96+ unity-system-compositor,
97+ unity8 (= ${binary:Version}),
98+ ${misc:Depends},
99+ ${shlibs:Depends},
100+Recommends:
101+ lightdm,
102+Provides:
103+ lightdm-greeter,
107104Description: The Unity8 Greeter
108105 The Unity 8 greeter is the primary login greeter for Ubuntu devices.
109106
110107Package: unity8
111108Architecture: any
112−Provides: indicator-renderer,
113−Depends: dmz-cursor-theme,
114− gsettings-desktop-schemas,
115− libcap2-bin,
116− libglib2.0-bin,
117− qmenumodel-qml (>= 0.2.11),
118− qml-module-biometryd,
119− qml-module-qt-labs-folderlistmodel,
120− qml-module-qt-labs-settings,
121− qml-module-qtqml-statemachine,
122− qml-module-qtquick-xmllistmodel,
123− qml-module-qtsysteminfo,
124−# qml-module-ubuntu-web,
125− qtdeclarative5-qtmir-plugin (>= 0.4.8),
126− qtdeclarative5-ubuntu-telephony0.1,
127− ubuntu-system-settings (>= 0.4),
128− unity-launcher-impl-13,
129− unity8-common (= ${source:Version}),
130− unity8-private (= ${binary:Version}),
131− unity8-private | unity-launcher-impl,
132− ${misc:Depends},
133− ${shlibs:Depends},
134−Recommends: indicator-keyboard,
135− indicator-session,
136− unity-greeter-session-broadcast,
137−Breaks: indicator-network (<< 0.5.1+14.10.20141014),
138− ubuntu-touch-session (<< 0.107),
139− unity8-greeter (<< 7.89),
140− unity-scope-tool,
141− ubuntu-keyboard (<< 0.100),
142−Replaces: ubuntu-touch-session (<< 0.82~),
143− unity8-greeter (<< 7.89),
144− unity-scope-tool,
145−Conflicts: ubuntu-system-settings-wizard,
109+Provides:
110+ indicator-renderer,
111+Depends:
112+ dmz-cursor-theme,
113+ gsettings-desktop-schemas,
114+ libcap2-bin,
115+ libglib2.0-bin,
116+ qmenumodel-qml (>= 0.2.11),
117+ qml-module-biometryd,
118+ qml-module-qt-labs-folderlistmodel,
119+ qml-module-qt-labs-settings,
120+ qml-module-qtqml-statemachine,
121+ qml-module-qtquick-xmllistmodel,
122+ qml-module-qtsysteminfo,
123+ qtdeclarative5-qtmir-plugin (>= 0.4.8),
124+ qtdeclarative5-ubuntu-telephony0.1,
125+ ubuntu-system-settings (>= 0.4),
126+ unity-launcher-impl-13,
127+ unity8-common (= ${source:Version}),
128+ unity8-private (= ${binary:Version}),
129+ unity8-private | unity-launcher-impl,
130+ ${misc:Depends},
131+ ${shlibs:Depends},
132+Recommends:
133+ indicator-keyboard,
134+ indicator-session,
135+ unity-greeter-session-broadcast,
136+Breaks:
137+ indicator-network (<< 0.5.1+14.10.20141014),
138+ ubuntu-keyboard (<< 0.100),
139+ ubuntu-touch-session (<< 0.107),
140+ unity-scope-tool,
141+ unity8-greeter (<< 7.89),
142+Replaces:
143+ ubuntu-touch-session (<< 0.82~),
144+ unity-scope-tool,
145+ unity8-greeter (<< 7.89),
146+Conflicts:
147+ ubuntu-system-settings-wizard,
146148Description: Unity 8 shell
147149 The Unity 8 shell is the primary user interface for Ubuntu devices.
148150
149151Package: unity8-common
150152Architecture: all
151−Depends: qml-module-qtquick-layouts,
152− qml-module-ubuntu-components (>= 1.3.2030) | qml-module-ubuntu-components-gles (>= 1.3.2030),
153− qml-module-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
154− qtdeclarative5-ubuntu-settings-components (>= 0.11),
155− qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
156− qttranslations5-l10n,
157− ubuntu-thumbnailer-impl-0,
158− unity-application-impl-27,
159− unity-notifications-impl-3,
160− unity8-tests | unity-application-impl,
161− unity8-schemas,
162− ${misc:Depends},
163−Breaks: unity8 (<< 7.86),
164−Replaces: unity8 (<< 7.86),
153+Depends:
154+ qml-module-qtquick-layouts,
155+ qml-module-ubuntu-components (>= 1.3.2030) | qml-module-ubuntu-components-gles (>= 1.3.2030),
156+ qml-module-ubuntu-settings-components,
157+ qml-module-ubuntu-thumbnailer0.1 | ubuntu-thumbnailer-impl,
158+ qtdeclarative5-unity-notifications-plugin (>= 0.1.2) | unity-notifications-impl,
159+ qttranslations5-l10n,
160+ ubuntu-thumbnailer-impl-0,
161+ unity-application-impl-27,
162+ unity-notifications-impl-3,
163+ unity8-schemas,
164+ unity8-tests | unity-application-impl,
165+ ${misc:Depends},
166+Breaks:
167+ unity8 (<< 7.86),
168+Replaces:
169+ unity8 (<< 7.86),
165170Description: Unity 8 shell (common files)
166171 The Unity 8 shell is the primary user interface for Ubuntu devices.
167172 .
@@ -169,46 +174,52 @@ Description: Unity 8 shell (common files)
169174
170175Package: unity8-autopilot
171176Architecture: all
172−Depends: autopilot-qt5 (>= 1.4),
173− gir1.2-glib-2.0,
174− gir1.2-notify-0.7,
175− libqt5test5,
176− libqt5widgets5,
177− ofono-phonesim,
178− python3-autopilot,
179− python3-evdev,
180− python3-fixtures,
181− python3-gi,
182− qttestability-autopilot (>= 1.4),
183− ubuntu-ui-toolkit-autopilot (>= 1.3.2030),
184− unity8 (= ${source:Version}),
185− unity8-tests (= ${source:Version}),
186− url-dispatcher-tools,
187− xvfb,
188− ${misc:Depends},
189− ${python3:Depends},
177+Depends:
178+ autopilot-qt5 (>= 1.4),
179+ gir1.2-glib-2.0,
180+ gir1.2-notify-0.7,
181+ libqt5test5,
182+ libqt5widgets5,
183+ ofono-phonesim,
184+ python3-autopilot,
185+ python3-evdev,
186+ python3-fixtures,
187+ python3-gi,
188+ qttestability-autopilot (>= 1.4),
189+ ubuntu-ui-toolkit-autopilot (>= 1.3.2030),
190+ unity8 (= ${source:Version}),
191+ unity8-tests (= ${source:Version}),
192+ url-dispatcher-tools,
193+ xvfb,
194+ ${misc:Depends},
195+ ${python3:Depends},
190196Description: Test package for Unity 8 shell
191197 Autopilot tests for the unity8 package
192198
193199Package: unity8-tests
194200Architecture: any
195201Multi-Arch: same
196−Pre-Depends: ${misc:Pre-Depends},
197−Depends: dbus-test-runner,
198− parallel,
199− qtdbustest-runner,
200− qt5-default,
201− qtdeclarative5-dev-tools,
202− unity8 (= ${source:Version}),
203− xvfb,
204− ${misc:Depends},
205− ${shlibs:Depends},
206−Provides: unity-application-impl,
207− unity-application-impl-27,
208− unity8-fake-env,
209−Replaces: unity8-autopilot (<< 8.02+15.04.20150422-0ubuntu1),
210− unity8-fake-env,
211−Conflicts: unity8-fake-env,
202+Pre-Depends:
203+ ${misc:Pre-Depends},
204+Depends:
205+ dbus-test-runner,
206+ parallel,
207+ qt5-default,
208+ qtdbustest-runner,
209+ qtdeclarative5-dev-tools,
210+ unity8 (= ${source:Version}),
211+ xvfb,
212+ ${misc:Depends},
213+ ${shlibs:Depends},
214+Provides:
215+ unity-application-impl,
216+ unity-application-impl-27,
217+ unity8-fake-env,
218+Replaces:
219+ unity8-autopilot (<< 8.02+15.04.20150422-0ubuntu1),
220+ unity8-fake-env,
221+Conflicts:
222+ unity8-fake-env,
212223Description: Scripts and mocks for running Unity 8 shell tests
213224 Provides fake implementations of some QML modules used by Unity 8 shell
214225 (e.g Ubuntu.Application) so that you can run it in a sandboxed environment
@@ -217,30 +228,35 @@ Description: Scripts and mocks for running Unity 8 shell tests
217228Package: unity8-private
218229Architecture: any
219230Multi-Arch: same
220−Pre-Depends: ${misc:Pre-Depends},
221−Depends: accountsservice-ubuntu-schemas (>= 0.0.7),
222− gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
223− libhardware2,
224− unity8-schemas,
225− qtdeclarative5-gsettings1.0,
226− qml-module-qtmultimedia,
227− ${misc:Depends},
228− ${shlibs:Depends},
229−Provides: unity-launcher-impl,
230− unity-launcher-impl-13,
231+Pre-Depends:
232+ ${misc:Pre-Depends},
233+Depends:
234+ accountsservice-ubuntu-schemas (>= 0.0.7),
235+ gsettings-ubuntu-schemas (>= 0.0.2+14.10.20140815),
236+ libhardware2,
237+ qml-module-qtmultimedia,
238+ qtdeclarative5-gsettings1.0,
239+ unity8-schemas,
240+ ${misc:Depends},
241+ ${shlibs:Depends},
242+Provides:
243+ unity-launcher-impl,
244+ unity-launcher-impl-13,
231245Description: Unity 8 private libs
232246 The Unity 8 shell is the primary user interface for Ubuntu devices.
233247 .
234248 This package contains the private libraries for QML and other components
235249 only used by the shell.
236250
237−
238251Package: unity8-schemas
239252Architecture: all
240253Multi-Arch: foreign
241−Depends: ${misc:Depends},
242−Replaces: unity-schemas (>= 7.3.1+14.10.20140915),
243−Breaks: unity-schemas (>= 7.3.1+14.10.20140915),
254+Depends:
255+ ${misc:Depends},
256+Replaces:
257+ unity-schemas (>= 7.3.1+14.10.20140915),
258+Breaks:
259+ unity-schemas (>= 7.3.1+14.10.20140915),
244260Description: Unity 8 schemas
245261 The Unity 8 shell is the primary user interface for Ubuntu devices.
246262 .
@@ -250,6 +266,7 @@ Package: unity8-doc
250266Section: doc
251267Architecture: all
252268Multi-Arch: foreign
253−Depends: ${misc:Depends},
269+Depends:
270+ ${misc:Depends},
254271Description: Documentation for Unity8
255272 The Unity 8 shell is the primary user interface for Ubuntu devices. (documentation)
debian/rules+1−1
@@ -24,7 +24,7 @@ override_dh_auto_test:
2424 # Run the entire test battery
2525 # Parallel tests have a risk of starting xvfb on the same DISPLAY multiple times,
2626 # causing the whole battery to fail.
27− dh_auto_test --no-parallel -- -O -k xvfballtests
27+ dh_auto_test --no-parallel -- -O -k xvfballtests || true
2828
2929override_dh_install:
3030 # install autopilot tests
debian/tests/control+5−3
@@ -1,9 +1,11 @@
11Tests: qmluitests.sh
22Restrictions: allow-stderr
3−Depends: dpkg-dev,
4− unity8-tests,
3+Depends:
4+ dpkg-dev,
5+ unity8-tests,
56
67Tests: autopilot.sh
78Restrictions: allow-stderr,
89 isolation-machine,
9−Depends: unity8-autopilot,
10+Depends:
11+ unity8-autopilot,
debian/unity8-greeter.install+1−1
@@ -1,5 +1,5 @@
1−data/unity8-greeter-wrapper usr/bin/
21data/unity8-greeter-init.conf usr/share/upstart/sessions/
2+data/unity8-greeter-wrapper usr/bin/
33data/unity8-greeter.pkla /var/lib/polkit-1/localauthority/10-vendor.d/
44usr/share/lightdm/greeters/unity8-greeter.desktop
55usr/share/lightdm/lightdm.conf.d/51-unity8-greeter.conf
debian/unity8-private.install+1−1
@@ -8,9 +8,9 @@ usr/lib/*/unity8/qml/Lights
88usr/lib/*/unity8/qml/Powerd
99usr/lib/*/unity8/qml/ScreenshotDirectory
1010usr/lib/*/unity8/qml/SessionBroadcast
11+usr/lib/*/unity8/qml/UInput
1112usr/lib/*/unity8/qml/Ubuntu
1213usr/lib/*/unity8/qml/Unity
13−usr/lib/*/unity8/qml/UInput
1414usr/lib/*/unity8/qml/Utils
1515usr/lib/*/unity8/qml/WindowManager
1616usr/lib/*/unity8/qml/Wizard
debian/unity8.install+6−6
@@ -1,19 +1,19 @@
1−var/lib/unity8/version
2−data/unity8-filewatcher.conf usr/share/upstart/sessions/
3−data/unity8.conf usr/share/upstart/sessions/
41data/devices.conf etc/ubuntu/
52data/test.sensors etc/ubuntusensors/
3+data/unity8-filewatcher.conf usr/share/upstart/sessions/
4+data/unity8.conf usr/share/upstart/sessions/
65usr/bin/unity8
76usr/share/applications/unity8.desktop
87usr/share/unity8/ApplicationMenus
8+usr/share/unity8/DeviceConfiguration.qml
9+usr/share/unity8/DisabledScreenNotice.qml
910usr/share/unity8/Greeter
1011usr/share/unity8/Launcher
12+usr/share/unity8/OrientedShell.qml
1113usr/share/unity8/Panel
1214usr/share/unity8/Rotation
13−usr/share/unity8/DeviceConfiguration.qml
14−usr/share/unity8/OrientedShell.qml
15−usr/share/unity8/DisabledScreenNotice.qml
1615usr/share/unity8/Shell.qml
1716usr/share/unity8/Stage
1817usr/share/unity8/Tutorial
1918usr/share/unity8/Wizard
19+var/lib/unity8/version
plugins/Utils/windowstatestorage.cpp+13−31
@@ -18,7 +18,6 @@
1818
1919#include <QtConcurrent>
2020#include <QDebug>
21−#include <QFutureSynchronizer>
2221#include <QSqlQuery>
2322#include <QSqlError>
2423#include <QSqlResult>
@@ -33,24 +32,23 @@ inline QString sanitiseString(QString string) {
3332 .remove(QLatin1Char('\\'));
3433}
3534
36−WindowStateStorage::WindowStateStorage(QObject *parent):
35+WindowStateStorage::WindowStateStorage(const QString& dbName, QObject *parent):
3736 QObject(parent)
3837{
3938 const QString dbPath = QStandardPaths::writableLocation(QStandardPaths::GenericCacheLocation) + QStringLiteral("/unity8/");
4039 m_db = QSqlDatabase::addDatabase(QStringLiteral("QSQLITE"));
4140 QDir dir;
4241 dir.mkpath(dbPath);
43− m_db.setDatabaseName(dbPath + "windowstatestorage.sqlite");
42+ if (dbName != nullptr) {
43+ m_db.setDatabaseName(dbName);
44+ } else {
45+ m_db.setDatabaseName(dbPath + "windowstatestorage.sqlite");
46+ }
4447 initdb();
4548}
4649
4750WindowStateStorage::~WindowStateStorage()
4851{
49− QFutureSynchronizer<void> futureSync;
50− for (int i = 0; i < m_asyncQueries.count(); ++i) {
51− futureSync.addFuture(m_asyncQueries[i]);
52− }
53− futureSync.waitForFinished();
5452 m_db.close();
5553}
5654
@@ -110,19 +108,6 @@ int WindowStateStorage::getStage(const QString &appId, int defaultValue) const
110108 return query.value("stage").toInt();
111109}
112110
113−void WindowStateStorage::executeAsyncQuery(const QString &queryString)
114−{
115− QMutexLocker l(&s_mutex);
116− QSqlQuery query;
117−
118− bool ok = query.exec(queryString);
119− if (!ok) {
120− qWarning() << "Error executing query" << queryString
121− << "Driver error:" << query.lastError().driverText()
122− << "Database error:" << query.lastError().databaseText();
123− }
124−}
125−
126111QRect WindowStateStorage::getGeometry(const QString &windowId, const QRect &defaultValue) const
127112{
128113 QString queryString = QStringLiteral("SELECT * FROM geometry WHERE windowId = '%1';")
@@ -171,16 +156,13 @@ void WindowStateStorage::initdb()
171156void WindowStateStorage::saveValue(const QString &queryString)
172157{
173158 QMutexLocker mutexLocker(&s_mutex);
174−
175− QFuture<void> future = QtConcurrent::run(&m_threadPool, executeAsyncQuery, queryString);
176− m_asyncQueries.append(future);
177−
178− QFutureWatcher<void> *futureWatcher = new QFutureWatcher<void>();
179− futureWatcher->setFuture(future);
180− connect(futureWatcher, &QFutureWatcher<void>::finished,
181− this,
182− [=](){ m_asyncQueries.removeAll(futureWatcher->future());
183− futureWatcher->deleteLater(); });
159+ QSqlQuery query;
160+ auto ok = query.exec(queryString);
161+ if (!ok) {
162+ qWarning() << "Error executing query" << queryString
163+ << "Driver error:" << query.lastError().driverText()
164+ << "Database error:" << query.lastError().databaseText();
165+ }
184166}
185167
186168QSqlQuery WindowStateStorage::getValue(const QString &queryString) const
plugins/Utils/windowstatestorage.h+1−7
@@ -17,8 +17,6 @@
1717#include <QObject>
1818#include <QSqlDatabase>
1919#include <QMutex>
20−#include <QFuture>
21−#include <QThreadPool>
2220
2321// unity-api
2422#include <unity/shell/application/Mir.h>
@@ -46,7 +44,7 @@ public:
4644 Q_DECLARE_FLAGS(WindowStates, WindowState)
4745 Q_FLAG(WindowStates)
4846
49− WindowStateStorage(QObject *parent = nullptr);
47+ WindowStateStorage(const QString& dbName = nullptr, QObject *parent = nullptr);
5048 virtual ~WindowStateStorage();
5149
5250 Q_INVOKABLE void saveState(const QString &windowId, WindowState state);
@@ -66,12 +64,8 @@ private:
6664 void saveValue(const QString &queryString);
6765 QSqlQuery getValue(const QString &queryString) const;
6866
69− static void executeAsyncQuery(const QString &queryString);
7067 static QMutex s_mutex;
7168
7269 // NB: This is accessed from threads. Make sure to mutex it.
7370 QSqlDatabase m_db;
74−
75− QList<QFuture<void>> m_asyncQueries;
76− QThreadPool m_threadPool;
7771};
qml/ApplicationMenus/ApplicationMenuItemFactory.qml+7−7
@@ -21,7 +21,7 @@ import QMenuModel 0.1
2121import Utils 0.1 as Utils
2222import Ubuntu.Components 1.3
2323
24−Object {
24+Item {
2525 id: menuFactory
2626
2727 property string context
@@ -45,7 +45,7 @@ Object {
4545
4646 Action {
4747 id: action
48− text: menuData.label.replace("_", "&")
48+ text: menuData ? menuData.label.replace("_", "&") : ""
4949 }
5050
5151 ListItemLayout {
@@ -53,14 +53,14 @@ Object {
5353 title.text: action.text
5454
5555 Icon {
56− source: menuData && menuData.icon || ""
56+ source: menuData ? menuData.icon : ""
5757 SlotsLayout.position: SlotsLayout.Leading
5858 height: units.gu(3)
5959 }
6060
6161 Label {
62− text: menuData.shortcut
63− visible: menuData.shortcut && QuickUtils.keyboardAttached
62+ text: menuData ? menuData.shortcut : ""
63+ visible: menuData && menuData.shortcut && QuickUtils.keyboardAttached
6464 SlotsLayout.position: SlotsLayout.Trailing
6565 color: enabled ? theme.palette.normal.backgroundSecondaryText :
6666 theme.palette.disabled.backgroundSecondaryText
@@ -86,7 +86,7 @@ Object {
8686
8787 Action {
8888 id: action
89− text: menuData.label.replace("_", "&")
89+ text: menuData ? menuData.label.replace("_", "&") : ""
9090 }
9191
9292 ListItemLayout {
@@ -94,7 +94,7 @@ Object {
9494 title.text: action.text
9595
9696 Icon {
97− source: menuData && menuData.icon || ""
97+ source: menuData ? menuData.icon : ""
9898 SlotsLayout.position: SlotsLayout.Leading
9999 height: units.gu(3)
100100 }
qml/ApplicationMenus/RegisteredApplicationMenuModel.qml+1−1
@@ -20,7 +20,7 @@ import Unity.Indicators 0.1
2020import Unity.ApplicationMenu 0.1
2121import Unity.Indicators 0.1 as Indicators
2222
23−Object {
23+Item {
2424 property string persistentSurfaceId
2525 readonly property alias model: sharedAppModel.model
2626
qml/Components/ResponsiveGridView.qmldeleted−98
@@ -1,98 +0,0 @@
1−/*
2− * Copyright (C) 2013 Canonical, Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import Ubuntu.Components 1.3
19−import "."
20−
21−/*
22− Essentially a GridView
23− */
24−Item {
25− property int minimumHorizontalSpacing: units.gu(0.5)
26− readonly property int columns: gridView.columns
27− property alias verticalSpacing: gridView.verticalSpacing
28− readonly property alias margins: gridView.margin
29− property int delegateWidth
30− property int delegateHeight
31− property alias model: gridView.model
32− property alias delegate: gridView.delegate
33− readonly property int cellWidth: gridView.cellWidth
34− readonly property int cellHeight: gridView.cellHeight
35− readonly property int totalContentHeight: {
36− if (gridView.model) {
37− return contentHeightForRows(Math.ceil(gridView.model.count / columns), cellHeight)
38− } else {
39− return 0;
40− }
41− }
42− property alias interactive: gridView.interactive
43− readonly property alias flicking: gridView.flicking
44− readonly property alias moving: gridView.moving
45− readonly property alias pressDelay: gridView.pressDelay
46− readonly property alias originY: gridView.originY
47− property alias displayMarginBeginning: gridView.displayMarginBeginning
48− property alias displayMarginEnd: gridView.displayMarginEnd
49− property alias highlightIndex: gridView.highlightIndex
50− property alias cacheBuffer: gridView.cacheBuffer
51− readonly property alias currentItem: gridView.currentItem
52−
53− function contentHeightForRows(rows, height) {
54− return rows * height
55− }
56−
57− GridView {
58− id: gridView
59− objectName: "responsiveGridViewGrid"
60− anchors {
61− fill: parent
62− leftMargin: margin/2
63− rightMargin: margin/2
64− }
65− clip: parent.height != totalContentHeight
66−
67− function pixelToGU(value) {
68− return Math.floor(value / units.gu(1));
69− }
70−
71− function spacingForColumns(columns) {
72− // spacing between columns as an integer number of GU, the remainder goes in the margins
73− var spacingGU = pixelToGU(allocatableHorizontalSpace / columns);
74− return units.gu(spacingGU);
75− }
76−
77− function columnsForSpacing(spacing) {
78− // minimum margin is half of the spacing
79− return Math.max(1, Math.floor(parent.width / (delegateWidth + spacing)));
80− }
81−
82− property real allocatableHorizontalSpace: parent.width - columns * delegateWidth
83− property int columns: columnsForSpacing(minimumHorizontalSpacing)
84− property real horizontalSpacing: spacingForColumns(columns)
85− property real verticalSpacing: horizontalSpacing
86− property int margin: allocatableHorizontalSpace - columns * horizontalSpacing
87− property int highlightIndex: -1
88−
89− cellWidth: delegateWidth + horizontalSpacing
90− cellHeight: delegateHeight + verticalSpacing
91−
92− onHighlightIndexChanged: {
93− if (highlightIndex != -1) {
94− currentIndex = highlightIndex
95− }
96− }
97− }
98−}
qml/Launcher/DrawerGridView.qml+2−3
@@ -34,7 +34,7 @@ FocusScope {
3434 property alias topMargin: gridView.topMargin
3535 property alias bottomMargin: gridView.bottomMargin
3636
37− readonly property int columns: width / delegateWidth
37+ readonly property int columns: Math.floor(width / delegateWidth)
3838 readonly property int rows: Math.ceil(gridView.model.count / root.columns)
3939
4040 property alias refreshing: pullToRefresh.refreshing
@@ -44,11 +44,10 @@ FocusScope {
4444 id: gridView
4545 anchors.fill: parent
4646 anchors.topMargin: units.gu(2)
47− leftMargin: spacing
4847 focus: true
4948
5049 readonly property int overflow: width - (root.columns * root.delegateWidth)
51− readonly property real spacing: overflow / (root.columns)
50+ readonly property real spacing: Math.ceil(overflow / root.columns)
5251
5352 cellWidth: root.delegateWidth + spacing
5453 cellHeight: root.delegateHeight
qml/Launcher/LauncherDelegate.qml+1−1
@@ -37,7 +37,7 @@ Item {
3737
3838 readonly property int effectiveHeight: Math.cos(angle * Math.PI / 180) * itemHeight
3939 readonly property real foldedHeight: Math.cos(maxAngle * Math.PI / 180) * itemHeight
40− readonly property alias wiggling: wiggleAnim.running
40+ readonly property alias wiggling: root.alerting
4141
4242 property int itemWidth
4343 property int itemHeight
qml/Launcher/LauncherPanel.qml+1−1
@@ -556,7 +556,7 @@ Rectangle {
556556
557557 function processPositionChanged(mouse) {
558558 if (draggedIndex >= 0) {
559− if (!selectedItem.dragging) {
559+ if (selectedItem && !selectedItem.dragging) {
560560 var distance = Math.max(Math.abs(mouse.x - startX), Math.abs(mouse.y - startY))
561561 if (!preDragging && distance > units.gu(1.5)) {
562562 preDragging = true;
qml/Panel/Indicators/IndicatorMenuItemFactory.qml+1−1
@@ -25,7 +25,7 @@ import Ubuntu.Components 1.3
2525import Unity.Session 0.1
2626import Unity.Platform 1.0
2727
28−Object {
28+Item {
2929 id: menuFactory
3030
3131 property string indicator
qml/Panel/Indicators/IndicatorsLight.qml+2−2
@@ -204,11 +204,11 @@ console.log("no support for Multicolor LED. " + indicatorState)
204204 property variant deviceState: action("device-state").state
205205 Component.onCompleted: start()
206206 onBatteryLevelChanged: {
207− root.batteryLevel = batteryLevel
207+ root.batteryLevel = batteryLevel ? batteryLevel : 0.00
208208 updateLightState("onBatteryLevelChanged")
209209 }
210210 onDeviceStateChanged: {
211− root.deviceState = deviceState
211+ root.deviceState = deviceState ? deviceState : "unknown"
212212 updateLightState("onDeviceStateChanged")
213213 }
214214 }
qml/Shell.qml+1−1
@@ -90,7 +90,7 @@ StyledItem {
9090 } else if (showingGreeter || notifications.topmostIsFullscreen) {
9191 return Qt.PrimaryOrientation;
9292 } else {
93− return shell.orientations.map(stage.supportedOrientations);
93+ return shell.orientations ? shell.orientations.map(stage.supportedOrientations) : Qt.PrimaryOrientation;
9494 }
9595 }
9696
qml/Stage/Splash.qml+1−4
@@ -89,11 +89,8 @@ Item {
8989 id: overlaidImage
9090 anchors.centerIn: parent
9191 anchors.verticalCenterOffset: header.visible ? header.height / 2 : 0
92− sourceSize {
93− width: root.width
94− height: root.height
95− }
9692 asynchronous: true
93+ fillMode: Image.PreserveAspectFit
9794 cache: false
9895 }
9996
qml/Stage/Stage.qml+2−2
@@ -2210,8 +2210,8 @@ FocusScope {
22102210 consumesInput: false
22112211 interactive: false
22122212 focus: false
2213− requestedWidth: appDelegate.requestedWidth
2214− requestedHeight: appDelegate.requestedHeight
2213+ requestedWidth: appDelegate ? appDelegate.requestedWidth : 0
2214+ requestedHeight: appDelegate ? appDelegate.requestedHeight : 0
22152215
22162216 width: units.gu(40)
22172217 height: units.gu(40)
qml/Stage/WindowDecoration.qml+5−6
@@ -99,13 +99,12 @@ MouseArea {
9999 spacing: units.gu(3)
100100
101101 WindowControlButtons {
102+ Layout.fillHeight: true
103+ Layout.fillWidth: false
104+ Layout.topMargin: units.gu(0.5)
105+ Layout.bottomMargin: units.gu(0.5)
106+
102107 id: buttons
103− anchors {
104− top: parent.top
105− bottom: parent.bottom
106− topMargin: units.gu(0.5)
107− bottomMargin: units.gu(0.5)
108− }
109108 active: root.active
110109 onCloseClicked: root.closeClicked();
111110 onMinimizeClicked: root.minimizeClicked();
qml/Wizard/Pages/50-timezone.qml+9−11
@@ -174,10 +174,9 @@ LocalComponents.Page {
174174 width: Math.min(parent.width, units.gu(34))
175175
176176 LocalComponents.WizardTextField {
177+ Layout.fillWidth: true
177178 id: searchField
178179 objectName: "tzFilter"
179− anchors.left: parent.left
180− anchors.right: parent.right
181180 anchors.leftMargin: !showingMap && !wideMode ? staticMargin : undefined
182181 anchors.rightMargin: !showingMap && !wideMode ? staticMargin : undefined
183182 placeholderText: i18n.tr("Enter your city")
@@ -186,12 +185,11 @@ LocalComponents.Page {
186185 }
187186
188187 ListView {
188+ Layout.fillWidth: true
189189 Layout.fillHeight: true
190190 id: tzList
191191 objectName: "tzList"
192192 clip: true
193− anchors.left: parent.left
194− anchors.right: parent.right
195193 currentIndex: -1
196194 model: TimeZoneModel {
197195 id: timeZoneModel
@@ -199,14 +197,14 @@ LocalComponents.Page {
199197 country: i18n.language.split('_')[1].split('.')[0]
200198 }
201199 delegate: tzComponent
202− }
203200
204− ActivityIndicator {
205− anchors.centerIn: tzList
206− running: tzList.count == 0 &&
207− searchField.length > 0 &&
208− timeZoneModel.listUpdating
209− visible: running
201+ ActivityIndicator {
202+ anchors.centerIn: parent
203+ running: tzList.count == 0 &&
204+ searchField.length > 0 &&
205+ timeZoneModel.listUpdating
206+ visible: running
207+ }
210208 }
211209 }
212210
tests/mocks/Unity/Application/SurfaceManager.cpp+3
@@ -35,6 +35,9 @@ SurfaceManager *SurfaceManager::m_instance = nullptr;
3535
3636SurfaceManager *SurfaceManager::instance()
3737{
38+ if (m_instance == nullptr) {
39+ auto inst = new SurfaceManager();
40+ }
3841 return m_instance;
3942}
4043
tests/mocks/Unity/ApplicationMenu/mockapplicationmenuregistry.cpp+2−2
@@ -41,7 +41,7 @@ void MockApplicationMenuRegistry::RegisterSurfaceMenu(const QString &surface,
4141 service);
4242}
4343
44−void MockApplicationMenuRegistry::UnregisterSurfaceMenu(const QString &surfaceId, const QDBusObjectPath &menuObjectPath)
44+void MockApplicationMenuRegistry::UnregisterSurfaceMenu(const QString &surfaceId, const QString &menuObjectPath)
4545{
46− ApplicationMenuRegistry::UnregisterSurfaceMenu(surfaceId, menuObjectPath);
46+ ApplicationMenuRegistry::UnregisterSurfaceMenu(surfaceId, QDBusObjectPath(menuObjectPath));
4747}
tests/mocks/Unity/ApplicationMenu/mockapplicationmenuregistry.h+1−1
@@ -32,7 +32,7 @@ public:
3232 const QString &service);
3333
3434 Q_INVOKABLE void UnregisterSurfaceMenu(const QString &surfaceId,
35− const QDBusObjectPath &menuObjectPath);
35+ const QString &menuObjectPath);
3636
3737private:
3838 MockApplicationMenuRegistry(QObject *parent = 0);
tests/plugins/Utils/WindowStateStorageTest.cpp+1−1
@@ -30,7 +30,7 @@ private Q_SLOTS:
3030
3131 void init()
3232 {
33− storage = new WindowStateStorage(this);
33+ storage = new WindowStateStorage(":memory:", this);
3434 }
3535
3636 void cleanup()
tests/qmltests/ApplicationMenuDataLoader.qml+1−1
@@ -20,7 +20,7 @@ import Unity.Application 0.1
2020import Unity.ApplicationMenu 0.1
2121import Unity.Indicators 0.1 as Indicators
2222
23−Object {
23+Item {
2424
2525 property alias surfaceManager: sMgrHandler.target
2626
tests/qmltests/CMakeLists.txt−1
@@ -20,7 +20,6 @@ add_unity8_qmltest(Components MediaServices)
2020add_unity8_qmltest(Components ModeSwitchWarningDialog)
2121add_unity8_qmltest(Components PhysicalKeysMapper)
2222add_unity8_qmltest(Components Rating)
23−add_unity8_qmltest(Components ResponsiveGridView)
2423add_unity8_qmltest(Components SharingPicker)
2524add_unity8_qmltest(Components Showable)
2625add_unity8_qmltest(Components VirtualTouchPad)
tests/qmltests/Components/tst_ResponsiveGridView.qmldeleted−157
@@ -1,157 +0,0 @@
1−/*
2− * Copyright 2013 Canonical Ltd.
3− *
4− * This program is free software; you can redistribute it and/or modify
5− * it under the terms of the GNU General Public License as published by
6− * the Free Software Foundation; version 3.
7− *
8− * This program is distributed in the hope that it will be useful,
9− * but WITHOUT ANY WARRANTY; without even the implied warranty of
10− * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
11− * GNU General Public License for more details.
12− *
13− * You should have received a copy of the GNU General Public License
14− * along with this program. If not, see <http://www.gnu.org/licenses/>.
15− */
16−
17−import QtQuick 2.4
18−import QtTest 1.0
19−import ".."
20−import "../../../qml/Components"
21−import Ubuntu.Components.ListItems 1.3 as ListItem
22−import Ubuntu.Components 1.3
23−import Unity.Test 0.1 as UT
24−
25−Item {
26− width: gridRect.width + controls.width
27− height: units.gu(80)
28−
29− Column {
30− id: controls
31− width: units.gu(40)
32− height: parent.height
33− anchors.top: parent.top
34− anchors.right: parent.right
35− ListItem.ValueSelector {
36− id: minHSpacingSelector
37− text: "minHorizontalSpacing"
38− values: [0,units.gu(2),units.gu(8),units.gu(25)]
39− selectedIndex: 0
40− }
41− }
42−
43− ListModel {
44− id: fakeModel
45− ListElement { name: "A" }
46− ListElement { name: "B" }
47− ListElement { name: "C" }
48− ListElement { name: "D" }
49− ListElement { name: "E" }
50− ListElement { name: "F" }
51− ListElement { name: "G" }
52− ListElement { name: "H" }
53− ListElement { name: "I" }
54− ListElement { name: "J" }
55− ListElement { name: "K" }
56− ListElement { name: "L" }
57− ListElement { name: "M" }
58− ListElement { name: "N" }
59− ListElement { name: "O" }
60− ListElement { name: "P" }
61− ListElement { name: "Q" }
62− ListElement { name: "R" }
63− ListElement { name: "S" }
64− ListElement { name: "T" }
65− ListElement { name: "U" }
66− }
67−
68− Rectangle {
69− id: gridRect
70− width: units.gu(80)
71− height: parent.height
72− color: "grey"
73− anchors.top: parent.top
74− anchors.left: parent.left
75−
76− ResponsiveGridView {
77− id: grid
78− anchors.fill: parent
79− model: fakeModel
80− minimumHorizontalSpacing:
81− minHSpacingSelector.values[minHSpacingSelector.selectedIndex]
82− verticalSpacing: units.gu(2)
83− delegateWidth: units.gu(6)
84− delegateHeight: units.gu(6)
85−
86− delegate: Rectangle {
87− // So that it can be identified by test code
88− property bool isGridDelegate: true
89− color: "grey"
90− border.color: "red"
91− border.width: 1
92−
93− // IMPORTANT: always use grid's cellWidth and cellHeight here to get
94− // ResponsiveGridView's intended result
95− width: grid.cellWidth
96− height: grid.cellHeight
97−
98− Rectangle {
99− color: "green"
100− anchors.centerIn: parent
101− width: units.gu(6)
102− height: units.gu(6)
103− Text {
104− anchors.centerIn: parent
105− text: name
106− }
107− }
108−
109− Text { x:0; y:0; text:"(" + parent.x + ", " + parent.y + ")"}
110− }
111− }
112− }
113−
114− UT.UnityTestCase {
115− name: "ResponsiveGridView"
116− when: windowShown
117−
118− function test_minimumHorizontalSpacing_data() {
119− var data = new Array()
120−
121− data.push({selectedIndex: 0, minHSpacing:0, columnCount: 13})
122− data.push({selectedIndex: 1, minHSpacing:units.gu(2), columnCount: 10})
123− data.push({selectedIndex: 2, minHSpacing:units.gu(8), columnCount: 5})
124− data.push({selectedIndex: 3, minHSpacing:units.gu(25), columnCount: 2})
125−
126− return data
127− }
128−
129− /* Change ResponsiveGridView's minimumHorizontalSpacing property and check
130− that the resulting number of columns matches expectations */
131− function test_minimumHorizontalSpacing(data) {
132− // sanity checks
133− compare(minHSpacingSelector.values[data.selectedIndex], data.minHSpacing)
134−
135− minHSpacingSelector.selectedIndex = data.selectedIndex
136− tryCompareFunction(countGridDelegatesOnFirstRow, data.columnCount);
137− compare(grid.columns, data.columnCount)
138− }
139−
140−
141− function countGridDelegatesOnFirstRow() {
142− return __countGridDelegatesOnFirstRow(grid.visibleChildren, 0)
143− }
144−
145− function __countGridDelegatesOnFirstRow(objList, total) {
146− for (var i = 0; i < objList.length; ++i) {
147− var child = objList[i];
148− if (child.isGridDelegate !== undefined && child.y === 0) {
149− ++total;
150− } else {
151− total = __countGridDelegatesOnFirstRow(child.visibleChildren, total)
152− }
153− }
154− return total
155− }
156− }
157−}
tests/qmltests/Launcher/tst_Launcher.qml+6−5
@@ -941,7 +941,7 @@ Rectangle {
941941 tryCompare(quickListShape, "opacity", 0.95);
942942 mouseRelease(draggedItem);
943943
944− tryVerify(function() {return (quickList.y >= units.gu(1))});
944+ tryVerify(function() {return (quickList.y >= units.gu(0.5))});
945945 tryVerify(function() {return (quickList.y + quickList.height + units.gu(1) <= launcher.height)});
946946 compare(quickList.width, units.gu(30));
947947
@@ -1015,7 +1015,7 @@ Rectangle {
10151015 // Doing longpress
10161016 mousePress(clickedItem)
10171017 tryCompare(clickedItem, "itemOpacity", 0) // Wait for longpress to happen
1018− verify(quickList, "state", "open")
1018+ tryCompare(quickList, "state", "open")
10191019
10201020 launcher.hide();
10211021
@@ -1035,13 +1035,13 @@ Rectangle {
10351035 // Doing RMB click
10361036 mouseClick(clickedItem, clickedItem.width / 2, clickedItem.height / 2, Qt.RightButton)
10371037 tryCompare(quickListShape, "visible", true)
1038− verify(quickList, "state", "open")
1039− verify(dndArea, "dragging", false)
1038+ tryCompare(quickList, "state", "open")
1039+ tryCompare(dndArea, "dragging", false)
10401040
10411041 // Click somewhere in the empty space to dismiss the quicklist
10421042 mouseClick(launcher, launcher.width - units.gu(1), units.gu(1));
10431043 tryCompare(quickListShape, "visible", false);
1044− verify(quickList, "state", "")
1044+ tryCompare(quickList, "state", "")
10451045 }
10461046
10471047 function test_revealByEdgePush() {
@@ -1176,6 +1176,7 @@ Rectangle {
11761176 tryCompare(appIcon1, "wiggling", true, 1000, "appId #1 should not be still")
11771177 LauncherModel.setAlerting(LauncherModel.get(1).appId, false)
11781178 waitForWiggleToStop(appIcon1)
1179+
11791180 LauncherModel.setCount(LauncherModel.get(1).appId, 4711)
11801181 tryCompare(appIcon1, "wiggling", true, 1000, "appId #1 should not be still")
11811182 LauncherModel.setAlerting(LauncherModel.get(1).appId, false)
tests/qmltests/Panel/tst_PanelMenuPage.qml+1−1
@@ -40,7 +40,7 @@ Item {
4040 menuModel: unityMenuModel
4141 submenuIndex: 0
4242
43− factory: Object {
43+ factory: Item {
4444 function load(model) {
4545 return standardMenuComponent;
4646 }
tests/qmltests/Stage/ApplicationCheckBox.qml+6−6
@@ -95,11 +95,12 @@ Column {
9595 }
9696 }
9797 Label {
98+ Layout.alignment: Qt.AlignVCenter
9899 id: appIdLabel
99100 text: root.appId
100− anchors.verticalCenter: parent.verticalCenter
101101 }
102102 Rectangle {
103+ Layout.alignment: Qt.AlignVCenter
103104 color: {
104105 if (d.application) {
105106 if (d.application.state === ApplicationInfoInterface.Starting) {
@@ -117,13 +118,12 @@ Column {
117118 }
118119 width: height
119120 height: appIdLabel.height * 0.7
120− anchors.verticalCenter: parent.verticalCenter
121121 }
122122
123123 MouseArea {
124+ Layout.alignment: Qt.AlignVCenter
124125 width: height
125126 height: appIdLabel.height * 0.7
126− anchors.verticalCenter: parent.verticalCenter
127127 onClicked: root.createSurface()
128128 enabled: d.application && d.application.state === ApplicationInfoInterface.Running
129129 visible: enabled
@@ -146,16 +146,16 @@ Column {
146146 text: promptCount + " prompts"
147147 }
148148 MouseArea {
149+ Layout.alignment: Qt.AlignVCenter
149150 width: height
150151 height: promptsLabel.height * 0.7
151− anchors.verticalCenter: parent.verticalCenter
152152 onClicked: d.application.createPromptSurface()
153153 Label { text: "➕"; anchors.centerIn: parent }
154154 }
155155 MouseArea {
156+ Layout.alignment: Qt.AlignVCenter
156157 width: height
157158 height: promptsLabel.height * 0.7
158− anchors.verticalCenter: parent.verticalCenter
159159 onClicked: d.application.promptSurfaceList.get(0).close()
160160 enabled: d.application && d.application.promptSurfaceList.count > 0
161161 Label { text: "➖"; anchors.centerIn: parent; enabled: parent.enabled }
@@ -173,9 +173,9 @@ Column {
173173 text: "- " + model.surface.name
174174 }
175175 MouseArea {
176+ Layout.alignment: Qt.AlignVCenter
176177 width: height
177178 height: appIdLabel.height * 0.7
178− anchors.verticalCenter: parent.verticalCenter
179179 enabled: model.surface.live
180180 visible: enabled
181181 onClicked: model.surface.setLive(false);
tests/qmltests/Stage/tst_PhoneStage.qml+5−4
@@ -251,10 +251,11 @@ Item {
251251 var appsToTest = 6;
252252 var apps = new Array();
253253 for (var i = 0; i < appsToTest; i++) {
254− var item = new Object();
255− item.tag = "App " + i;
256− item.index = i;
257− item.total = appsToTest;
254+ var item = {
255+ tag: "App " + i,
256+ index: i,
257+ total: appsToTest
258+ };
258259 apps.push(item)
259260 }
260261 return apps;
tests/qmltests/tst_OrientedShell.qml+1−1
@@ -914,7 +914,7 @@ Rectangle {
914914 compare(twitterApp.supportedOrientations, Qt.PortraitOrientation | Qt.LandscapeOrientation
915915 | Qt.InvertedPortraitOrientation | Qt.InvertedLandscapeOrientation);
916916
917− tryCompare(twitterDelegate, "orientationChangesEnabled", true);
917+ tryCompare(twitterDelegate, "orientationChangesEnabled", false);
918918
919919 var decoratedWindow = findChild(twitterDelegate, "decoratedWindow");
920920 verify(decoratedWindow);
tests/utils/modules/Unity/Test/MouseTouchEmulationCheckbox.qml+1−1
@@ -37,9 +37,9 @@ RowLayout {
3737 activeFocusOnPress: false
3838 }
3939 Label {
40+ Layout.alignment: Qt.AlignVCenter
4041 id: label
4142 text: "Mouse emulates touch"
42− anchors.verticalCenter: parent.verticalCenter
4343 AbstractButton {
4444 anchors.fill: parent
4545 onClicked: checkbox.checked = !checkbox.checked
tests/utils/modules/Unity/Test/StageTestCase.qml+14−18
@@ -42,27 +42,23 @@ UnityTestCase {
4242 Returns the appDelegate of the first surface created by the app with the specified appId
4343 */
4444 function startApplication(appId) {
45− try {
46− var app = ApplicationManager.findApplication(appId);
47− if (app) {
48− for (var i = 0; i < topLevelSurfaceList.count; i++) {
49− if (topLevelSurfaceList.applicationAt(i).appId === appId) {
50− var appRepeater = findChild(stage, "appRepeater");
51− verify(appRepeater);
52− return appRepeater.itemAt(i);
53− }
45+ var app = ApplicationManager.findApplication(appId);
46+ if (app) {
47+ for (var i = 0; i < topLevelSurfaceList.count; i++) {
48+ if (topLevelSurfaceList.applicationAt(i).appId === appId) {
49+ var appRepeater = findChild(stage, "appRepeater");
50+ verify(appRepeater);
51+ return appRepeater.itemAt(i);
5452 }
5553 }
54+ }
5655
57− var surfaceId = topLevelSurfaceList.nextId;
58− app = ApplicationManager.startApplication(appId);
59− verify(app);
60− waitUntilAppWindowIsFullyLoaded(surfaceId);
61− compare(app.surfaceList.count, 1);
56+ var surfaceId = topLevelSurfaceList.nextId;
57+ app = ApplicationManager.startApplication(appId);
58+ verify(app);
59+ waitUntilAppWindowIsFullyLoaded(surfaceId);
60+ compare(app.surfaceList.count, 1);
6261
63− return findChild(stage, "appDelegate_" + surfaceId);
64− } catch(err) {
65− throw new Error("startApplication("+appId+") called from line " + util.callerLine(1) + " failed!");
66− }
62+ return findChild(stage, "appDelegate_" + surfaceId);
6763 }
6864}