|
@@ -111,7 +111,6 @@ namespace BansheeEngine
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
updateMeshes();
|
|
updateMeshes();
|
|
|
- updateInput();
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void GUIManager::render(ViewportPtr& target, RenderContext& renderContext)
|
|
void GUIManager::render(ViewportPtr& target, RenderContext& renderContext)
|
|
@@ -405,31 +404,35 @@ namespace BansheeEngine
|
|
|
}
|
|
}
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- void GUIManager::updateInput()
|
|
|
|
|
|
|
+ void GUIManager::onKeyDown(const KeyEvent& event)
|
|
|
{
|
|
{
|
|
|
|
|
+ if(event.isUsed())
|
|
|
|
|
+ return;
|
|
|
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
- void GUIManager::onKeyDown(KeyCode keyCode)
|
|
|
|
|
- {
|
|
|
|
|
- //if(mKeyboardFocusElement != nullptr)
|
|
|
|
|
- //{
|
|
|
|
|
- // mKeyEvent = GUIKeyEvent();
|
|
|
|
|
-
|
|
|
|
|
- // // TODO - Handle KeyUp/KeyDown states
|
|
|
|
|
|
|
+ if(mKeyboardFocusElement != nullptr)
|
|
|
|
|
+ {
|
|
|
|
|
+ mKeyEvent = GUIKeyEvent();
|
|
|
|
|
|
|
|
- // mKeyEvent.setTextInputData(gInput().getInputString());
|
|
|
|
|
- // mKeyboardFocusWidget->_keyEvent(mKeyboardFocusElement, mKeyEvent);
|
|
|
|
|
- //}
|
|
|
|
|
|
|
+ mKeyEvent.setTextInputData(event.textChar);
|
|
|
|
|
+ mKeyboardFocusWidget->_keyEvent(mKeyboardFocusElement, mKeyEvent);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ event.markAsUsed();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- void GUIManager::onKeyUp(KeyCode keyCode)
|
|
|
|
|
|
|
+ void GUIManager::onKeyUp(const KeyEvent& event)
|
|
|
{
|
|
{
|
|
|
|
|
+ if(event.isUsed())
|
|
|
|
|
+ return;
|
|
|
|
|
|
|
|
|
|
+ event.markAsUsed();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void GUIManager::onMouseMoved(const MouseEvent& event)
|
|
void GUIManager::onMouseMoved(const MouseEvent& event)
|
|
|
{
|
|
{
|
|
|
|
|
+ if(event.isUsed())
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
#if CM_DEBUG_MODE
|
|
#if CM_DEBUG_MODE
|
|
|
// Checks if all referenced windows actually exist
|
|
// Checks if all referenced windows actually exist
|
|
|
vector<RenderWindow*>::type activeWindows = RenderWindowManager::instance().getRenderWindows();
|
|
vector<RenderWindow*>::type activeWindows = RenderWindowManager::instance().getRenderWindows();
|
|
@@ -566,10 +569,15 @@ namespace BansheeEngine
|
|
|
|
|
|
|
|
mMouseOverElement = topMostElement;
|
|
mMouseOverElement = topMostElement;
|
|
|
mMouseOverWidget = widgetInFocus;
|
|
mMouseOverWidget = widgetInFocus;
|
|
|
|
|
+
|
|
|
|
|
+ event.markAsUsed();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void GUIManager::onMouseDown(const MouseEvent& event, MouseButton buttonID)
|
|
void GUIManager::onMouseDown(const MouseEvent& event, MouseButton buttonID)
|
|
|
{
|
|
{
|
|
|
|
|
+ if(event.isUsed())
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
// TODO - Maybe avoid querying these for every event separately?
|
|
// TODO - Maybe avoid querying these for every event separately?
|
|
|
bool buttonStates[(int)MB_Count];
|
|
bool buttonStates[(int)MB_Count];
|
|
|
for(int i = 0; i < MB_Count; i++)
|
|
for(int i = 0; i < MB_Count; i++)
|
|
@@ -604,10 +612,15 @@ namespace BansheeEngine
|
|
|
|
|
|
|
|
mKeyboardFocusElement = mMouseOverElement;
|
|
mKeyboardFocusElement = mMouseOverElement;
|
|
|
mKeyboardFocusWidget = mMouseOverWidget;
|
|
mKeyboardFocusWidget = mMouseOverWidget;
|
|
|
|
|
+
|
|
|
|
|
+ event.markAsUsed();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
void GUIManager::onMouseUp(const MouseEvent& event, MouseButton buttonID)
|
|
void GUIManager::onMouseUp(const MouseEvent& event, MouseButton buttonID)
|
|
|
{
|
|
{
|
|
|
|
|
+ if(event.isUsed())
|
|
|
|
|
+ return;
|
|
|
|
|
+
|
|
|
// TODO - Maybe avoid querying these for every event separately?
|
|
// TODO - Maybe avoid querying these for every event separately?
|
|
|
bool buttonStates[(int)MB_Count];
|
|
bool buttonStates[(int)MB_Count];
|
|
|
for(int i = 0; i < MB_Count; i++)
|
|
for(int i = 0; i < MB_Count; i++)
|
|
@@ -641,6 +654,8 @@ namespace BansheeEngine
|
|
|
mActiveWidget = nullptr;
|
|
mActiveWidget = nullptr;
|
|
|
mActiveMouseButton = 0;
|
|
mActiveMouseButton = 0;
|
|
|
}
|
|
}
|
|
|
|
|
+
|
|
|
|
|
+ event.markAsUsed();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
Int2 GUIManager::getWidgetRelativePos(const GUIWidget& widget, const Int2& screenPos)
|
|
Int2 GUIManager::getWidgetRelativePos(const GUIWidget& widget, const Int2& screenPos)
|