@@ -76,6 +76,12 @@ Item {
7676 signalName: "activated"
7777 }
7878
79+ SignalSpy {
80+ id: aboutToShowCalledSpy
81+ target: menuBackend
82+ signalName: "aboutToShowCalled"
83+ }
84+
7985 UnityTestCase {
8086 id: testCase
8187 name: "MenuBar"
@@ -115,6 +121,43 @@ Item {
115121 compare(menuItem0.popupVisible, true, "Popup should be visible");
116122 }
117123
124+ function test_aboutToShow() {
125+ menuBackend.modelData = appMenuData.generateTestData(3,3,0,0, "menu");
126+ wait(50) // wait for row to build
127+ var priv = findInvisibleChild(menuBar, "d");
128+
129+ var menuItem0 = findChild(menuBar, "menuBar-item0");
130+ var menuItem1 = findChild(menuBar, "menuBar-item1");
131+
132+ aboutToShowCalledSpy.clear();
133+ menuItem0.show();
134+ compare(aboutToShowCalledSpy.count, 1);
135+
136+ menuItem0.show();
137+ // It's already shown so nothing happens
138+ compare(aboutToShowCalledSpy.count, 1);
139+
140+ menuItem0.hide();
141+ menuItem0.show();
142+ compare(aboutToShowCalledSpy.count, 2);
143+
144+ menuItem0.dismiss();
145+ menuItem0.show();
146+ compare(aboutToShowCalledSpy.count, 3);
147+
148+ menuItem1.show();
149+ compare(aboutToShowCalledSpy.count, 4);
150+
151+ menuItem0.show();
152+ compare(aboutToShowCalledSpy.count, 5);
153+
154+ compare(aboutToShowCalledSpy.signalArguments[0][0], 0);
155+ compare(aboutToShowCalledSpy.signalArguments[1][0], 0);
156+ compare(aboutToShowCalledSpy.signalArguments[2][0], 0);
157+ compare(aboutToShowCalledSpy.signalArguments[3][0], 1);
158+ compare(aboutToShowCalledSpy.signalArguments[4][0], 0);
159+ }
160+
118161 function test_keyboardNavigation_RightKeySelectsNextMenuItem(data) {
119162 menuBackend.modelData = appMenuData.generateTestData(3,3,0,0, "menu");
120163 var priv = findInvisibleChild(menuBar, "d");
@@ -183,6 +226,30 @@ Item {
183226 keyRelease(data.tag, Qt.AltModifier, 100);
184227 }
185228
229+ function test_disabledTopLevel() {
230+ var modelData = appMenuData.generateTestData(3,3,0,0,"menu");
231+ modelData[1].rowData.sensitive = false;
232+ menuBackend.modelData = modelData;
233+
234+ var priv = findInvisibleChild(menuBar, "d");
235+
236+ var menuItem0 = findChild(menuBar, "menuBar-item0"); verify(menuItem0);
237+ var menuItem2 = findChild(menuBar, "menuBar-item2"); verify(menuItem2);
238+
239+ menuItem0.show();
240+ compare(menuItem0.popupVisible, true, "Popup should be visible");
241+
242+ keyClick(Qt.Key_Right);
243+ compare(priv.currentItem, menuItem2);
244+ compare(menuItem2.popupVisible, true);
245+ compare(menuItem0.popupVisible, false);
246+
247+ keyClick(Qt.Key_Left);
248+ compare(priv.currentItem, menuItem0);
249+ compare(menuItem2.popupVisible, false);
250+ compare(menuItem0.popupVisible, true);
251+ }
252+
186253 function test_menuActivateClosesMenu() {
187254 menuBackend.modelData = appMenuData.generateTestData(3,3,0,0,"menu");
188255 var priv = findInvisibleChild(menuBar, "d");