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; }
bool GUISlider::_commandEvent(const GUICommandEvent& ev) { const bool baseReturnValue = GUIElement::_commandEvent(ev); const GUIElementStyle* bgStyle = mBackground->_getStyle(); if(ev.getType() == GUICommandEventType::FocusGained) { mHasFocus = true; if(!_isDisabled()) mBackground->setTexture(bgStyle->focused.texture); return true; } else if(ev.getType() == GUICommandEventType::FocusLost) { mHasFocus = false; mBackground->setTexture(bgStyle->normal.texture); return true; } else if(ev.getType() == GUICommandEventType::MoveLeft) { mSliderHandle->moveOneStep(false); return true; } else if(ev.getType() == GUICommandEventType::MoveRight) { mSliderHandle->moveOneStep(true); return true; } return baseReturnValue; }
Color GUIElement::getTint() const { if (!_isDisabled()) return mColor; return mColor * DISABLED_COLOR; }
SPtr<GUIContextMenu> GUIElement::_getContextMenu() const { if (!_isDisabled()) return mContextMenu; return nullptr; }
bool GUIColor::_mouseEvent(const GUIMouseEvent& ev) { if(ev.getType() == GUIMouseEventType::MouseUp) { if (!_isDisabled()) onClicked(); return true; } return false; }
bool GUIFloatField::_hasCustomCursor(const Vector2I position, CursorType& type) const { if (!_isDisabled()) { Rect2I draggableArea; if (mLabel != nullptr) draggableArea = mLabel->_getLayoutData().area; if (draggableArea.contains(position)) { type = CursorType::ArrowLeftRight; return true; } } return false; }
void GUIElementBase::_registerChildElement(GUIElementBase* element) { assert(!element->_isDestroyed()); GUIElementBase* parentElement = element->_getParent(); if(parentElement != nullptr) { parentElement->_unregisterChildElement(element); } element->_setParent(this); mChildren.push_back(element); element->_setActive(_isActive()); element->_setVisible(_isVisible()); element->_setDisabled(_isDisabled()); _markLayoutAsDirty(); }
bool GUIToggle::_mouseEvent(const GUIMouseEvent& ev) { bool processed = GUIButtonBase::_mouseEvent(ev); if(ev.getType() == GUIMouseEventType::MouseUp) { if (!_isDisabled()) { if (mIsToggled) toggleOff(); else toggleOn(); } processed = true; } return processed; }
void GUILayout::insertElement(UINT32 idx, GUIElementBase* element) { if(idx > (UINT32)mChildren.size()) BS_EXCEPT(InvalidParametersException, "Index out of range: " + toString(idx) + ". Valid range: 0 .. " + toString((UINT32)mChildren.size())); if (element->_isDestroyed()) return; GUIElementBase* parentElement = element->_getParent(); if(parentElement != nullptr) { parentElement->_unregisterChildElement(element); } element->_setParent(this); mChildren.insert(mChildren.begin() + idx, element); element->_setActive(_isActive()); element->_setVisible(_isVisible()); element->_setDisabled(_isDisabled()); _markLayoutAsDirty(); }
bool GUIFloatField::_mouseEvent(const GUIMouseEvent& event) { GUIElementContainer::_mouseEvent(event); Rect2I draggableArea; if(mLabel != nullptr) draggableArea = mLabel->_getLayoutData().area; if(event.getType() == GUIMouseEventType::MouseDragStart) { if (!_isDisabled()) { if (draggableArea.contains(event.getDragStartPosition())) { mLastDragPos = event.getPosition().x; mIsDragging = true; } } return true; } else if(event.getType() == GUIMouseEventType::MouseDrag) { if (!_isDisabled()) { if (mIsDragging) { INT32 xDiff = event.getPosition().x - mLastDragPos; INT32 jumpAmount = 0; Rect2I viewArea = _getParentWidget()->getTarget()->getPixelArea(); if (event.getPosition().x <= 0) { Vector2I cursorScreenPos = Cursor::instance().getScreenPosition(); jumpAmount = viewArea.width - event.getPosition().x - 1; cursorScreenPos.x += jumpAmount; Cursor::instance().setScreenPosition(cursorScreenPos); } else if (event.getPosition().x >= (INT32)viewArea.width) { Vector2I cursorScreenPos = Cursor::instance().getScreenPosition(); jumpAmount = -(INT32)viewArea.width - (event.getPosition().x - (INT32)viewArea.width) + 1; cursorScreenPos.x += jumpAmount; Cursor::instance().setScreenPosition(cursorScreenPos); } float oldValue = getValue(); float newValue = oldValue + xDiff * DRAG_SPEED; mLastDragPos = event.getPosition().x + jumpAmount; if (oldValue != newValue) valueChanged(newValue); } } return true; } else if(event.getType() == GUIMouseEventType::MouseDragEnd) { if (!_isDisabled()) mIsDragging = false; return true; } return false; }
bool GUIDropButton::_acceptDragAndDrop(const Vector2I position, UINT32 typeId) const { return typeId == mDragType && !_isDisabled(); }
bool GUIIntField::_mouseEvent(const GUIMouseEvent& event) { GUIElementContainer::_mouseEvent(event); Rect2I draggableArea; if(mLabel != nullptr) draggableArea = mLabel->_getLayoutData().area; if(event.getType() == GUIMouseEventType::MouseDragStart) { if (!_isDisabled()) { if (draggableArea.contains(event.getDragStartPosition())) { mLastDragPos = event.getPosition().x; mIsDragging = true; } } return true; } else if(event.getType() == GUIMouseEventType::MouseDrag) { if (!_isDisabled()) { if (mIsDragging) { INT32 xDiff = event.getPosition().x - mLastDragPos; INT32 jumpAmount = 0; if (event.getPosition().x < 0) { Vector2I cursorScreenPos = Cursor::instance().getScreenPosition(); cursorScreenPos.x += _getParentWidget()->getTarget()->getWidth(); jumpAmount = _getParentWidget()->getTarget()->getWidth(); Cursor::instance().setScreenPosition(cursorScreenPos); } else if (event.getPosition().x >= _getParentWidget()->getTarget()->getWidth()) { Vector2I cursorScreenPos = Cursor::instance().getScreenPosition(); cursorScreenPos.x -= _getParentWidget()->getTarget()->getWidth(); jumpAmount = -_getParentWidget()->getTarget()->getWidth(); Cursor::instance().setScreenPosition(cursorScreenPos); } INT32 oldValue = getValue(); INT32 newValue = oldValue; if (xDiff >= DRAG_SPEED) { while (xDiff >= DRAG_SPEED) { newValue++; xDiff -= DRAG_SPEED; } } else if (xDiff <= -DRAG_SPEED) { while (xDiff <= -DRAG_SPEED) { newValue--; xDiff += DRAG_SPEED; } } mLastDragPos += (newValue - oldValue) * DRAG_SPEED + jumpAmount; if (oldValue != newValue) valueChanged(newValue); } } return true; } else if(event.getType() == GUIMouseEventType::MouseDragEnd) { if (!_isDisabled()) mIsDragging = false; return true; } return false; }
bool GUIResourceTreeView::_acceptDragAndDrop(const Vector2I position, UINT32 typeId) const { return typeId == (UINT32)DragAndDropType::Resources && !_isDisabled(); }