bool GUIDropButton::_mouseEvent(const GUIMouseEvent& ev) { bool processed = GUIButtonBase::_mouseEvent(ev); if(ev.getType() == GUIMouseEventType::MouseDragAndDropDragged) { if (!_isDisabled()) { if (DragAndDropManager::instance().isDragInProgress()) { if (DragAndDropManager::instance().getDragTypeId() == mDragType) { if (!_isOn()) _setOn(true); } else { if (_isOn()) _setOn(false); } } else { if (_isOn()) _setOn(false); } } processed = true; } else if(ev.getType() == GUIMouseEventType::MouseDragAndDropDropped) { if (!_isDisabled()) { if (_isOn()) _setOn(false); if (DragAndDropManager::instance().isDragInProgress() && DragAndDropManager::instance().getDragTypeId() == mDragType) { if (!onDataDropped.empty()) onDataDropped(DragAndDropManager::instance().getDragData()); } } processed = true; } else if (ev.getType() == GUIMouseEventType::MouseDragAndDropLeft) { if (!_isDisabled()) { if (_isOn()) _setOn(false); } processed = true; } return processed; }
bool GUIButtonBase::_mouseEvent(const GUIMouseEvent& ev) { if(ev.getType() == GUIMouseEventType::MouseOver) { if (!_isDisabled()) { _setState(_isOn() ? GUIElementState::HoverOn : GUIElementState::Hover); onHover(); } return mBlockPointerEvents; } else if(ev.getType() == GUIMouseEventType::MouseOut) { if (!_isDisabled()) { _setState(_isOn() ? GUIElementState::NormalOn : GUIElementState::Normal); onOut(); } return mBlockPointerEvents; } else if(ev.getType() == GUIMouseEventType::MouseDown) { if (!_isDisabled()) _setState(_isOn() ? GUIElementState::ActiveOn : GUIElementState::Active); return mBlockPointerEvents; } else if(ev.getType() == GUIMouseEventType::MouseUp) { if (!_isDisabled()) { _setState(_isOn() ? GUIElementState::HoverOn : GUIElementState::Hover); onClick(); } return mBlockPointerEvents; } else if (ev.getType() == GUIMouseEventType::MouseDoubleClick) { if (!_isDisabled()) onDoubleClick(); return mBlockPointerEvents; } return false; }
void invoke() { if (_isOn()) _invoke(); }
/// \name Public interface ///@{ operator bool() { return _isOn(); }