コード例 #1
0
ファイル: qtscrollerfilter.cpp プロジェクト: nhinze/rhodes
QWebFrame *QtScrollerFilter::scrollingFrameAt_QWebView(QWebView *view, const QPoint &pos) const
{
    if (!view->page())
         return 0;

    QWebFrame *mainFrame = view->page()->mainFrame();
    QWebHitTestResult hitTest = mainFrame->hitTestContent(pos);
    QWebFrame *hitFrame = hitTest.frame();
         
    if (!hitFrame)
        return 0;

    QRect vsbrect = hitFrame->scrollBarGeometry(Qt::Vertical);
    QRect hsbrect = hitFrame->scrollBarGeometry(Qt::Horizontal);

    if (!vsbrect.isEmpty() && vsbrect.contains(hitTest.pos() - hitFrame->scrollPosition()))
        return 0;
    if (!hsbrect.isEmpty() && hsbrect.contains(hitTest.pos() - hitFrame->scrollPosition()))
        return 0;

    QSize range = hitFrame->contentsSize() - hitFrame->geometry().size();
    
    while (hitFrame && range.width() <= 1 && range.height() <= 1)
        hitFrame = hitFrame->parentFrame();
    return hitFrame;
}
コード例 #2
0
ファイル: qwebframeproto.cpp プロジェクト: xtuple/qt-client
QPoint QWebFrameProto::scrollPosition() const
{
  scriptDeprecated("QWebFrame will not be available in future versions");
  QWebFrame *item = qscriptvalue_cast<QWebFrame*>(thisObject());
  if (item)
    return item->scrollPosition();
  return QPoint();
}
コード例 #3
0
    // scroll by dx, dy
    // return true if the widget was scrolled
    bool scrollWidget(const int dx, const int dy)
    {
        QAbstractScrollArea *scrollArea = qobject_cast<QAbstractScrollArea*>(widget);
        if (scrollArea) {
            const int x = scrollArea->horizontalScrollBar()->value();
            const int y = scrollArea->verticalScrollBar()->value();
            scrollArea->horizontalScrollBar()->setValue(x - dx);
            scrollArea->verticalScrollBar()->setValue(y - dy);
            return (scrollArea->horizontalScrollBar()->value() != x
                    || scrollArea->verticalScrollBar()->value() != y);
        }

        QWebView *webView = qobject_cast<QWebView*>(widget);
        if (webView) {
            QWebFrame *frame = webView->page()->mainFrame();
            const QPoint position = frame->scrollPosition();
            frame->setScrollPosition(position - QPoint(dx, dy));
            return frame->scrollPosition() != position;
        }
        return false;
    }
コード例 #4
0
void
message_view::page_down()
{
  QWebFrame* frame = m_bodyv->page()->mainFrame();
  if (!frame)
    return;
  QPoint pos = frame->scrollPosition();
  int y = m_bodyv->geometry().height() + pos.y();
  if (y > frame->contentsSize().height()-frame->geometry().height())
    y = frame->contentsSize().height()-frame->geometry().height();
  pos.setY(y);
  frame->setScrollPosition(pos);
}
コード例 #5
0
ファイル: customwebview.cpp プロジェクト: Akon32/leechcraft
	void CustomWebView::handleAutoscroll ()
	{
		if (!ScrollDelta_)
			return;

		AccumulatedScrollShift_ += ScrollDelta_;

		if (std::abs (AccumulatedScrollShift_) >= 1)
		{
			QWebFrame *mf = page ()->mainFrame ();
			QPoint pos = mf->scrollPosition ();
			pos += QPoint (0, AccumulatedScrollShift_);
			mf->setScrollPosition (pos);

			AccumulatedScrollShift_ -= static_cast<int> (AccumulatedScrollShift_);
		}
	}
