Ejemplo n.º 1
0
	void ItemBox::setViewOffset(const IntPoint& _value)
	{
		if (mAlignVert)
		{
			if (mContentSize.height <= 0)
				return;

			int offset = _value.top;

			if (mContentSize.height <= _getClientWidget()->getHeight())
				offset = 0;
			else if (offset >= mContentSize.height - _getClientWidget()->getHeight())
				offset = mContentSize.height - _getClientWidget()->getHeight();
			else if (offset < 0)
				offset = 0;

			if (mContentPosition.top == offset)
				return;

			// сбрасываем старую подсветку
			// так как при прокрутке, мышь может находиться над окном
			resetCurrentActiveItem();

			mContentPosition.top = offset;
		}
		else
		{
			if (mContentSize.width <= 0)
				return;

			int offset = _value.left;

			if (mContentSize.width <= _getClientWidget()->getWidth())
				offset = 0;
			else if (offset >= mContentSize.width - _getClientWidget()->getWidth())
				offset = mContentSize.width - _getClientWidget()->getWidth();
			else if (offset < 0)
				offset = 0;

			if (mContentPosition.left == offset)
				return;

			// сбрасываем старую подсветку
			// так как при прокрутке, мышь может находиться над окном
			resetCurrentActiveItem();

			mContentPosition.left = offset;
		}

		setContentPosition(mContentPosition);

		// заново ищем и подсвечиваем айтем
		if (!mNeedDrop)
			findCurrentActiveItem();

		if (nullptr != mVScroll)
			mVScroll->setScrollPosition(mContentPosition.top);
		if (nullptr != mHScroll)
			mHScroll->setScrollPosition(mContentPosition.left);
	}
Ejemplo n.º 2
0
void WebView::pageDidRequestScroll(const IntPoint& position)
{
    FloatPoint uiPosition(position);
    setContentPosition(uiPosition);

    m_client.didChangeContentsPosition(this, position);
}
Ejemplo n.º 3
0
	void ListCtrl::notifyMouseWheel(Widget* _sender, int _rel)
	{
		if (mContentSize.height <= 0) return;

		int offset = mContentPosition.top;
		if (_rel < 0) offset += mScrollViewPage;
		else offset -= mScrollViewPage;

		if (mContentSize.height <= _getClientWidget()->getHeight()) return;

		if (offset >= mContentSize.height - _getClientWidget()->getHeight()) offset = mContentSize.height - _getClientWidget()->getHeight();
		else if (offset < 0) offset = 0;

		if (mContentPosition.top == offset) return;

		// сбрасываем старую подсветку
		// так как при прокрутке, мышь может находиться над окном
		resetCurrentActiveItem();

		mContentPosition.top = offset;

		setContentPosition(mContentPosition);

		// заново ищем и подсвечиваем айтем
		if (!mNeedDrop)
			findCurrentActiveItem();

		if (nullptr != mVScroll) mVScroll->setScrollPosition(mContentPosition.top);
		if (nullptr != mHScroll) mHScroll->setScrollPosition(mContentPosition.left);
	}
Ejemplo n.º 4
0
	void ItemBox::notifyScrollChangePosition(ScrollBar* _sender, size_t _index)
	{
		if (_sender == mVScroll)
		{
			mContentPosition.top = (int)_index;
		}
		else if (_sender == mHScroll)
		{
			mContentPosition.left = (int)_index;
		}

		setContentPosition(mContentPosition);
	}
Ejemplo n.º 5
0
	void ListCtrl::notifyScrollChangePosition(VScroll* _sender, size_t _index)
	{
		if (_sender == mVScroll)
		{
			mContentPosition.top = (int)_index;
		}
		else if (_sender == mHScroll)
		{
			mContentPosition.left = (int)_index;
		}

		setContentPosition(mContentPosition);
	}
Ejemplo n.º 6
0
void WebViewNix::didRenderFrame(const WebCore::IntSize& contentsSize, const WebCore::IntRect& coveredRect)
{
    m_duringFrameRendering = false;
    if (m_pendingScaleOrPositionChange) {
        m_pendingScaleOrPositionChange = false;
        if (m_scaleAfterTransition != m_contentScaleFactor)
            m_contentScaleFactor = m_scaleAfterTransition;

        if (m_contentPosition != m_contentPositionAfterTransition)
            setContentPosition(m_contentPositionAfterTransition);
    }

    if (m_adjustScaleAfterFirstMainFrameRender) {
        m_adjustScaleAfterFirstMainFrameRender = false;
        adjustScaleToFitContents();
    }

    WebView::didRenderFrame(contentsSize, coveredRect);
}
Ejemplo n.º 7
0
	void ScrollViewBase::updateScrollPosition()
	{
		// размер контекста
		IntSize contentSize = getContentSize();
		// текущее смещение контекста
		IntPoint contentPoint = getContentPosition();
		// расчетное смещение
		IntPoint offset = contentPoint;

		IntSize viewSize = getViewSize();

		Align align = getContentAlign();

		if (contentSize.width > viewSize.width)
		{
			// максимальный выход влево
			if ((offset.left + viewSize.width) > contentSize.width)
			{
				offset.left = contentSize.width - viewSize.width;
			}
			// максимальный выход вправо
			else if (offset.left < 0)
			{
				offset.left = 0;
			}
		}
		else
		{
			if (align.isLeft())
			{
				offset.left = 0;
			}
			else if (align.isRight())
			{
				offset.left = contentSize.width - viewSize.width;
			}
			else
			{
				offset.left = (contentSize.width - viewSize.width) / 2;
			}
		}

		if (contentSize.height > viewSize.height)
		{
			// максимальный выход вверх
			if ((offset.top + viewSize.height) > contentSize.height)
			{
				offset.top = contentSize.height - viewSize.height;
			}
			// максимальный выход вниз
			else if (offset.top < 0)
			{
				offset.top = 0;
			}
		}
		else
		{
			if (align.isTop())
			{
				offset.top = 0;
			}
			else if (align.isBottom())
			{
				offset.top = contentSize.height - viewSize.height;
			}
			else
			{
				offset.top = (contentSize.height - viewSize.height) / 2;
			}
		}

		if (offset != contentPoint)
		{
			if (nullptr != mVScroll) mVScroll->setScrollPosition(offset.top);
			if (nullptr != mHScroll) mHScroll->setScrollPosition(offset.left);
			setContentPosition(offset);
		}
	}
Ejemplo n.º 8
0
void WebView::didCommitLoadForMainFrame(const String&, bool)
{
    setContentPosition(WebCore::FloatPoint());
    m_contentsSize = IntSize();
}