summaryrefslogtreecommitdiff
path: root/Source/WebKit/qt/Api/qgraphicswebview.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebKit/qt/Api/qgraphicswebview.cpp')
-rw-r--r--Source/WebKit/qt/Api/qgraphicswebview.cpp1197
1 files changed, 0 insertions, 1197 deletions
diff --git a/Source/WebKit/qt/Api/qgraphicswebview.cpp b/Source/WebKit/qt/Api/qgraphicswebview.cpp
deleted file mode 100644
index 84b4e801b..000000000
--- a/Source/WebKit/qt/Api/qgraphicswebview.cpp
+++ /dev/null
@@ -1,1197 +0,0 @@
-/*
- Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies)
- Copyright (C) 2009 Girish Ramakrishnan <girish@forwardbias.in>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
-
- You should have received a copy of the GNU Library General Public License
- along with this library; see the file COPYING.LIB. If not, write to
- the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
- Boston, MA 02110-1301, USA.
-*/
-
-#include "config.h"
-#include "qgraphicswebview.h"
-
-#if !defined(QT_NO_GRAPHICSVIEW)
-
-#include "qwebframe.h"
-#include "qwebframe_p.h"
-#include "qwebpage.h"
-#include "qwebpage_p.h"
-#include "Page.h"
-#include "PageClientQt.h"
-#include "Frame.h"
-#include "FrameView.h"
-#include "GraphicsContext.h"
-#include "IntRect.h"
-#include "TiledBackingStore.h"
-#include <qapplication.h>
-#include <qgraphicsscene.h>
-#include <qgraphicssceneevent.h>
-#include <qgraphicsview.h>
-#include <qscrollbar.h>
-#include <qstyleoption.h>
-#include <QtCore/qmetaobject.h>
-#include <QtCore/qsharedpointer.h>
-#include <QtCore/qtimer.h>
-#include <QtGui/qpixmapcache.h>
-
-#if defined(Q_WS_X11)
-#include <QX11Info>
-#endif
-#include <Settings.h>
-
-using namespace WebCore;
-
-class QGraphicsWebViewPrivate {
-public:
- QGraphicsWebViewPrivate(QGraphicsWebView* parent)
- : q(parent)
- , page(0)
- , resizesToContents(false)
- , renderHints(QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform) {}
-
- virtual ~QGraphicsWebViewPrivate();
-
- void syncLayers();
-
- void updateResizesToContentsForPage();
-
- void detachCurrentPage();
-
- void _q_doLoadFinished(bool success);
- void _q_contentsSizeChanged(const QSize&);
- void _q_scaleChanged();
-
- void _q_pageDestroyed();
-
- QGraphicsWebView* q;
- QWebPage* page;
- bool resizesToContents;
- QPainter::RenderHints renderHints;
-
- QGraphicsItemOverlay* overlay() const
- {
- if (!page || !page->d->client)
- return 0;
- return pageClient()->overlay;
- }
-
- PageClientQGraphicsWidget* pageClient() const
- {
- return static_cast<WebCore::PageClientQGraphicsWidget*> (page->d->client.data());
- }
-};
-
-QGraphicsWebViewPrivate::~QGraphicsWebViewPrivate()
-{
- detachCurrentPage();
-}
-
-void QGraphicsWebViewPrivate::syncLayers()
-{
-#if USE(ACCELERATED_COMPOSITING)
- pageClient()->syncLayers();
-#endif
-}
-
-void QGraphicsWebViewPrivate::_q_doLoadFinished(bool success)
-{
- // If the page had no title, still make sure it gets the signal
- if (q->title().isEmpty())
- emit q->urlChanged(q->url());
-
- emit q->loadFinished(success);
-}
-
-void QGraphicsWebViewPrivate::_q_pageDestroyed()
-{
- page = 0;
- q->setPage(0);
-}
-
-void QGraphicsWebViewPrivate::updateResizesToContentsForPage()
-{
- ASSERT(page);
- pageClient()->viewResizesToContents = resizesToContents;
- if (resizesToContents) {
- // resizes to contents mode requires preferred contents size to be set
- if (!page->preferredContentsSize().isValid())
- page->setPreferredContentsSize(QSize(960, 800));
-
- QObject::connect(page->mainFrame(), SIGNAL(contentsSizeChanged(QSize)),
- q, SLOT(_q_contentsSizeChanged(const QSize&)), Qt::UniqueConnection);
- } else {
- QObject::disconnect(page->mainFrame(), SIGNAL(contentsSizeChanged(QSize)),
- q, SLOT(_q_contentsSizeChanged(const QSize&)));
- }
- page->d->page->mainFrame()->view()->setPaintsEntireContents(resizesToContents);
- page->d->page->mainFrame()->view()->setDelegatesScrolling(resizesToContents);
-}
-
-void QGraphicsWebViewPrivate::_q_contentsSizeChanged(const QSize& size)
-{
- if (!resizesToContents)
- return;
- q->setGeometry(QRectF(q->geometry().topLeft(), size));
-}
-
-void QGraphicsWebViewPrivate::_q_scaleChanged()
-{
-#if USE(TILED_BACKING_STORE)
- if (!page)
- return;
- pageClient()->updateTiledBackingStoreScale();
-#endif
-}
-
-/*!
- \class QGraphicsWebView
- \brief The QGraphicsWebView class allows Web content to be added to a GraphicsView.
- \since 4.6
-
- An instance of this class renders Web content from a URL or supplied as data, using
- features of the QtWebKit module.
-
- If the width and height of the item are not set, they will default to 800 and 600,
- respectively. If the Web page contents is larger than that, scrollbars will be shown
- if not disabled explicitly.
-
- \section1 Browser Features
-
- Many of the functions, signals and properties provided by QWebView are also available
- for this item, making it simple to adapt existing code to use QGraphicsWebView instead
- of QWebView.
-
- The item uses a QWebPage object to perform the rendering of Web content, and this can
- be obtained with the page() function, enabling the document itself to be accessed and
- modified.
-
- As with QWebView, the item records the browsing history using a QWebHistory object,
- accessible using the history() function. The QWebSettings object that defines the
- configuration of the browser can be obtained with the settings() function, enabling
- features like plugin support to be customized for each item.
-
- \sa QWebView, QGraphicsTextItem
-*/
-
-/*!
- \fn void QGraphicsWebView::titleChanged(const QString &title)
-
- This signal is emitted whenever the \a title of the main frame changes.
-
- \sa title()
-*/
-
-/*!
- \fn void QGraphicsWebView::urlChanged(const QUrl &url)
-
- This signal is emitted when the \a url of the view changes.
-
- \sa url(), load()
-*/
-
-/*!
- \fn void QGraphicsWebView::iconChanged()
-
- This signal is emitted whenever the icon of the page is loaded or changes.
-
- In order for icons to be loaded, you will need to set an icon database path
- using QWebSettings::setIconDatabasePath().
-
- \sa icon(), QWebSettings::setIconDatabasePath()
-*/
-
-/*!
- \fn void QGraphicsWebView::loadStarted()
-
- This signal is emitted when a new load of the page is started.
-
- \sa loadProgress(), loadFinished()
-*/
-
-/*!
- \fn void QGraphicsWebView::loadFinished(bool ok)
-
- This signal is emitted when a load of the page is finished.
- \a ok will indicate whether the load was successful or any error occurred.
-
- \sa loadStarted()
-*/
-
-/*!
- Constructs an empty QGraphicsWebView with parent \a parent.
-
- \sa load()
-*/
-QGraphicsWebView::QGraphicsWebView(QGraphicsItem* parent)
- : QGraphicsWidget(parent)
- , d(new QGraphicsWebViewPrivate(this))
-{
- setFlag(QGraphicsItem::ItemUsesExtendedStyleOption, true);
- setAcceptDrops(true);
- setAcceptHoverEvents(true);
- setAcceptTouchEvents(true);
- setFocusPolicy(Qt::StrongFocus);
- setFlag(QGraphicsItem::ItemClipsChildrenToShape, true);
-#if USE(TILED_BACKING_STORE)
- QObject::connect(this, SIGNAL(scaleChanged()), this, SLOT(_q_scaleChanged()));
-#endif
-}
-
-/*!
- Destroys the item.
-*/
-QGraphicsWebView::~QGraphicsWebView()
-{
- delete d;
-}
-
-/*!
- Returns a pointer to the underlying web page.
-
- \sa setPage()
-*/
-QWebPage* QGraphicsWebView::page() const
-{
- if (!d->page) {
- QGraphicsWebView* that = const_cast<QGraphicsWebView*>(this);
- QWebPage* page = new QWebPage(that);
-
- // Default to not having a background, in the case
- // the page doesn't provide one.
- QPalette palette = QApplication::palette();
- palette.setBrush(QPalette::Base, QColor::fromRgbF(0, 0, 0, 0));
- page->setPalette(palette);
-
- that->setPage(page);
- }
-
- return d->page;
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::paint(QPainter* painter, const QStyleOptionGraphicsItem* option, QWidget*)
-{
- QPainter::RenderHints oldHints = painter->renderHints();
- painter->setRenderHints(oldHints | d->renderHints);
-#if USE(TILED_BACKING_STORE)
- if (WebCore::TiledBackingStore* backingStore = QWebFramePrivate::core(page()->mainFrame())->tiledBackingStore()) {
- // FIXME: We should set the backing store viewport earlier than in paint
- backingStore->coverWithTilesIfNeeded();
- // QWebFrame::render is a public API, bypass it for tiled rendering so behavior does not need to change.
- WebCore::GraphicsContext context(painter);
- page()->mainFrame()->d->renderFromTiledBackingStore(&context, option->exposedRect.toAlignedRect());
- painter->setRenderHints(oldHints);
- return;
- }
-#endif
- page()->mainFrame()->render(painter, QWebFrame::AllLayers, option->exposedRect.toRect());
- painter->setRenderHints(oldHints);
-}
-
-/*! \reimp
-*/
-bool QGraphicsWebView::sceneEvent(QEvent* event)
-{
- // Re-implemented in order to allows fixing event-related bugs in patch releases.
-
- if (d->page && (event->type() == QEvent::TouchBegin
- || event->type() == QEvent::TouchEnd
- || event->type() == QEvent::TouchUpdate
- || event->type() == QEvent::TouchCancel
- )) {
- d->page->event(event);
-
- // Always return true so that we'll receive also TouchUpdate and TouchEnd events
- return true;
- }
-
- return QGraphicsWidget::sceneEvent(event);
-}
-
-/*! \reimp
-*/
-QVariant QGraphicsWebView::itemChange(GraphicsItemChange change, const QVariant& value)
-{
- switch (change) {
- // Differently from QWebView, it is interesting to QGraphicsWebView to handle
- // post mouse cursor change notifications. Reason: 'ItemCursorChange' is sent
- // as the first action in QGraphicsItem::setCursor implementation, and at that
- // item widget's cursor has not been effectively changed yet.
- // After cursor is properly set (at 'ItemCursorHasChanged' emission time), we
- // fire 'CursorChange'.
- case ItemCursorChange:
- return value;
- case ItemCursorHasChanged: {
- QEvent event(QEvent::CursorChange);
- QApplication::sendEvent(this, &event);
- return value;
- }
- default:
- break;
- }
-
- return QGraphicsWidget::itemChange(change, value);
-}
-
-/*! \reimp
-*/
-QSizeF QGraphicsWebView::sizeHint(Qt::SizeHint which, const QSizeF& constraint) const
-{
- if (which == Qt::PreferredSize)
- return QSizeF(800, 600); // ###
- return QGraphicsWidget::sizeHint(which, constraint);
-}
-
-/*! \reimp
-*/
-QVariant QGraphicsWebView::inputMethodQuery(Qt::InputMethodQuery query) const
-{
- if (d->page)
- return d->page->inputMethodQuery(query);
- return QVariant();
-}
-
-/*!
- \property QGraphicsWebView::renderHints
- \since 4.8
- \brief the default render hints for the view
-
- These hints are used to initialize QPainter before painting the Web page.
-
- QPainter::TextAntialiasing and QPainter::SmoothPixmapTransform are enabled by default and will be
- used to render the item in addition of what has been set on the painter given by QGraphicsScene.
-
- \sa QPainter::renderHints()
-*/
-
-/*!
- \since 4.8
- Returns the render hints used by the view to render content.
-
- \sa QPainter::renderHints()
-*/
-QPainter::RenderHints QGraphicsWebView::renderHints() const
-{
- return d->renderHints;
-}
-
-/*!
- \since 4.8
- Sets the render hints used by the view to the specified \a hints.
-
- \sa QPainter::setRenderHints()
-*/
-void QGraphicsWebView::setRenderHints(QPainter::RenderHints hints)
-{
- if (hints == d->renderHints)
- return;
- d->renderHints = hints;
- update();
-}
-
-/*!
- \since 4.8
- If \a enabled is true, enables the specified render \a hint; otherwise
- disables it.
-
- \sa renderHints, QPainter::renderHints()
-*/
-void QGraphicsWebView::setRenderHint(QPainter::RenderHint hint, bool enabled)
-{
- QPainter::RenderHints oldHints = d->renderHints;
- if (enabled)
- d->renderHints |= hint;
- else
- d->renderHints &= ~hint;
- if (oldHints != d->renderHints)
- update();
-}
-
-/*! \reimp
-*/
-bool QGraphicsWebView::event(QEvent* event)
-{
- // Re-implemented in order to allows fixing event-related bugs in patch releases.
-
- if (d->page) {
- if (event->type() == QEvent::PaletteChange)
- d->page->setPalette(palette());
-#ifndef QT_NO_CONTEXTMENU
- if (event->type() == QEvent::GraphicsSceneContextMenu) {
- if (!isEnabled())
- return false;
-
- QGraphicsSceneContextMenuEvent* ev = static_cast<QGraphicsSceneContextMenuEvent*>(event);
- QContextMenuEvent fakeEvent(QContextMenuEvent::Reason(ev->reason()), ev->pos().toPoint());
- if (d->page->swallowContextMenuEvent(&fakeEvent)) {
- event->accept();
- return true;
- }
- d->page->updatePositionDependentActions(fakeEvent.pos());
- } else
-#endif // QT_NO_CONTEXTMENU
- {
-#ifndef QT_NO_CURSOR
- if (event->type() == QEvent::CursorChange) {
- // An unsetCursor will set the cursor to Qt::ArrowCursor.
- // Thus this cursor change might be a QWidget::unsetCursor()
- // If this is not the case and it came from WebCore, the
- // QWebPageClient already has set its cursor internally
- // to Qt::ArrowCursor, so updating the cursor is always
- // right, as it falls back to the last cursor set by
- // WebCore.
- // FIXME: Add a QEvent::CursorUnset or similar to Qt.
- if (cursor().shape() == Qt::ArrowCursor)
- d->page->d->client->resetCursor();
- }
-#endif
- }
- }
- return QGraphicsWidget::event(event);
-}
-
-void QGraphicsWebViewPrivate::detachCurrentPage()
-{
- if (!page)
- return;
-
- page->d->view = 0;
- page->d->client.reset();
-
- // if the page was created by us, we own it and need to
- // destroy it as well.
-
- if (page->parent() == q)
- delete page;
- else
- page->disconnect(q);
-
- page = 0;
-}
-
-/*!
- Makes \a page the new web page of the web graphicsitem.
-
- The parent QObject of the provided page remains the owner
- of the object. If the current document is a child of the web
- view, it will be deleted.
-
- \sa page()
-*/
-void QGraphicsWebView::setPage(QWebPage* page)
-{
- if (d->page == page)
- return;
-
- d->detachCurrentPage();
- d->page = page;
-
- if (!d->page)
- return;
-
- d->page->d->client.reset(new PageClientQGraphicsWidget(this, page));
-
- if (d->overlay())
- d->overlay()->prepareGraphicsItemGeometryChange();
-
- QSize size = geometry().size().toSize();
- page->setViewportSize(size);
-
- if (d->resizesToContents)
- d->updateResizesToContentsForPage();
-
- QWebFrame* mainFrame = d->page->mainFrame();
-
- connect(mainFrame, SIGNAL(titleChanged(QString)),
- this, SIGNAL(titleChanged(QString)));
- connect(mainFrame, SIGNAL(iconChanged()),
- this, SIGNAL(iconChanged()));
- connect(mainFrame, SIGNAL(urlChanged(QUrl)),
- this, SIGNAL(urlChanged(QUrl)));
- connect(d->page, SIGNAL(loadStarted()),
- this, SIGNAL(loadStarted()));
- connect(d->page, SIGNAL(loadProgress(int)),
- this, SIGNAL(loadProgress(int)));
- connect(d->page, SIGNAL(loadFinished(bool)),
- this, SLOT(_q_doLoadFinished(bool)));
- connect(d->page, SIGNAL(statusBarMessage(QString)),
- this, SIGNAL(statusBarMessage(QString)));
- connect(d->page, SIGNAL(linkClicked(QUrl)),
- this, SIGNAL(linkClicked(QUrl)));
- connect(d->page, SIGNAL(destroyed()),
- this, SLOT(_q_pageDestroyed()));
-#if !defined(QT_NO_IM) && (defined(Q_WS_X11) || defined(Q_WS_QWS))
- connect(d->page, SIGNAL(microFocusChanged()),
- this, SLOT(updateMicroFocus()));
-#endif
-}
-
-/*!
- \property QGraphicsWebView::url
- \brief the url of the web page currently viewed
-
- Setting this property clears the view and loads the URL.
-
- By default, this property contains an empty, invalid URL.
-
- \sa load(), urlChanged()
-*/
-
-void QGraphicsWebView::setUrl(const QUrl &url)
-{
- page()->mainFrame()->setUrl(url);
-}
-
-QUrl QGraphicsWebView::url() const
-{
- if (d->page)
- return d->page->mainFrame()->url();
-
- return QUrl();
-}
-
-/*!
- \property QGraphicsWebView::title
- \brief the title of the web page currently viewed
-
- By default, this property contains an empty string.
-
- \sa titleChanged()
-*/
-QString QGraphicsWebView::title() const
-{
- if (d->page)
- return d->page->mainFrame()->title();
-
- return QString();
-}
-
-/*!
- \property QGraphicsWebView::icon
- \brief the icon associated with the web page currently viewed
-
- By default, this property contains a null icon.
-
- \sa iconChanged(), QWebSettings::iconForUrl()
-*/
-QIcon QGraphicsWebView::icon() const
-{
- if (d->page)
- return d->page->mainFrame()->icon();
-
- return QIcon();
-}
-
-/*!
- \property QGraphicsWebView::zoomFactor
- \brief the zoom factor for the view
-*/
-
-void QGraphicsWebView::setZoomFactor(qreal factor)
-{
- if (factor == page()->mainFrame()->zoomFactor())
- return;
-
- page()->mainFrame()->setZoomFactor(factor);
-}
-
-qreal QGraphicsWebView::zoomFactor() const
-{
- return page()->mainFrame()->zoomFactor();
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::updateGeometry()
-{
- if (d->overlay())
- d->overlay()->prepareGraphicsItemGeometryChange();
-
- QGraphicsWidget::updateGeometry();
-
- if (!d->page)
- return;
-
- QSize size = geometry().size().toSize();
- d->page->setViewportSize(size);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::setGeometry(const QRectF& rect)
-{
- QGraphicsWidget::setGeometry(rect);
-
- if (d->overlay())
- d->overlay()->prepareGraphicsItemGeometryChange();
-
- if (!d->page)
- return;
-
- // NOTE: call geometry() as setGeometry ensures that
- // the geometry is within legal bounds (minimumSize, maximumSize)
- QSize size = geometry().size().toSize();
- d->page->setViewportSize(size);
-}
-
-/*!
- Convenience slot that stops loading the document.
-
- \sa reload(), loadFinished()
-*/
-void QGraphicsWebView::stop()
-{
- if (d->page)
- d->page->triggerAction(QWebPage::Stop);
-}
-
-/*!
- Convenience slot that loads the previous document in the list of documents
- built by navigating links. Does nothing if there is no previous document.
-
- \sa forward()
-*/
-void QGraphicsWebView::back()
-{
- if (d->page)
- d->page->triggerAction(QWebPage::Back);
-}
-
-/*!
- Convenience slot that loads the next document in the list of documents
- built by navigating links. Does nothing if there is no next document.
-
- \sa back()
-*/
-void QGraphicsWebView::forward()
-{
- if (d->page)
- d->page->triggerAction(QWebPage::Forward);
-}
-
-/*!
- Reloads the current document.
-
- \sa stop(), loadStarted()
-*/
-void QGraphicsWebView::reload()
-{
- if (d->page)
- d->page->triggerAction(QWebPage::Reload);
-}
-
-/*!
- Loads the specified \a url and displays it.
-
- \note The view remains the same until enough data has arrived to display the new \a url.
-
- \sa setUrl(), url(), urlChanged()
-*/
-void QGraphicsWebView::load(const QUrl& url)
-{
- page()->mainFrame()->load(url);
-}
-
-/*!
- \fn void QGraphicsWebView::load(const QNetworkRequest &request, QNetworkAccessManager::Operation operation, const QByteArray &body)
-
- Loads a network request, \a request, using the method specified in \a operation.
-
- \a body is optional and is only used for POST operations.
-
- \note The view remains the same until enough data has arrived to display the new url.
-
- \sa url(), urlChanged()
-*/
-
-void QGraphicsWebView::load(const QNetworkRequest& request,
- QNetworkAccessManager::Operation operation,
- const QByteArray& body)
-{
- page()->mainFrame()->load(request, operation, body);
-}
-
-/*!
- Sets the content of the web view to the specified \a html.
-
- External objects such as stylesheets or images referenced in the HTML
- document are located relative to \a baseUrl.
-
- The \a html is loaded immediately; external objects are loaded asynchronously.
-
- When using this method, WebKit assumes that external resources such as
- JavaScript programs or style sheets are encoded in UTF-8 unless otherwise
- specified. For example, the encoding of an external script can be specified
- through the charset attribute of the HTML script tag. Alternatively, the
- encoding can also be specified by the web server.
-
- This is a convenience function equivalent to setContent(html, "text/html", baseUrl).
-
- \warning This function works only for HTML, for other mime types (i.e. XHTML, SVG)
- setContent() should be used instead.
-
- \sa load(), setContent(), QWebFrame::toHtml(), QWebFrame::setContent()
-*/
-void QGraphicsWebView::setHtml(const QString& html, const QUrl& baseUrl)
-{
- page()->mainFrame()->setHtml(html, baseUrl);
-}
-
-/*!
- Sets the content of the web graphicsitem to the specified content \a data. If the \a mimeType argument
- is empty it is currently assumed that the content is HTML but in future versions we may introduce
- auto-detection.
-
- External objects referenced in the content are located relative to \a baseUrl.
-
- The \a data is loaded immediately; external objects are loaded asynchronously.
-
- \sa load(), setHtml(), QWebFrame::toHtml()
-*/
-void QGraphicsWebView::setContent(const QByteArray& data, const QString& mimeType, const QUrl& baseUrl)
-{
- page()->mainFrame()->setContent(data, mimeType, baseUrl);
-}
-
-/*!
- Returns a pointer to the view's history of navigated web pages.
-
- It is equivalent to
-
- \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 0
-*/
-QWebHistory* QGraphicsWebView::history() const
-{
- return page()->history();
-}
-
-/*!
- \property QGraphicsWebView::modified
- \brief whether the document was modified by the user
-
- Parts of HTML documents can be editable for example through the
- \c{contenteditable} attribute on HTML elements.
-
- By default, this property is false.
-*/
-bool QGraphicsWebView::isModified() const
-{
- if (d->page)
- return d->page->isModified();
- return false;
-}
-
-/*!
- Returns a pointer to the view/page specific settings object.
-
- It is equivalent to
-
- \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 1
-
- \sa QWebSettings::globalSettings()
-*/
-QWebSettings* QGraphicsWebView::settings() const
-{
- return page()->settings();
-}
-
-/*!
- Returns a pointer to a QAction that encapsulates the specified web action \a action.
-*/
-QAction *QGraphicsWebView::pageAction(QWebPage::WebAction action) const
-{
-#ifdef QT_NO_ACTION
- Q_UNUSED(action)
- return 0;
-#else
- return page()->action(action);
-#endif
-}
-
-/*!
- Triggers the specified \a action. If it is a checkable action the specified
- \a checked state is assumed.
-
- \sa pageAction()
-*/
-void QGraphicsWebView::triggerPageAction(QWebPage::WebAction action, bool checked)
-{
- page()->triggerAction(action, checked);
-}
-
-/*!
- Finds the specified string, \a subString, in the page, using the given \a options.
-
- If the HighlightAllOccurrences flag is passed, the function will highlight all occurrences
- that exist in the page. All subsequent calls will extend the highlight, rather than
- replace it, with occurrences of the new string.
-
- If the HighlightAllOccurrences flag is not passed, the function will select an occurrence
- and all subsequent calls will replace the current occurrence with the next one.
-
- To clear the selection, just pass an empty string.
-
- Returns true if \a subString was found; otherwise returns false.
-
- \sa QWebPage::selectedText(), QWebPage::selectionChanged()
-*/
-bool QGraphicsWebView::findText(const QString &subString, QWebPage::FindFlags options)
-{
- if (d->page)
- return d->page->findText(subString, options);
- return false;
-}
-
-/*!
- \property QGraphicsWebView::resizesToContents
- \brief whether the size of the QGraphicsWebView and its viewport changes to match the contents size
- \since 4.7
-
- If this property is set, the QGraphicsWebView will automatically change its
- size to match the size of the main frame contents. As a result the top level frame
- will never have scrollbars. It will also make CSS fixed positioning to behave like absolute positioning
- with elements positioned relative to the document instead of the viewport.
-
- This property should be used in conjunction with the QWebPage::preferredContentsSize property.
- If not explicitly set, the preferredContentsSize is automatically set to a reasonable value.
-
- \sa QWebPage::setPreferredContentsSize()
-*/
-void QGraphicsWebView::setResizesToContents(bool enabled)
-{
- if (d->resizesToContents == enabled)
- return;
- d->resizesToContents = enabled;
- if (d->page)
- d->updateResizesToContentsForPage();
-}
-
-bool QGraphicsWebView::resizesToContents() const
-{
- return d->resizesToContents;
-}
-
-/*!
- \property QGraphicsWebView::tiledBackingStoreFrozen
- \brief whether the tiled backing store updates its contents
- \since 4.7
-
- If the tiled backing store is enabled using QWebSettings::TiledBackingStoreEnabled attribute, this property
- can be used to disable backing store updates temporarily. This can be useful for example for running
- a smooth animation that changes the scale of the QGraphicsWebView.
-
- When the backing store is unfrozen, its contents will be automatically updated to match the current
- state of the document. If the QGraphicsWebView scale was changed, the backing store is also
- re-rendered using the new scale.
-
- If the tiled backing store is not enabled, this property does nothing.
-
- \sa QWebSettings::TiledBackingStoreEnabled
- \sa QGraphicsObject::scale
-*/
-bool QGraphicsWebView::isTiledBackingStoreFrozen() const
-{
-#if USE(TILED_BACKING_STORE)
- WebCore::TiledBackingStore* backingStore = QWebFramePrivate::core(page()->mainFrame())->tiledBackingStore();
- if (!backingStore)
- return false;
- return backingStore->contentsFrozen();
-#else
- return false;
-#endif
-}
-
-void QGraphicsWebView::setTiledBackingStoreFrozen(bool frozen)
-{
-#if USE(TILED_BACKING_STORE)
- WebCore::TiledBackingStore* backingStore = QWebFramePrivate::core(page()->mainFrame())->tiledBackingStore();
- if (!backingStore)
- return;
- backingStore->setContentsFrozen(frozen);
-#else
- UNUSED_PARAM(frozen);
-#endif
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::hoverMoveEvent(QGraphicsSceneHoverEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- QMouseEvent me = QMouseEvent(QEvent::MouseMove,
- ev->pos().toPoint(), Qt::NoButton,
- Qt::NoButton, Qt::NoModifier);
- d->page->event(&me);
- ev->setAccepted(accepted);
- }
-
- if (!ev->isAccepted())
- QGraphicsItem::hoverMoveEvent(ev);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::hoverLeaveEvent(QGraphicsSceneHoverEvent* ev)
-{
- Q_UNUSED(ev);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::mouseMoveEvent(QGraphicsSceneMouseEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-
- if (!ev->isAccepted())
- QGraphicsItem::mouseMoveEvent(ev);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::mousePressEvent(QGraphicsSceneMouseEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-
- if (!ev->isAccepted())
- QGraphicsItem::mousePressEvent(ev);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::mouseReleaseEvent(QGraphicsSceneMouseEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-
- if (!ev->isAccepted())
- QGraphicsItem::mouseReleaseEvent(ev);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-
- if (!ev->isAccepted())
- QGraphicsItem::mouseDoubleClickEvent(ev);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::keyPressEvent(QKeyEvent* ev)
-{
- if (d->page)
- d->page->event(ev);
-
- if (!ev->isAccepted())
- QGraphicsItem::keyPressEvent(ev);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::keyReleaseEvent(QKeyEvent* ev)
-{
- if (d->page)
- d->page->event(ev);
-
- if (!ev->isAccepted())
- QGraphicsItem::keyReleaseEvent(ev);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::focusInEvent(QFocusEvent* ev)
-{
- if (d->page)
- d->page->event(ev);
- else
- QGraphicsItem::focusInEvent(ev);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::focusOutEvent(QFocusEvent* ev)
-{
- if (d->page)
- d->page->event(ev);
- else
- QGraphicsItem::focusOutEvent(ev);
-}
-
-/*! \reimp
-*/
-bool QGraphicsWebView::focusNextPrevChild(bool next)
-{
- if (d->page)
- return d->page->focusNextPrevChild(next);
-
- return QGraphicsWidget::focusNextPrevChild(next);
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::dragEnterEvent(QGraphicsSceneDragDropEvent* ev)
-{
-#ifndef QT_NO_DRAGANDDROP
- if (d->page)
- d->page->event(ev);
-#else
- Q_UNUSED(ev);
-#endif
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::dragLeaveEvent(QGraphicsSceneDragDropEvent* ev)
-{
-#ifndef QT_NO_DRAGANDDROP
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-
- if (!ev->isAccepted())
- QGraphicsWidget::dragLeaveEvent(ev);
-#else
- Q_UNUSED(ev);
-#endif
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::dragMoveEvent(QGraphicsSceneDragDropEvent* ev)
-{
-#ifndef QT_NO_DRAGANDDROP
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-
- if (!ev->isAccepted())
- QGraphicsWidget::dragMoveEvent(ev);
-#else
- Q_UNUSED(ev);
-#endif
-}
-
-/*! \reimp
-*/
-void QGraphicsWebView::dropEvent(QGraphicsSceneDragDropEvent* ev)
-{
-#ifndef QT_NO_DRAGANDDROP
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-
- if (!ev->isAccepted())
- QGraphicsWidget::dropEvent(ev);
-#else
- Q_UNUSED(ev);
-#endif
-}
-
-#ifndef QT_NO_CONTEXTMENU
-/*! \reimp
-*/
-void QGraphicsWebView::contextMenuEvent(QGraphicsSceneContextMenuEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-}
-#endif // QT_NO_CONTEXTMENU
-
-#ifndef QT_NO_WHEELEVENT
-/*! \reimp
-*/
-void QGraphicsWebView::wheelEvent(QGraphicsSceneWheelEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-
- if (!ev->isAccepted())
- QGraphicsItem::wheelEvent(ev);
-}
-#endif // QT_NO_WHEELEVENT
-
-/*! \reimp
-*/
-void QGraphicsWebView::inputMethodEvent(QInputMethodEvent* ev)
-{
- if (d->page)
- d->page->event(ev);
-
- if (!ev->isAccepted())
- QGraphicsItem::inputMethodEvent(ev);
-}
-
-/*!
- \fn void QGraphicsWebView::statusBarMessage(const QString& text)
-
- This signal is emitted when the statusbar \a text is changed by the page.
-*/
-
-/*!
- \fn void QGraphicsWebView::loadProgress(int progress)
-
- This signal is emitted every time an element in the web page
- completes loading and the overall loading progress advances.
-
- This signal tracks the progress of all child frames.
-
- The current value is provided by \a progress and scales from 0 to 100,
- which is the default range of QProgressBar.
-
- \sa loadStarted(), loadFinished()
-*/
-
-/*!
- \fn void QGraphicsWebView::linkClicked(const QUrl &url)
-
- This signal is emitted whenever the user clicks on a link and the page's linkDelegationPolicy
- property is set to delegate the link handling for the specified \a url.
-
- \sa QWebPage::linkDelegationPolicy()
-*/
-
-#endif // QT_NO_GRAPHICSVIEW
-
-#include "moc_qgraphicswebview.cpp"