void ScrollBar::notifyMousePressed(Widget* _sender, int _left, int _top, MouseButton _id) { // диспечерезируем нажатие своих детей как свое eventMouseButtonPressed(this, _left, _top, _id); if (MouseButton::Left != _id) return; if (mEnableRepeat && _sender != mWidgetTrack && ((_sender != mWidgetFirstPart && _sender != mWidgetSecondPart) || !mMoveToClick)) { ControllerItem* item = ControllerManager::getInstance().createItem(ControllerRepeatClick::getClassTypeName()); ControllerRepeatClick* controller = item->castType<ControllerRepeatClick>(); controller->eventRepeatClick += newDelegate(this, &ScrollBar::repeatClick); controller->setRepeat(mRepeatTriggerTime, mRepeatStepTime); ControllerManager::getInstance().addItem(_sender, controller); } if (mMoveToClick && _sender != mWidgetTrack && _sender != mWidgetStart && _sender != mWidgetEnd) { if (mWidgetTrack != nullptr) { mPreActionOffset = InputManager::getInstance().getLastPressedPosition(MouseButton::Left); const IntPoint& point = InputManager::getInstance().getMousePositionByLayer() - mWidgetTrack->getParent()->getAbsolutePosition(); mPreActionOffset.left -= getTrackSize() / 2; mPreActionOffset.top -= getTrackSize() / 2; TrackMove(point.left, point.top); } } else if (_sender == mWidgetStart) { widgetStartPressed(); } else if (_sender == mWidgetEnd) { widgetEndPressed(); } else if (_sender == mWidgetFirstPart) { widgetFirstPartPressed(); } else if (_sender == mWidgetSecondPart) { widgetSecondPartPressed(); } else if (_sender == mWidgetTrack) { mPreActionOffset.left = _sender->getLeft(); mPreActionOffset.top = _sender->getTop(); } }
void EventHandler::inputEvent(sf::Event &event) { switch (event.type) { case sf::Event::KeyPressed: eventKeyPressed(event.key); break; case sf::Event::KeyReleased: eventKeyReleased(event.key); break; case sf::Event::TextEntered: eventTextEntered(event.text); break; case sf::Event::MouseMoved: eventMouseMoved(event.mouseMove); break; case sf::Event::MouseButtonPressed: eventMouseButtonPressed(event.mouseButton); break; case sf::Event::MouseButtonReleased: eventMouseButtonReleased(event.mouseButton); break; case sf::Event::MouseWheelMoved: eventMouseWheelMoved(event.mouseWheel); break; case sf::Event::Closed: eventClosed(); break; } }
void VScroll::notifyMousePressed(Widget* _sender, int _left, int _top, MouseButton _id) { // диспечерезируем нажатие своих детей как свое eventMouseButtonPressed(this, _left, _top, _id); if (MouseButton::Left != _id) return; if (mMoveToClick && mWidgetTrack != _sender) { mPreActionOffset = InputManager::getInstance().getLastLeftPressed(); const IntPoint& point = InputManager::getInstance().getMousePositionByLayer() - getAbsolutePosition(); TrackMove(point.left, point.top); } else if (_sender == mWidgetStart) { // минимальное значение if (mScrollPosition == 0) return; // расчитываем следующее положение if (mScrollPosition > mScrollPage) mScrollPosition -= mScrollPage; else mScrollPosition = 0; // оповещаем eventScrollChangePosition(this, (int)mScrollPosition); updateTrack(); } else if (_sender == mWidgetEnd) { // максимальное значение if ( (mScrollRange < 2) || (mScrollPosition >= (mScrollRange - 1)) ) return; // расчитываем следующее положение if ((mScrollPosition + mScrollPage) < (mScrollRange - 1)) mScrollPosition += mScrollPage; else mScrollPosition = mScrollRange - 1; // оповещаем eventScrollChangePosition(this, (int)mScrollPosition); updateTrack(); } else if (_sender == mWidgetFirstPart) { // минимальное значение if (mScrollPosition == 0) return; // расчитываем следующее положение if (mScrollPosition > mScrollViewPage) mScrollPosition -= mScrollViewPage; else mScrollPosition = 0; // оповещаем eventScrollChangePosition(this, (int)mScrollPosition); updateTrack(); } else if (_sender == mWidgetSecondPart) { // максимальное значение if ( (mScrollRange < 2) || (mScrollPosition >= (mScrollRange - 1)) ) return; // расчитываем следующее положение if ((mScrollPosition + mScrollViewPage) < (mScrollRange - 1)) mScrollPosition += mScrollViewPage; else mScrollPosition = mScrollRange - 1; // оповещаем eventScrollChangePosition(this, (int)mScrollPosition); updateTrack(); } else if (_sender == mWidgetTrack) { mPreActionOffset.left = _sender->getLeft(); mPreActionOffset.top = _sender->getTop(); } }
void WidgetInput::_riseMouseButtonPressed(int _left, int _top, MouseButton _id) { onMouseButtonPressed(_left, _top, _id); eventMouseButtonPressed(static_cast<Widget*>(this), _left, _top, _id); }