summaryrefslogtreecommitdiff
path: root/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp
diff options
context:
space:
mode:
authorFrederik Gladhorn <frederik.gladhorn@digia.com>2013-06-12 14:45:04 +0200
committerFrederik Gladhorn <frederik.gladhorn@digia.com>2013-06-12 14:45:05 +0200
commitcabbad3ff6732e07d614eb743a59496d73aabb28 (patch)
tree0799683696ef54345680a799e9a5e5586082bf9e /Source/WebKit/qt/WidgetSupport/PageClientQt.cpp
parent289da5616df56912fa6f8c319d61fb4489c51add (diff)
parent1810e3848d15ffbe9529f53866fc0ede8d947fef (diff)
downloadqtwebkit-cabbad3ff6732e07d614eb743a59496d73aabb28.tar.gz
Merge remote-tracking branch 'origin/release' into stable
Change-Id: I66f94d7e3dea401f7a89a00fb474532377baf6c4
Diffstat (limited to 'Source/WebKit/qt/WidgetSupport/PageClientQt.cpp')
-rw-r--r--Source/WebKit/qt/WidgetSupport/PageClientQt.cpp54
1 files changed, 32 insertions, 22 deletions
diff --git a/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp b/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp
index 095f9e582..8f486d594 100644
--- a/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp
+++ b/Source/WebKit/qt/WidgetSupport/PageClientQt.cpp
@@ -120,6 +120,16 @@ QRect PageClientQWidget::geometryRelativeToOwnerWidget() const
return view->geometry();
}
+QPoint PageClientQWidget::mapToOwnerWindow(const QPoint& point) const
+{
+ QWidget* widget = qobject_cast<QWidget*>(ownerWidget());
+ // Can be false both if ownerWidget() is native or if it doesn't have any native parent.
+ if (const QWidget *nativeParent = widget->nativeParentWidget())
+ return widget->mapTo(nativeParent, point);
+
+ return point;
+}
+
QObject* PageClientQWidget::pluginParent() const
{
return view;
@@ -170,7 +180,7 @@ void PageClientQGraphicsWidget::repaintViewport()
bool PageClientQGraphicsWidget::makeOpenGLContextCurrentIfAvailable()
{
#if USE(ACCELERATED_COMPOSITING) && USE(TEXTURE_MAPPER_GL) && defined(QT_OPENGL_LIB)
- QGraphicsView* graphicsView = view->scene()->views()[0];
+ QGraphicsView* graphicsView = firstGraphicsView();
if (graphicsView && graphicsView->viewport()) {
QGLWidget* glWidget = qobject_cast<QGLWidget*>(graphicsView->viewport());
if (glWidget) {
@@ -218,14 +228,9 @@ QPalette PageClientQGraphicsWidget::palette() const
int PageClientQGraphicsWidget::screenNumber() const
{
#if defined(Q_WS_X11)
- if (QGraphicsScene* scene = view->scene()) {
- const QList<QGraphicsView*> views = scene->views();
-
- if (!views.isEmpty())
- return views.at(0)->x11Info().screen();
- }
+ if (QGraphicsView* graphicsView = firstGraphicsView())
+ return graphicsView->x11Info().screen();
#endif
-
return 0;
}
@@ -240,28 +245,26 @@ QObject* PageClientQGraphicsWidget::ownerWidget() const
QRect PageClientQGraphicsWidget::geometryRelativeToOwnerWidget() const
{
- if (!view->scene())
- return QRect();
-
- QList<QGraphicsView*> views = view->scene()->views();
- if (views.isEmpty())
- return QRect();
+ if (QGraphicsView* graphicsView = firstGraphicsView())
+ return graphicsView->mapFromScene(view->boundingRect()).boundingRect();
+ return QRect();
+}
- QGraphicsView* graphicsView = views.at(0);
- return graphicsView->mapFromScene(view->boundingRect()).boundingRect();
+QPoint PageClientQGraphicsWidget::mapToOwnerWindow(const QPoint& point) const
+{
+ if (const QGraphicsView* graphicsView = firstGraphicsView())
+ if (const QWidget *nativeParent = graphicsView->nativeParentWidget())
+ return graphicsView->mapTo(nativeParent, graphicsView->mapFromScene(view->mapToScene(point)));
+ return point;
}
#if USE(TILED_BACKING_STORE)
QRectF PageClientQGraphicsWidget::graphicsItemVisibleRect() const
{
- if (!view->scene())
+ QGraphicsView* graphicsView = firstGraphicsView();
+ if (!graphicsView)
return QRectF();
- QList<QGraphicsView*> views = view->scene()->views();
- if (views.isEmpty())
- return QRectF();
-
- QGraphicsView* graphicsView = views.at(0);
int xOffset = graphicsView->horizontalScrollBar()->value();
int yOffset = graphicsView->verticalScrollBar()->value();
return view->mapRectFromScene(QRectF(QPointF(xOffset, yOffset), graphicsView->viewport()->size()));
@@ -291,6 +294,13 @@ QRectF PageClientQGraphicsWidget::windowRect() const
// The sceneRect is a good approximation of the size of the application, independent of the view.
return view->scene()->sceneRect();
}
+
+QGraphicsView* PageClientQGraphicsWidget::firstGraphicsView() const
+{
+ if (view->scene() && !view->scene()->views().isEmpty())
+ return view->scene()->views().first();
+ return 0;
+}
#endif // QT_NO_GRAPHICSVIEW
} // namespace WebCore