|
|
@@ -1103,54 +1103,54 @@ namespace BansheeEngine
|
|
|
|
|
|
// Send MouseOut and MouseOver events
|
|
|
bool eventProcessed = false;
|
|
|
- for(auto& elementInfo : mNewElementsUnderCursor)
|
|
|
+ for(auto& elementInfo : mElementsUnderCursor)
|
|
|
{
|
|
|
GUIElement* element = elementInfo.element;
|
|
|
GUIWidget* widget = elementInfo.widget;
|
|
|
|
|
|
- auto iterFind = std::find_if(begin(mElementsUnderCursor), end(mElementsUnderCursor),
|
|
|
+ auto iterFind = std::find_if(mNewElementsUnderCursor.begin(), mNewElementsUnderCursor.end(),
|
|
|
[=] (const ElementInfo& x) { return x.element == element; });
|
|
|
|
|
|
- if(iterFind == mElementsUnderCursor.end())
|
|
|
+ if(iterFind == mNewElementsUnderCursor.end())
|
|
|
{
|
|
|
auto iterFind2 = std::find_if(mActiveElements.begin(), mActiveElements.end(),
|
|
|
- [&](const ElementInfo& x) { return x.element == element; });
|
|
|
+ [=](const ElementInfo& x) { return x.element == element; });
|
|
|
|
|
|
- // Send MouseOver event
|
|
|
+ // Send MouseOut event
|
|
|
if(mActiveElements.size() == 0 || iterFind2 != mActiveElements.end())
|
|
|
{
|
|
|
- Vector2I localPos;
|
|
|
- if(widget != nullptr)
|
|
|
- localPos = getWidgetRelativePos(*widget, cursorScreenPos);
|
|
|
-
|
|
|
- mMouseEvent = GUIMouseEvent(buttonStates, shift, control, alt);
|
|
|
+ Vector2I curLocalPos = getWidgetRelativePos(*widget, cursorScreenPos);
|
|
|
|
|
|
- mMouseEvent.setMouseOverData(localPos);
|
|
|
+ mMouseEvent.setMouseOutData(curLocalPos);
|
|
|
if(sendMouseEvent(widget, element, mMouseEvent))
|
|
|
eventProcessed = true;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- for(auto& elementInfo : mElementsUnderCursor)
|
|
|
+ for(auto& elementInfo : mNewElementsUnderCursor)
|
|
|
{
|
|
|
GUIElement* element = elementInfo.element;
|
|
|
GUIWidget* widget = elementInfo.widget;
|
|
|
|
|
|
- auto iterFind = std::find_if(mNewElementsUnderCursor.begin(), mNewElementsUnderCursor.end(),
|
|
|
+ auto iterFind = std::find_if(begin(mElementsUnderCursor), end(mElementsUnderCursor),
|
|
|
[=] (const ElementInfo& x) { return x.element == element; });
|
|
|
|
|
|
- if(iterFind == mNewElementsUnderCursor.end())
|
|
|
+ if(iterFind == mElementsUnderCursor.end())
|
|
|
{
|
|
|
auto iterFind2 = std::find_if(mActiveElements.begin(), mActiveElements.end(),
|
|
|
- [=](const ElementInfo& x) { return x.element == element; });
|
|
|
+ [&](const ElementInfo& x) { return x.element == element; });
|
|
|
|
|
|
- // Send MouseOut event
|
|
|
+ // Send MouseOver event
|
|
|
if(mActiveElements.size() == 0 || iterFind2 != mActiveElements.end())
|
|
|
{
|
|
|
- Vector2I curLocalPos = getWidgetRelativePos(*widget, cursorScreenPos);
|
|
|
+ Vector2I localPos;
|
|
|
+ if(widget != nullptr)
|
|
|
+ localPos = getWidgetRelativePos(*widget, cursorScreenPos);
|
|
|
|
|
|
- mMouseEvent.setMouseOutData(curLocalPos);
|
|
|
+ mMouseEvent = GUIMouseEvent(buttonStates, shift, control, alt);
|
|
|
+
|
|
|
+ mMouseEvent.setMouseOverData(localPos);
|
|
|
if(sendMouseEvent(widget, element, mMouseEvent))
|
|
|
eventProcessed = true;
|
|
|
}
|