mirror of
https://github.com/minetest/irrlicht.git
synced 2024-11-16 23:40:25 +01:00
59 lines
1.9 KiB
C++
59 lines
1.9 KiB
C++
|
// Copyright (C) 2008-2012 Colin MacDonald
|
||
|
// No rights reserved: this software is in the public domain.
|
||
|
|
||
|
#include "testUtils.h"
|
||
|
|
||
|
using namespace irr;
|
||
|
using namespace core;
|
||
|
using namespace gui;
|
||
|
|
||
|
// Tests that disabled GUI menu items don't cause their submenu to appear when hovered over.
|
||
|
/**
|
||
|
http://irrlicht.sourceforge.net/phpBB2/viewtopic.php?p=178436#178436
|
||
|
*/
|
||
|
|
||
|
bool guiDisabledMenu(void)
|
||
|
{
|
||
|
IrrlichtDevice *device = createDevice( video::EDT_BURNINGSVIDEO,
|
||
|
dimension2d<u32>(160, 40), 32);
|
||
|
assert_log(device);
|
||
|
if (!device)
|
||
|
return false;
|
||
|
|
||
|
video::IVideoDriver* driver = device->getVideoDriver();
|
||
|
gui::IGUIEnvironment* env = device->getGUIEnvironment();
|
||
|
|
||
|
gui::IGUIContextMenu* menu = env->addMenu();
|
||
|
menu->addItem(L"Menu", -1, true, true);
|
||
|
gui::IGUIContextMenu* subMenu = menu->getSubMenu(0);
|
||
|
subMenu->addItem(L"Submenu 1", -1, false, true);
|
||
|
gui::IGUIContextMenu* subSubMenu = subMenu->getSubMenu(0);
|
||
|
subSubMenu->addItem(L"Final item");
|
||
|
|
||
|
SEvent event;
|
||
|
event.EventType = EET_MOUSE_INPUT_EVENT;
|
||
|
event.MouseInput.Event = EMIE_LMOUSE_PRESSED_DOWN;
|
||
|
event.MouseInput.X = menu->getAbsolutePosition().UpperLeftCorner.X + 1;
|
||
|
event.MouseInput.Y = menu->getAbsolutePosition().UpperLeftCorner.Y + 1;
|
||
|
(void)menu->OnEvent(event);
|
||
|
|
||
|
// Hovering over the disabled submenu shouldn't cause the "Final item" to appear.
|
||
|
event.MouseInput.Event = EMIE_MOUSE_MOVED;
|
||
|
event.MouseInput.X = subMenu->getAbsolutePosition().UpperLeftCorner.X + 40;
|
||
|
event.MouseInput.Y = subMenu->getAbsolutePosition().UpperLeftCorner.Y + 10;
|
||
|
(void)menu->OnEvent(event);
|
||
|
|
||
|
device->run();
|
||
|
driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH, video::SColor(150,50,50,50));
|
||
|
env->drawAll();
|
||
|
driver->endScene();
|
||
|
|
||
|
bool result = takeScreenshotAndCompareAgainstReference(driver, "-guiDisabledMenu.png", 98.77f);
|
||
|
device->closeDevice();
|
||
|
device->run();
|
||
|
device->drop();
|
||
|
|
||
|
return result;
|
||
|
}
|
||
|
|