Esempio n. 1
0
EventDispatcher *Stage::FindEventDispatcher(const wxPoint &inPoint) {
    // If a grab is in effect, return the element immediately.
    if (mGrabbedElement)
        return mGrabbedElement->GetEventDispatcher().get();

    // Otherwise, look things up normally.
    ElementPtr elem = FindLightWeightElement(inPoint);
    if (elem && elem->GetEventDispatcher())
        return elem->GetEventDispatcher().get();
    else
        return GetEventDispatcher();
}
Esempio n. 2
0
void Stage::MouseGrab(ElementPtr inElement) {
    ASSERT(inElement->IsLightWeight());
    ASSERT(inElement->GetEventDispatcher().get());
    if (mGrabbedElement) {
        std::string name(inElement->GetName().mb_str());
        std::string grabbed_name(mGrabbedElement->GetName().mb_str());
        gLog.Error("halyard.stage.grab",
                   "Grabbing %s while %s is already grabbed",
                   name.c_str(), grabbed_name.c_str());
        MouseUngrab(mGrabbedElement);
    }
    mGrabbedElement = inElement;
    CaptureMouse();
}
Esempio n. 3
0
void Stage::LeaveElement(ElementPtr inElement, const wxPoint &inPosition) {
    if (ShouldSendEvents()) {
        ASSERT(inElement->GetEventDispatcher().get());
        inElement->GetEventDispatcher()->DoEventMouseLeave(inPosition);
    }
}