on xenial help sign in
Merged trunk
de5d9f7Michal Hruby
Dash/DashFilterGrid.qml+3−2
@@ -37,8 +37,6 @@ DashRenderer {
37 rows: filter ? filterGrid.collapsedRowCount : filterGrid.uncollapsedRowCount
37 rows: filter ? filterGrid.collapsedRowCount : filterGrid.uncollapsedRowCount
38 currentItem: filterGrid.currentItem
38 currentItem: filterGrid.currentItem
39 expandable: filterGrid.expandable
39 expandable: filterGrid.expandable
40− delegateCreationBegin: filterGrid.delegateCreationBegin
41− delegateCreationEnd: filterGrid.delegateCreationEnd
42 height: filterGrid.height
40 height: filterGrid.height
43 margins: filterGrid.margins
41 margins: filterGrid.margins
44 uncollapsedHeight: filterGrid.uncollapsedHeight
42 uncollapsedHeight: filterGrid.uncollapsedHeight
@@ -58,9 +56,12 @@ DashRenderer {
58 model: dashFilterGrid.model
56 model: dashFilterGrid.model
59 filter: dashFilterGrid.filter
57 filter: dashFilterGrid.filter
60 highlightIndex: dashFilterGrid.highlightIndex
58 highlightIndex: dashFilterGrid.highlightIndex
59+ delegateCreationBegin: dashFilterGrid.delegateCreationBegin
60+ delegateCreationEnd: dashFilterGrid.delegateCreationEnd
61
61
62 onFilterChanged: {
62 onFilterChanged: {
63 dashFilterGrid.filter = filter
63 dashFilterGrid.filter = filter
64+ filter = Qt.binding(function() { return dashFilterGrid.filter })
64 }
65 }
65 }
66 }
66}
67}
Dash/DashRenderer.qml+2−2
@@ -38,9 +38,9 @@ Item {
38
38
39 property int uncollapsedHeight: height
39 property int uncollapsedHeight: height
40
40
41− property real delegateCreationBegin
41+ property var delegateCreationBegin: undefined
42
42
43− property real delegateCreationEnd
43+ property var delegateCreationEnd: undefined
44
44
45 property real verticalSpacing: 0
45 property real verticalSpacing: 0
46
46
Launcher/Launcher.qml+3−3
@@ -40,7 +40,7 @@ Item {
40 signal dash()
40 signal dash()
41
41
42 // emitted when the dash icon in the launcher has been tapped
42 // emitted when the dash icon in the launcher has been tapped
43− signal dashItemSelected()
43+ signal showDashHome()
44
44
45 onStateChanged: {
45 onStateChanged: {
46 if (state == "") {
46 if (state == "") {
@@ -160,9 +160,9 @@ Item {
160 root.state = ""
160 root.state = ""
161 launcherApplicationSelected(appId)
161 launcherApplicationSelected(appId)
162 }
162 }
163− onDashItemSelected: {
163+ onShowDashHome: {
164 root.state = ""
164 root.state = ""
165− root.dashItemSelected(index)
165+ root.showDashHome();
166 }
166 }
167
167
168 onPreventHidingChanged: {
168 onPreventHidingChanged: {
Launcher/LauncherPanel.qml+2−2
@@ -35,7 +35,7 @@ Item {
35 property int highlightIndex: -1
35 property int highlightIndex: -1
36
36
37 signal applicationSelected(string appId)
37 signal applicationSelected(string appId)
38− signal dashItemSelected(int index)
38+ signal showDashHome()
39
39
40 BorderImage {
40 BorderImage {
41 id: background
41 id: background
@@ -56,7 +56,7 @@ Item {
56 id: dashItem
56 id: dashItem
57 width: parent.width
57 width: parent.width
58 height: units.gu(7)
58 height: units.gu(7)
59− onClicked: root.dashItemSelected(0)
59+ onClicked: root.showDashHome()
60 z: 1
60 z: 1
61 Image {
61 Image {
62 objectName: "dashItem"
62 objectName: "dashItem"
Panel/Panel.qml+22
@@ -31,6 +31,28 @@ Item {
31
31
32 signal searchClicked
32 signal searchClicked
33
33
34+ function hideIndicatorMenu(delay) {
35+ if (delay !== undefined) {
36+ hideTimer.interval = delay;
37+ hideTimer.start();
38+ } else {
39+ indicatorsMenu.hide();
40+ }
41+ }
42+
43+ Timer {
44+ id: hideTimer
45+ running: false
46+ onTriggered: {
47+ indicatorsMenu.hide();
48+ }
49+ }
50+
51+ Connections {
52+ target: indicatorsMenu
53+ onShown: hideTimer.stop()
54+ }
55+
34 PanelBackground {
56 PanelBackground {
35 id: panelBackground
57 id: panelBackground
36 anchors {
58 anchors {
Shell.qml+5−1
@@ -576,6 +576,10 @@ FocusScope {
576 stages.hide()
576 stages.hide()
577 }
577 }
578
578
579+ function hideIndicatorMenu(delay) {
580+ panel.hideIndicatorMenu(delay);
581+ }
582+
579 Item {
583 Item {
580 id: overlay
584 id: overlay
581
585
@@ -667,7 +671,7 @@ FocusScope {
667 dragAreaWidth: shell.edgeSize
671 dragAreaWidth: shell.edgeSize
668 available: (!greeter.shown || greeter.narrowMode) && edgeDemo.launcherEnabled
672 available: (!greeter.shown || greeter.narrowMode) && edgeDemo.launcherEnabled
669
673
670− onDashItemSelected: {
674+ onShowDashHome: {
671 if (edgeDemo.running)
675 if (edgeDemo.running)
672 return;
676 return;
673
677
debian/changelog+62
@@ -1,3 +1,65 @@
1+unity8 (7.84+14.04.20131206.1-0ubuntu1) trusty; urgency=low
2+
3+ [ Michal Hruby ]
4+ * Ensure DashContent's ListView's currentItem is set if the model is
5+ not empty.
6+
7+ [ Michał Sawicz ]
8+ * Don't generate build-deps .deb twice and allow overriding
9+ QML2_IMPORT_PATH in ./run.
10+
11+ [ Albert Astals ]
12+ * Remove unused Applications/ folder .
13+ * Implement an 'interface' for Dash Renderers.
14+ * Use deelistmodel's conversion method Instead of a copy of the code .
15+ * Remove icons we don't use .
16+ * Do not start apps or go to dash on demo If you are pulling the
17+ launcher out while in demo mode it doesn't make sense to let you
18+ start applications. Besides it locks you out because it starts the
19+ app and the demo is still not finished so you can't really use any
20+ of the edges to escape Bug #1233696. (LP: #1233696)
21+ * Add a test for the carousel showing the preview when being clicked .
22+ * Fix collapsing of categories not working and the
23+ expansion/collapsing animation +test.
24+
25+ [ Timo Jyrinki ]
26+ * Depend on either Qt 5.2 or libqt5v8-5-private-dev.
27+ * qtdeclarative5-private-dev 5.0.2-6ubuntu5 now depends directly on Qt
28+ V8 private headers. The remaining "qtdeclarative5-private-dev"
29+ dependency is enough now both when compiling against 5.0.2 or 5.2.
30+
31+ [ Pete Woods ]
32+ * Handle optional parameterized action properties. (LP: #1256258)
33+
34+ [ Andrea Cimitan ]
35+ * Implement an 'interface' for Dash Renderers.
36+
37+ [ Michael Zanetti ]
38+ * Added music preview.
39+ * rename some parameters from desktopFile to appId as scopes are now
40+ changed to give us the appId.
41+ * unhardcode launcher's search paths for .desktop files.
42+ * Enable teasing of the phone greeter even though we have a
43+ lockscreen.
44+ * check if variant is valid to avoid asserting in debug mode when the
45+ connection to AccountsService doesn't work for some reason .
46+
47+ [ Michael Terry ]
48+ * Add the DBus greeter API from the desktop greeter into the unity8
49+ greeter.
50+
51+ [ Daniel d'Andrada ]
52+ * Dash: disable close mode when you click outside app thumbnails To
53+ leave the termination mode you can now just mouse/touch press
54+ anywhere outside the running applications' thumbnails The other way,
55+ which still works, is long-pressing a thumbnail once more. (LP:
56+ #1193414)
57+
58+ [ Ubuntu daily release ]
59+ * Automatic snapshot from revision 579
60+
61+ -- Ubuntu daily release <ps-jenkins@lists.canonical.com> Fri, 06 Dec 2013 13:15:57 +0000
62+
1unity8 (7.84+14.04.20131128.2-0ubuntu1) trusty; urgency=low
63unity8 (7.84+14.04.20131128.2-0ubuntu1) trusty; urgency=low
2
64
3 [ Michal Hruby ]
65 [ Michal Hruby ]
plugins/Unity/Indicators/Messaging/qml/MessageMenuItemFactory.qml+15−22
@@ -37,28 +37,6 @@ Indicators.BaseMenuItem {
37
37
38 sourceComponent: loadMessage(actionsDescription);
38 sourceComponent: loadMessage(actionsDescription);
39
39
40− // Binding all properties for the item, to make sure that any change in the
41− // property will be propagated to the contents.item at any time
42− Binding {
43− target: contents.item
44− property: "menuSelected"
45− value: menuSelected
46− when: (contents.status == Loader.Ready)
47− }
48−
49− Binding {
50− target: contents.item
51− property: "menu"
52− value: menu
53− when: (contents.status == Loader.Ready)
54− }
55−
56− Connections {
57− target: contents.item ? contents.item : null
58− onSelectMenu: selectMenu()
59− onDeselectMenu: deselectMenu()
60− }
61−
62 Component {
40 Component {
63 id: simpleTextMessage
41 id: simpleTextMessage
64 SimpleTextMessage {
42 SimpleTextMessage {
@@ -72,10 +50,15 @@ Indicators.BaseMenuItem {
72
50
73 onActivateApp: {
51 onActivateApp: {
74 menuItem.model.activate(modelIndex, true);
52 menuItem.model.activate(modelIndex, true);
53+ shell.hideIndicatorMenu(UbuntuAnimation.FastDuration);
75 }
54 }
76 onDismiss: {
55 onDismiss: {
77 menuItem.model.activate(modelIndex, false);
56 menuItem.model.activate(modelIndex, false);
78 }
57 }
58+
59+ menuSelected: menuItem.menuSelected
60+ onSelectMenu: menuItem.selectMenu()
61+ onDeselectMenu: menuItem.deselectMenu()
79 }
62 }
80 }
63 }
81 Component {
64 Component {
@@ -100,6 +83,7 @@ Indicators.BaseMenuItem {
100
83
101 onActivateApp: {
84 onActivateApp: {
102 menuItem.model.activate(modelIndex, true);
85 menuItem.model.activate(modelIndex, true);
86+ shell.hideIndicatorMenu(UbuntuAnimation.FastDuration);
103 }
87 }
104 onDismiss: {
88 onDismiss: {
105 menuItem.model.activate(modelIndex, false);
89 menuItem.model.activate(modelIndex, false);
@@ -107,6 +91,10 @@ Indicators.BaseMenuItem {
107 onReply: {
91 onReply: {
108 replyAction.activate(value);
92 replyAction.activate(value);
109 }
93 }
94+
95+ menuSelected: menuItem.menuSelected
96+ onSelectMenu: menuItem.selectMenu()
97+ onDeselectMenu: menuItem.deselectMenu()
110 }
98 }
111 }
99 }
112 Component {
100 Component {
@@ -139,6 +127,7 @@ Indicators.BaseMenuItem {
139
127
140 onActivateApp: {
128 onActivateApp: {
141 menuItem.model.activate(modelIndex, true);
129 menuItem.model.activate(modelIndex, true);
130+ shell.hideIndicatorMenu(UbuntuAnimation.FastDuration);
142 }
131 }
143 onDismiss: {
132 onDismiss: {
144 menuItem.model.activate(modelIndex, false);
133 menuItem.model.activate(modelIndex, false);
@@ -149,6 +138,10 @@ Indicators.BaseMenuItem {
149 onReply: {
138 onReply: {
150 replyAction.activate(value);
139 replyAction.activate(value);
151 }
140 }
141+
142+ menuSelected: menuItem.menuSelected
143+ onSelectMenu: menuItem.selectMenu()
144+ onDeselectMenu: menuItem.deselectMenu()
152 }
145 }
153 }
146 }
154 }
147 }
plugins/Unity/Indicators/qml/IndicatorPage.qml+13−1
@@ -140,10 +140,11 @@ IndicatorBase {
140
140
141 onLoaded: {
141 onLoaded: {
142 if (item.hasOwnProperty("menuSelected")) {
142 if (item.hasOwnProperty("menuSelected")) {
143− item.menuSelected = Qt.binding(function() { return mainMenu.selectedIndex == index; });
143+ item.menuSelected = mainMenu.selectedIndex == index;
144 item.selectMenu.connect(function() { mainMenu.selectedIndex = index; });
144 item.selectMenu.connect(function() { mainMenu.selectedIndex = index; });
145 item.deselectMenu.connect(function() { mainMenu.selectedIndex = -1; });
145 item.deselectMenu.connect(function() { mainMenu.selectedIndex = -1; });
146 }
146 }
147+
147 if (item.hasOwnProperty("menu")) {
148 if (item.hasOwnProperty("menu")) {
148 item.menu = Qt.binding(function() { return model; });
149 item.menu = Qt.binding(function() { return model; });
149 }
150 }
@@ -154,6 +155,17 @@ IndicatorBase {
154 property: "objectName"
155 property: "objectName"
155 value: model.action
156 value: model.action
156 }
157 }
158+
159+ // TODO: Fixes lp#1243146
160+ // This is a workaround for a Qt bug. https://bugreports.qt-project.org/browse/QTBUG-34351
161+ Connections {
162+ target: mainMenu
163+ onSelectedIndexChanged: {
164+ if (loader.item && loader.item.hasOwnProperty("menuSelected")) {
165+ loader.item.menuSelected = mainMenu.selectedIndex == index;
166+ }
167+ }
168+ }
157 }
169 }
158 }
170 }
159 }
171 }
plugins/Unity/Indicators/qml/MenuItemFactory.qml+6
@@ -22,6 +22,7 @@ import Unity.Indicators 0.1 as Indicators
22import Unity.Indicators.Network 0.1 as ICNetwork
22import Unity.Indicators.Network 0.1 as ICNetwork
23import Unity.Indicators.Messaging 0.1 as ICMessaging
23import Unity.Indicators.Messaging 0.1 as ICMessaging
24import QMenuModel 0.1 as QMenuModel
24import QMenuModel 0.1 as QMenuModel
25+import Ubuntu.Components 0.1
25
26
26Item {
27Item {
27 id: menuFactory
28 id: menuFactory
@@ -95,6 +96,7 @@ Item {
95
96
96 onActivate: {
97 onActivate: {
97 model.activate(modelIndex);
98 model.activate(modelIndex);
99+ shell.hideIndicatorMenu(UbuntuAnimation.FastDuration);
98 }
100 }
99 }
101 }
100 }
102 }
@@ -132,6 +134,7 @@ Item {
132
134
133 onActivate: {
135 onActivate: {
134 model.activate(modelIndex);
136 model.activate(modelIndex);
137+ shell.hideIndicatorMenu(UbuntuAnimation.BriskDuration);
135 }
138 }
136 }
139 }
137 }
140 }
@@ -148,6 +151,7 @@ Item {
148
151
149 onActivate: {
152 onActivate: {
150 model.activate(modelIndex);
153 model.activate(modelIndex);
154+ shell.hideIndicatorMenu(UbuntuAnimation.BriskDuration);
151 }
155 }
152 }
156 }
153 }
157 }
@@ -190,6 +194,7 @@ Item {
190 }
194 }
191 onActivate: {
195 onActivate: {
192 model.activate(modelIndex);
196 model.activate(modelIndex);
197+ shell.hideIndicatorMenu(UbuntuAnimation.BriskDuration);
193 }
198 }
194 }
199 }
195 }
200 }
@@ -225,6 +230,7 @@ Item {
225 }
230 }
226 onActivateApp: {
231 onActivateApp: {
227 model.activate(modelIndex, true);
232 model.activate(modelIndex, true);
233+ shell.hideIndicatorMenu(UbuntuAnimation.FastDuration);
228 }
234 }
229 onDismiss: {
235 onDismiss: {
230 model.activate(modelIndex, false);
236 model.activate(modelIndex, false);
po/gl.po+6−6
@@ -8,15 +8,15 @@ msgstr ""
8"Project-Id-Version: unity\n"
8"Project-Id-Version: unity\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
9"Report-Msgid-Bugs-To: FULL NAME <EMAIL@ADDRESS>\n"
10"POT-Creation-Date: 2013-11-29 09:21+0100\n"
10"POT-Creation-Date: 2013-11-29 09:21+0100\n"
11−"PO-Revision-Date: 2013-10-03 18:49+0000\n"
11+"PO-Revision-Date: 2013-12-06 17:15+0000\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
12"Last-Translator: Marcos Lans <Unknown>\n"
13"Language-Team: Galician <gl@li.org>\n"
13"Language-Team: Galician <gl@li.org>\n"
14"MIME-Version: 1.0\n"
14"MIME-Version: 1.0\n"
15"Content-Type: text/plain; charset=UTF-8\n"
15"Content-Type: text/plain; charset=UTF-8\n"
16"Content-Transfer-Encoding: 8bit\n"
16"Content-Transfer-Encoding: 8bit\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
17"Plural-Forms: nplurals=2; plural=n != 1;\n"
18−"X-Launchpad-Export-Date: 2013-11-30 05:33+0000\n"
18+"X-Launchpad-Export-Date: 2013-12-07 06:35+0000\n"
19−"X-Generator: Launchpad (build 16856)\n"
19+"X-Generator: Launchpad (build 16869)\n"
20
20
21#: Components/EdgeDemoOverlay.qml:151
21#: Components/EdgeDemoOverlay.qml:151
22msgid "Skip intro"
22msgid "Skip intro"
@@ -139,7 +139,7 @@ msgstr "Falando…"
139
139
140#: Notifications/NotificationMenuItemFactory.qml:89
140#: Notifications/NotificationMenuItemFactory.qml:89
141msgid "Show password"
141msgid "Show password"
142−msgstr ""
142+msgstr "Mostrar contrasinal"
143
143
144#: Panel/SearchIndicator.qml:27
144#: Panel/SearchIndicator.qml:27
145msgid "Search"
145msgid "Search"
@@ -148,11 +148,11 @@ msgstr "Buscar"
148#: plugins/Unity/Launcher/launcheritem.cpp:43
148#: plugins/Unity/Launcher/launcheritem.cpp:43
149#: plugins/Unity/Launcher/launcheritem.cpp:73
149#: plugins/Unity/Launcher/launcheritem.cpp:73
150msgid "Lock to Launcher"
150msgid "Lock to Launcher"
151−msgstr ""
151+msgstr "Manter no Iniciador"
152
152
153#: plugins/Unity/Launcher/launcheritem.cpp:73
153#: plugins/Unity/Launcher/launcheritem.cpp:73
154msgid "Unlock from Launcher"
154msgid "Unlock from Launcher"
155−msgstr ""
155+msgstr "Non manter no Iniciador"
156
156
157#: Shell.qml:439
157#: Shell.qml:439
158#, qt-format
158#, qt-format
tests/qmltests/Dash/tst_GenericScopeView.qml+33−3
@@ -79,14 +79,14 @@ Item {
79 var categoryListView = findChild(genericScopeView, "categoryListView");
79 var categoryListView = findChild(genericScopeView, "categoryListView");
80 categoryListView.positionAtBeginning();
80 categoryListView.positionAtBeginning();
81
81
82− var tile = findChild(genericScopeView, "delegate0");
82+ var tile = findChild(findChild(genericScopeView, "0"), "delegate0");
83 mouseClick(tile, tile.width / 2, tile.height / 2);
83 mouseClick(tile, tile.width / 2, tile.height / 2);
84 var openEffect = findChild(genericScopeView, "openEffect");
84 var openEffect = findChild(genericScopeView, "openEffect");
85 tryCompare(openEffect, "gap", 1);
85 tryCompare(openEffect, "gap", 1);
86 }
86 }
87
87
88 function checkArrowPosition(index) {
88 function checkArrowPosition(index) {
89− var tile = findChild(genericScopeView, "delegate" + index);
89+ var tile = findChild(findChild(genericScopeView, "0"), "delegate" + index);
90 var tileCenter = tile.x + tile.width/2;
90 var tileCenter = tile.x + tile.width/2;
91 var pointerArrow = findChild(genericScopeView, "pointerArrow");
91 var pointerArrow = findChild(genericScopeView, "pointerArrow");
92 var pointerArrowCenter = pointerArrow.x + pointerArrow.width/2;
92 var pointerArrowCenter = pointerArrow.x + pointerArrow.width/2;
@@ -141,7 +141,7 @@ Item {
141 categoryListView.flick(0, -units.gu(80));
141 categoryListView.flick(0, -units.gu(80));
142 tryCompare(categoryListView.flicking, false);
142 tryCompare(categoryListView.flicking, false);
143
143
144− var tile = findChild(genericScopeView, "delegate0");
144+ var tile = findChild(findChild(genericScopeView, "0"), "delegate0");
145 mouseClick(tile, tile.width / 2, tile.height - 1);
145 mouseClick(tile, tile.width / 2, tile.height - 1);
146 var openEffect = findChild(genericScopeView, "openEffect");
146 var openEffect = findChild(genericScopeView, "openEffect");
147 tryCompare(openEffect, "gap", 1);
147 tryCompare(openEffect, "gap", 1);
@@ -276,6 +276,36 @@ Item {
276 closePreview();
276 closePreview();
277 tryCompare(previewListView, "open", false);
277 tryCompare(previewListView, "open", false);
278 }
278 }
279+
280+ function test_filter_expand_expand() {
281+ // wait for the item to be there
282+ tryCompareFunction(function() { return findChild(genericScopeView, "dashSectionHeader2") != undefined; }, true);
283+
284+ var categoryListView = findChild(genericScopeView, "categoryListView");
285+ categoryListView.contentY = categoryListView.height;
286+
287+ var header2 = findChild(genericScopeView, "dashSectionHeader2")
288+ var category2 = findChild(genericScopeView, "dashCategory2")
289+ var category2FilterGrid = category2.children[0].children[0].children[0];
290+ verify(UT.Util.isInstanceOf(category2FilterGrid, "FilterGrid"));
291+
292+ waitForRendering(header2);
293+ verify(category2.expandable);
294+ verify(category2.filtered);
295+
296+ mouseClick(header2, header2.width / 2, header2.height / 2);
297+ tryCompare(category2, "filtered", false);
298+ tryCompare(category2FilterGrid, "filter", false);
299+
300+ categoryListView.positionAtBeginning();
301+
302+ var header0 = findChild(genericScopeView, "dashSectionHeader0")
303+ var category0 = findChild(genericScopeView, "dashCategory0")
304+ mouseClick(header0, header0.width / 2, header0.height / 2);
305+ tryCompare(category0, "filtered", false);
306+ tryCompare(category2, "filtered", true);
307+ tryCompare(category2FilterGrid, "filter", true);
308+ }
279 }
309 }
280 }
310 }
281}
311}
tests/qmltests/Launcher/tst_Launcher.qml+6−6
@@ -41,9 +41,9 @@ Item {
41 lastSelectedApplication = appId
41 lastSelectedApplication = appId
42 }
42 }
43
43
44− property int dashItemSelected_count: 0
44+ property int showDashHome_count: 0
45− onDashItemSelected: {
45+ onShowDashHome: {
46− dashItemSelected_count++;
46+ showDashHome_count++;
47 }
47 }
48
48
49 property int maxPanelX: 0
49 property int maxPanelX: 0
@@ -138,9 +138,9 @@ Item {
138 }
138 }
139
139
140 /* If I click on the dash icon on the launcher
140 /* If I click on the dash icon on the launcher
141− Launcher::dashItemSelected signal should be emitted */
141+ Launcher::showDashHome signal should be emitted */
142 function test_clickingOnDashIconCausesSignalEmission() {
142 function test_clickingOnDashIconCausesSignalEmission() {
143− launcher.dashItemSelected_count = 0
143+ launcher.showDashHome_count = 0
144
144
145 revealer.dragLauncherIntoView()
145 revealer.dragLauncherIntoView()
146
146
@@ -149,7 +149,7 @@ Item {
149
149
150 mouseClick(dashIcon, dashIcon.width/2, dashIcon.height/2)
150 mouseClick(dashIcon, dashIcon.width/2, dashIcon.height/2)
151
151
152− tryCompare(launcher, "dashItemSelected_count", 1)
152+ tryCompare(launcher, "showDashHome_count", 1)
153
153
154 // Tapping on the dash icon also dismisses the launcher
154 // Tapping on the dash icon also dismisses the launcher
155 revealer.waitUntilLauncherDisappears()
155 revealer.waitUntilLauncherDisappears()
tests/qmltests/Panel/tst_Panel.qml+14
@@ -264,5 +264,19 @@ Item {
264
264
265 compare(indicatorRow.currentItem, indicatorItemFirst, "First indicator should still be the current item");
265 compare(indicatorRow.currentItem, indicatorItemFirst, "First indicator should still be the current item");
266 }
266 }
267+
268+ function test_hideIndicatorMenu_data() {
269+ return [ {tag: "no-delay", delay: undefined },
270+ {tag: "delayed", delay: 200 }
271+ ];
272+ }
273+
274+ function test_hideIndicatorMenu(data) {
275+ panel.indicators.show();
276+ compare(panel.indicators.shown, true);
277+
278+ panel.hideIndicatorMenu(data.delay);
279+ tryCompare(panel.indicators, "shown", false);
280+ }
267 }
281 }
268}
282}