]> git.lizzy.rs Git - irrlicht.git/blob - tests/guiDisabledMenu.cpp
Merging r5975 through r6036 from trunk to ogl-es branch.
[irrlicht.git] / tests / guiDisabledMenu.cpp
1 // Copyright (C) 2008-2012 Colin MacDonald\r
2 // No rights reserved: this software is in the public domain.\r
3 \r
4 #include "testUtils.h"\r
5 \r
6 using namespace irr;\r
7 using namespace core;\r
8 using namespace gui;\r
9 \r
10 // Tests that disabled GUI menu items don't cause their submenu to appear when hovered over.\r
11 /**\r
12         http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?p=178436#178436\r
13  */\r
14 \r
15 bool guiDisabledMenu(void)\r
16 {\r
17         IrrlichtDevice *device = createDevice( video::EDT_BURNINGSVIDEO,\r
18                                                                                         dimension2d<u32>(160, 40), 32);\r
19         assert_log(device);\r
20         if (!device)\r
21                 return false;\r
22 \r
23         video::IVideoDriver* driver = device->getVideoDriver();\r
24         gui::IGUIEnvironment* env = device->getGUIEnvironment();\r
25 \r
26         gui::IGUIContextMenu* menu = env->addMenu();\r
27         menu->addItem(L"Menu", -1, true, true);\r
28         gui::IGUIContextMenu* subMenu = menu->getSubMenu(0);\r
29         subMenu->addItem(L"Submenu 1", -1, false, true);\r
30         gui::IGUIContextMenu* subSubMenu = subMenu->getSubMenu(0);\r
31         subSubMenu->addItem(L"Final item");\r
32 \r
33         SEvent event;\r
34         event.EventType = EET_MOUSE_INPUT_EVENT;\r
35         event.MouseInput.Event = EMIE_LMOUSE_PRESSED_DOWN;\r
36         event.MouseInput.X = menu->getAbsolutePosition().UpperLeftCorner.X + 1;\r
37         event.MouseInput.Y = menu->getAbsolutePosition().UpperLeftCorner.Y + 1;\r
38         (void)menu->OnEvent(event);\r
39 \r
40         // Hovering over the disabled submenu shouldn't cause the "Final item" to appear.\r
41         event.MouseInput.Event = EMIE_MOUSE_MOVED;\r
42         event.MouseInput.X = subMenu->getAbsolutePosition().UpperLeftCorner.X + 40;\r
43         event.MouseInput.Y = subMenu->getAbsolutePosition().UpperLeftCorner.Y + 10;\r
44         (void)menu->OnEvent(event);\r
45 \r
46         device->run();\r
47         driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH, video::SColor(150,50,50,50));\r
48         env->drawAll();\r
49         driver->endScene();\r
50 \r
51         bool result = takeScreenshotAndCompareAgainstReference(driver, "-guiDisabledMenu.png", 98.77f);\r
52         device->closeDevice();\r
53         device->run();\r
54         device->drop();\r
55 \r
56         return result;\r
57 }\r
58 \r