コード例 #6
0
ファイル: phpwebview.cpp プロジェクト: scraperlab/browserext
void PhpWebView::showXPath()
{
	QWebFrame *frame = page()->frameAt(rightClick);
	if (frame)
	{
		XPathInspector *dlg = new XPathInspector(this, this);

		if (selectedElements.count() == 0)
		{
			QPoint point = frame->scrollPosition();
			point += rightClick;
            QWebElement elem = getElementByCoord(frame->documentElement(), point);
			dlg->setActiveElement(elem);
		}
		else
		{
			dlg->setFewActiveElements(selectedElements);
		}
		dlg->show();
	}
}
コード例 #7
0
ファイル: session_tab.cpp プロジェクト: mlapshin/revisor
bool SessionTab::sendMouseEvent(QMouseEvent::Type type, const QPoint& point, Qt::MouseButton button, Qt::MouseButtons buttons, Qt::KeyboardModifiers modifiers)
{
  QWebFrame* frame = webPage->mainFrame();
  QPoint relativePoint;

  unsigned int scrollX = 0;
  unsigned int scrollY = 0;

  QPoint savedScrollPos = frame->scrollPosition();

  unsigned int w = frame->geometry().width() - frame->scrollBarGeometry(Qt::Vertical).width();
  unsigned int h = frame->geometry().height() - frame->scrollBarGeometry(Qt::Horizontal).height();

  // unsigned int maxScrollX = frame->scrollBarMaximum(Qt::Horizontal);
  // unsigned int maxScrollY = frame->scrollBarMaximum(Qt::Vertical);

  if (point.x() > (w - 1)) {
    scrollX = point.x() - w + 1;
    relativePoint.setX(w - 1);
  } else {
    relativePoint.setX(point.x());
  }

  if (point.y() > (h - 1)) {
    scrollY = point.y() - h + 1;
    relativePoint.setY(h - 1);
  } else {
    relativePoint.setY(point.y());
  }

  QMouseEvent event(type, relativePoint, button, buttons, modifiers);
  frame->setScrollPosition(QPoint(scrollX, scrollY));

  bool ret = sendEvent(&event);

  qDebug() << "Mouse event" << type << relativePoint;
  frame->setScrollPosition(savedScrollPos);

  return ret;
}
コード例 #8
0
ファイル: webview.cpp プロジェクト: hytham/qt-webkit-kiosk
void WebView::scrollPageUp()
{
    QWebFrame* frame = this->page()->mainFrame();
    QPoint point = frame->scrollPosition();
    frame->setScrollPosition(point - QPoint(0, this->page()->mainFrame()->geometry().height()));
}
コード例 #9
0
ファイル: webview.cpp プロジェクト: hytham/qt-webkit-kiosk
void WebView::scrollUp()
{
    QWebFrame* frame = this->page()->mainFrame();
    QPoint point = frame->scrollPosition();
    frame->setScrollPosition(point - QPoint(0, 100));
}
コード例 #10
0
ファイル: ewa_htmlselector.cpp プロジェクト: sendevent/ewa
void EWAHTMLSelector::drawElementsRects( const QRect& visible )
{
    QPainter p( this );
    if( !p.isActive() )
    {
        return;
    }

    QRect r = visible;
    if( r.isNull() )
    {
        r = rect();
    }

    p.setPen( m_bkgndPen );
    p.setBrush( m_bkgndPen.brush() );
    p.setOpacity(0.3);
    p.drawRect( r );

    if( !m_element.isNull() )
    {
        QRect elementUnderCursor = m_element.geometry();
        if( r.intersects( elementUnderCursor ) )
        {
            elementUnderCursor = elementUnderCursor.intersected( r );
            if( elementUnderCursor.isValid() )
            {
                QWebFrame *pFrame = m_element.webFrame();
                if( !pFrame )
                {
                    pFrame = m_webViewPtr->page()->mainFrame();
                }
                QPoint pnt = elementUnderCursor.center() - pFrame->scrollPosition();
                elementUnderCursor.moveCenter( pnt );
                p.setPen( m_markerPen );
                p.setBrush( m_markerPen.brush() );
                p.setOpacity(0.5);
                p.drawRoundedRect( elementUnderCursor, 14, 14 );
            }
        }
    }

    if( !m_elSelected.isNull() )
    {
        QRect selectedElement = m_elSelected.geometry();
        if( r.intersects( selectedElement ) )
        {
            selectedElement = selectedElement.intersected( r );
            if( selectedElement.isValid() )
            {
                QWebFrame *pFrame = m_elSelected.webFrame();
                if( !pFrame )
                {
                    pFrame = m_webViewPtr->page()->mainFrame();
                }
                QPoint pnt = selectedElement.center() - pFrame->scrollPosition();
                selectedElement.moveCenter( pnt );
                p.setPen( Qt::white );
                p.setBrush( Qt::white );
                p.setOpacity(0.7);
                p.drawRoundedRect( selectedElement, 14, 14 );
            }
        }
    }
}
コード例 #11
0
 QPoint scrollPosition() const
 {
     QWebFrame* frame = currentFrame();
     return frame ? frame->scrollPosition() : QPoint();
 }