Explorar el Código

Fixed menu interactions

Ivan Safrin hace 13 años
padre
commit
8c821d5795

+ 2 - 0
Modules/Contents/UI/Include/PolyUIMenu.h

@@ -55,6 +55,8 @@ namespace Polycode {
 			
 		protected:
 		
+			Vector2 initialMouse;
+		
 			Number menuItemHeight;
 			Number menuWidth;
 			

+ 5 - 2
Modules/Contents/UI/Source/PolyUIMenu.cpp

@@ -103,6 +103,7 @@ UIMenu::UIMenu(Number menuWidth) : UIElement() {
 
 	CoreServices::getInstance()->getCore()->getInput()->addEventListener(this, InputEvent::EVENT_KEYDOWN);			
 
+	initialMouse = CoreServices::getInstance()->getCore()->getInput()->getMousePosition();
 	
 	this->width = menuWidth;
 	this->height = menuItemHeight;
@@ -136,13 +137,15 @@ void UIMenu::Update() {
 void UIMenu::handleEvent(Event *event) {
 
 	if(event->getDispatcher() == CoreServices::getInstance()->getCore()->getInput()) {
+	
+		InputEvent *inputEvent = (InputEvent*) event;	
+		
 		if(event->getEventCode() == InputEvent::EVENT_KEYDOWN) {
-			InputEvent *inputEvent = (InputEvent*) event;
 			if(inputEvent->key == KEY_ESCAPE) {
 				dispatchEvent(new UIEvent(), UIEvent::CANCEL_EVENT);							
 			}
 		}
-		if((event->getEventCode() == InputEvent::EVENT_MOUSEDOWN || event->getEventCode() == InputEvent::EVENT_MOUSEUP) && !ignoreMouse) {
+		if((event->getEventCode() == InputEvent::EVENT_MOUSEDOWN || (event->getEventCode() == InputEvent::EVENT_MOUSEUP && initialMouse != inputEvent->getMousePosition())) && !ignoreMouse) {
 			if(selectorBox->visible) {
 				dispatchEvent(new UIEvent(), UIEvent::OK_EVENT);
 			} else {