Esempio n. 1
0
	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();
		}
	}
Esempio n. 2
0
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;
    }
}
Esempio n. 3
0
	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();
		}
	}
Esempio n. 4
0
	void WidgetInput::_riseMouseButtonPressed(int _left, int _top, MouseButton _id)
	{
		onMouseButtonPressed(_left, _top, _id);
		eventMouseButtonPressed(static_cast<Widget*>(this), _left, _top, _id);
	}