summaryrefslogtreecommitdiff
path: root/Source/WebKit/qt/Api/qwebview.cpp
diff options
context:
space:
mode:
authorSimon Hausmann <simon.hausmann@digia.com>2012-11-30 16:58:06 +0100
committerSimon Hausmann <simon.hausmann@digia.com>2012-11-30 17:03:09 +0100
commit32ea33253afbbdefd2680aa95ab5f57455272ae7 (patch)
tree2389569585b666c310fbb36d3fb8e6ab94462967 /Source/WebKit/qt/Api/qwebview.cpp
parent41c25f231cbca1babc445187283524cc6c751c71 (diff)
downloadqtwebkit-32ea33253afbbdefd2680aa95ab5f57455272ae7.tar.gz
Imported WebKit commit 6a4a1d32e1d779548c726c4826cba9d69eb87601 (http://svn.webkit.org/repository/webkit/trunk@136242)
Final import for the Qt 5.x series that implements the QtWebKit / QtWebKitWidgets split Extra fixes will be cherry-picked. Change-Id: I844f1ebb99c6d6b75db31d6538c2acd628e79681 Reviewed-by: Simon Hausmann <simon.hausmann@digia.com>
Diffstat (limited to 'Source/WebKit/qt/Api/qwebview.cpp')
-rw-r--r--Source/WebKit/qt/Api/qwebview.cpp1129
1 files changed, 0 insertions, 1129 deletions
diff --git a/Source/WebKit/qt/Api/qwebview.cpp b/Source/WebKit/qt/Api/qwebview.cpp
deleted file mode 100644
index 2eda6a18e..000000000
--- a/Source/WebKit/qt/Api/qwebview.cpp
+++ /dev/null
@@ -1,1129 +0,0 @@
-/*
- Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies)
- Copyright (C) 2008 Holger Hans Peter Freyther
- 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 "qwebview.h"
-
-#include "Page.h"
-#include "QWebPageClient.h"
-#include "Settings.h"
-#include "qwebframe.h"
-#include "qwebpage_p.h"
-#include "qbitmap.h"
-#include "qevent.h"
-#include "qpainter.h"
-#if HAVE(QTPRINTSUPPORT)
-#include "qprinter.h"
-#endif
-#include "qdir.h"
-#include "qfile.h"
-#ifndef QT_NO_ACCESSIBILITY
-#include "qwebviewaccessible_p.h"
-#endif
-
-class QWebViewPrivate {
-public:
- QWebViewPrivate(QWebView *view)
- : view(view)
- , page(0)
- , renderHints(QPainter::TextAntialiasing | QPainter::SmoothPixmapTransform)
- {
- Q_ASSERT(view);
- }
-
- virtual ~QWebViewPrivate();
-
- void _q_pageDestroyed();
- void detachCurrentPage();
-
- QWebView *view;
- QWebPage *page;
-
- QPainter::RenderHints renderHints;
-};
-
-QWebViewPrivate::~QWebViewPrivate()
-{
- detachCurrentPage();
-}
-
-void QWebViewPrivate::_q_pageDestroyed()
-{
- page = 0;
- view->setPage(0);
-}
-
-/*!
- \class QWebView
- \since 4.4
- \brief The QWebView class provides a widget that is used to view and edit
- web documents.
- \ingroup advanced
-
- \inmodule QtWebKit
-
- QWebView is the main widget component of the QtWebKit web browsing module.
- It can be used in various applications to display web content live from the
- Internet.
-
- The image below shows QWebView previewed in \QD with a Nokia website.
-
- \image qwebview-url.png
-
- A web site can be loaded onto QWebView with the load() function. Like all
- Qt widgets, the show() function must be invoked in order to display
- QWebView. The snippet below illustrates this:
-
- \snippet webkitsnippets/simple/main.cpp Using QWebView
-
- Alternatively, setUrl() can also be used to load a web site. If you have
- the HTML content readily available, you can use setHtml() instead.
-
- The loadStarted() signal is emitted when the view begins loading. The
- loadProgress() signal, on the other hand, is emitted whenever an element of
- the web view completes loading, such as an embedded image, a script, etc.
- Finally, the loadFinished() signal is emitted when the view has loaded
- completely. It's argument - either \c true or \c false - indicates
- load success or failure.
-
- The page() function returns a pointer to the web page object. See
- \l{Elements of QWebView} for an explanation of how the web page
- is related to the view. To modify your web view's settings, you can access
- the QWebSettings object with the settings() function. With QWebSettings,
- you can change the default fonts, enable or disable features such as
- JavaScript and plugins.
-
- The title of an HTML document can be accessed with the title() property.
- Additionally, a web site may also specify an icon, which can be accessed
- using the icon() property. If the title or the icon changes, the corresponding
- titleChanged() and iconChanged() signals will be emitted. The
- textSizeMultiplier() property can be used to change the overall size of
- the text displayed in the web view.
-
- If you require a custom context menu, you can implement it by reimplementing
- \l{QWidget::}{contextMenuEvent()} and populating your QMenu with the actions
- obtained from pageAction(). More functionality such as reloading the view,
- copying selected text to the clipboard, or pasting into the view, is also
- encapsulated within the QAction objects returned by pageAction(). These
- actions can be programmatically triggered using triggerPageAction().
- Alternatively, the actions can be added to a toolbar or a menu directly.
- QWebView maintains the state of the returned actions but allows
- modification of action properties such as \l{QAction::}{text} or
- \l{QAction::}{icon}.
-
- A QWebView can be printed onto a QPrinter using the print() function.
- This function is marked as a slot and can be conveniently connected to
- \l{QPrintPreviewDialog}'s \l{QPrintPreviewDialog::}{paintRequested()}
- signal.
-
- If you want to provide support for web sites that allow the user to open
- new windows, such as pop-up windows, you can subclass QWebView and
- reimplement the createWindow() function.
-
- \section1 Elements of QWebView
-
- QWebView consists of other objects such as QWebFrame and QWebPage. The
- flowchart below shows these elements are related.
-
- \image qwebview-diagram.png
-
- \note It is possible to use QWebPage and QWebFrame, without using QWebView,
- if you do not require QWidget attributes. Nevertheless, QtWebKit depends
- on QtGui, so you should use a QApplication instead of QCoreApplication.
-
- \sa {Previewer Example}, {Web Browser}, {Form Extractor Example},
- {Google Chat Example}, {Fancy Browser Example}
-*/
-
-#ifndef QT_NO_ACCESSIBILITY
-static QAccessibleInterface* accessibleInterfaceFactory(const QString& key, QObject* object)
-{
- Q_UNUSED(key)
-
- if (QWebPage* page = qobject_cast<QWebPage*>(object))
- return new QWebPageAccessible(page);
- if (QWebView* view = qobject_cast<QWebView*>(object))
- return new QWebViewAccessible(view);
- if (QWebFrame* frame = qobject_cast<QWebFrame*>(object))
- return new QWebFrameAccessible(frame);
- return 0;
-}
-#endif
-
-/*!
- Constructs an empty QWebView with parent \a parent.
-
- \sa load()
-*/
-QWebView::QWebView(QWidget *parent)
- : QWidget(parent)
-{
- d = new QWebViewPrivate(this);
-
-#if !defined(Q_WS_QWS)
- setAttribute(Qt::WA_InputMethodEnabled);
-#endif
-
- setAttribute(Qt::WA_AcceptTouchEvents);
- setAcceptDrops(true);
-
- setMouseTracking(true);
- setFocusPolicy(Qt::WheelFocus);
-
-#ifndef QT_NO_ACCESSIBILITY
- QAccessible::installFactory(accessibleInterfaceFactory);
-#endif
-}
-
-/*!
- Destroys the web view.
-*/
-QWebView::~QWebView()
-{
- delete d;
-}
-
-/*!
- Returns a pointer to the underlying web page.
-
- \sa setPage()
-*/
-QWebPage *QWebView::page() const
-{
- if (!d->page) {
- QWebView *that = const_cast<QWebView *>(this);
- that->setPage(new QWebPage(that));
- }
- return d->page;
-}
-
-void QWebViewPrivate::detachCurrentPage()
-{
- if (!page)
- return;
-
- page->d->view = 0;
-
- // if the page client is the special client constructed for
- // delegating the responsibilities to a QWidget, we need
- // to destroy it.
-
- if (page->d->client && page->d->client->isQWidgetClient())
- page->d->client.reset();
-
- page->d->client.take();
-
- // if the page was created by us, we own it and need to
- // destroy it as well.
-
- if (page->parent() == view)
- delete page;
- else
- page->disconnect(view);
-
- page = 0;
-}
-
-/*!
- Makes \a page the new web page of the web view.
-
- The parent QObject of the provided page remains the owner
- of the object. If the current page is a child of the web
- view, it will be deleted.
-
- \sa page()
-*/
-void QWebView::setPage(QWebPage* page)
-{
- if (d->page == page)
- return;
-
- d->detachCurrentPage();
- d->page = page;
-
- if (d->page) {
- d->page->setView(this);
- d->page->setPalette(palette());
- // #### connect signals
- 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, SIGNAL(loadFinished(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(selectionChanged()),
- this, SIGNAL(selectionChanged()));
-
- connect(d->page, SIGNAL(microFocusChanged()),
- this, SLOT(updateMicroFocus()));
- connect(d->page, SIGNAL(destroyed()),
- this, SLOT(_q_pageDestroyed()));
- }
- setAttribute(Qt::WA_OpaquePaintEvent, d->page);
- update();
-}
-
-/*!
- 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(), QUrl::fromUserInput()
-*/
-void QWebView::load(const QUrl &url)
-{
- page()->mainFrame()->load(url);
-}
-
-/*!
- \fn void QWebView::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 QWebView::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 QWebView::setHtml(const QString &html, const QUrl &baseUrl)
-{
- page()->mainFrame()->setHtml(html, baseUrl);
-}
-
-/*!
- Sets the content of the web view 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 QWebView::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 *QWebView::history() const
-{
- return page()->history();
-}
-
-/*!
- 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 *QWebView::settings() const
-{
- return page()->settings();
-}
-
-/*!
- \property QWebView::title
- \brief the title of the web page currently viewed
-
- By default, this property contains an empty string.
-
- \sa titleChanged()
-*/
-QString QWebView::title() const
-{
- if (d->page)
- return d->page->mainFrame()->title();
- return QString();
-}
-
-/*!
- \property QWebView::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 QWebView::setUrl(const QUrl &url)
-{
- page()->mainFrame()->setUrl(url);
-}
-
-QUrl QWebView::url() const
-{
- if (d->page)
- return d->page->mainFrame()->url();
- return QUrl();
-}
-
-/*!
- \property QWebView::icon
- \brief the icon associated with the web page currently viewed
-
- By default, this property contains a null icon.
-
- \sa iconChanged(), QWebSettings::iconForUrl()
-*/
-QIcon QWebView::icon() const
-{
- if (d->page)
- return d->page->mainFrame()->icon();
- return QIcon();
-}
-
-/*!
- \property QWebView::hasSelection
- \brief whether this page contains selected content or not.
-
- By default, this property is false.
-
- \sa selectionChanged()
-*/
-bool QWebView::hasSelection() const
-{
- if (d->page)
- return d->page->hasSelection();
- return false;
-}
-
-/*!
- \property QWebView::selectedText
- \brief the text currently selected
-
- By default, this property contains an empty string.
-
- \sa findText(), selectionChanged(), selectedHtml()
-*/
-QString QWebView::selectedText() const
-{
- if (d->page)
- return d->page->selectedText();
- return QString();
-}
-
-/*!
- \since 4.8
- \property QWebView::selectedHtml
- \brief the HTML currently selected
-
- By default, this property contains an empty string.
-
- \sa findText(), selectionChanged(), selectedText()
-*/
-QString QWebView::selectedHtml() const
-{
- if (d->page)
- return d->page->selectedHtml();
- return QString();
-}
-
-#ifndef QT_NO_ACTION
-/*!
- Returns a pointer to a QAction that encapsulates the specified web action \a action.
-*/
-QAction *QWebView::pageAction(QWebPage::WebAction action) const
-{
- return page()->action(action);
-}
-#endif
-
-/*!
- Triggers the specified \a action. If it is a checkable action the specified
- \a checked state is assumed.
-
- The following example triggers the copy action and therefore copies any
- selected text to the clipboard.
-
- \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 2
-
- \sa pageAction()
-*/
-void QWebView::triggerPageAction(QWebPage::WebAction action, bool checked)
-{
- page()->triggerAction(action, checked);
-}
-
-/*!
- \property QWebView::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 QWebView::isModified() const
-{
- if (d->page)
- return d->page->isModified();
- return false;
-}
-
-/*
-Qt::TextInteractionFlags QWebView::textInteractionFlags() const
-{
- // ### FIXME (add to page)
- return Qt::TextInteractionFlags();
-}
-*/
-
-/*
- \property QWebView::textInteractionFlags
- \brief how the view should handle user input
-
- Specifies how the user can interact with the text on the page.
-*/
-
-/*
-void QWebView::setTextInteractionFlags(Qt::TextInteractionFlags flags)
-{
- Q_UNUSED(flags)
- // ### FIXME (add to page)
-}
-*/
-
-/*!
- \reimp
-*/
-QSize QWebView::sizeHint() const
-{
- return QSize(800, 600); // ####...
-}
-
-/*!
- \property QWebView::zoomFactor
- \since 4.5
- \brief the zoom factor for the view
-*/
-
-void QWebView::setZoomFactor(qreal factor)
-{
- page()->mainFrame()->setZoomFactor(factor);
-}
-
-qreal QWebView::zoomFactor() const
-{
- return page()->mainFrame()->zoomFactor();
-}
-
-/*!
- \property QWebView::textSizeMultiplier
- \brief the scaling factor for all text in the frame
- \obsolete
-
- Use setZoomFactor instead, in combination with the
- ZoomTextOnly attribute in QWebSettings.
-
- \note Setting this property also enables the
- ZoomTextOnly attribute in QWebSettings.
-
- By default, this property contains a value of 1.0.
-*/
-
-/*!
- Sets the value of the multiplier used to scale the text in a Web page to
- the \a factor specified.
-*/
-void QWebView::setTextSizeMultiplier(qreal factor)
-{
- page()->mainFrame()->setTextSizeMultiplier(factor);
-}
-
-/*!
- Returns the value of the multiplier used to scale the text in a Web page.
-*/
-qreal QWebView::textSizeMultiplier() const
-{
- return page()->mainFrame()->textSizeMultiplier();
-}
-
-/*!
- \property QWebView::renderHints
- \since 4.6
- \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.
-
- \sa QPainter::renderHints()
-*/
-
-/*!
- \since 4.6
- Returns the render hints used by the view to render content.
-
- \sa QPainter::renderHints()
-*/
-QPainter::RenderHints QWebView::renderHints() const
-{
- return d->renderHints;
-}
-
-/*!
- \since 4.6
- Sets the render hints used by the view to the specified \a hints.
-
- \sa QPainter::setRenderHints()
-*/
-void QWebView::setRenderHints(QPainter::RenderHints hints)
-{
- if (hints == d->renderHints)
- return;
- d->renderHints = hints;
- update();
-}
-
-/*!
- \since 4.6
- If \a enabled is true, enables the specified render \a hint; otherwise
- disables it.
-
- \sa renderHints, QPainter::renderHints()
-*/
-void QWebView::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();
-}
-
-
-/*!
- 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 selectedText(), selectionChanged()
-*/
-bool QWebView::findText(const QString &subString, QWebPage::FindFlags options)
-{
- if (d->page)
- return d->page->findText(subString, options);
- return false;
-}
-
-/*! \reimp
-*/
-bool QWebView::event(QEvent *e)
-{
- if (d->page) {
-#ifndef QT_NO_CONTEXTMENU
- if (e->type() == QEvent::ContextMenu) {
- if (!isEnabled())
- return false;
- QContextMenuEvent *event = static_cast<QContextMenuEvent *>(e);
- if (d->page->swallowContextMenuEvent(event)) {
- e->accept();
- return true;
- }
- d->page->updatePositionDependentActions(event->pos());
- } else
-#endif // QT_NO_CONTEXTMENU
- if (e->type() == QEvent::ShortcutOverride) {
- d->page->event(e);
-#ifndef QT_NO_CURSOR
- } else if (e->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
- } else if (e->type() == QEvent::TouchBegin
- || e->type() == QEvent::TouchEnd
- || e->type() == QEvent::TouchUpdate
- || e->type() == QEvent::TouchCancel
- ) {
- d->page->event(e);
-
- // Always return true so that we'll receive also TouchUpdate and TouchEnd events
- return true;
- } else if (e->type() == QEvent::Leave)
- d->page->event(e);
- }
-
- return QWidget::event(e);
-}
-
-/*!
- Prints the main frame to the given \a printer.
-
- \sa QWebFrame::print(), QPrintPreviewDialog
-*/
-void QWebView::print(QPrinter *printer) const
-{
-#if !defined(QT_NO_PRINTER) && HAVE(QTPRINTSUPPORT)
- page()->mainFrame()->print(printer);
-#endif
-}
-
-/*!
- Convenience slot that stops loading the document.
-
- It is equivalent to
-
- \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 3
-
- \sa reload(), pageAction(), loadFinished()
-*/
-void QWebView::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.
-
- It is equivalent to
-
- \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 4
-
- \sa forward(), pageAction()
-*/
-void QWebView::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.
-
- It is equivalent to
-
- \snippet webkitsnippets/qtwebkit_qwebview_snippet.cpp 5
-
- \sa back(), pageAction()
-*/
-void QWebView::forward()
-{
- if (d->page)
- d->page->triggerAction(QWebPage::Forward);
-}
-
-/*!
- Reloads the current document.
-
- \sa stop(), pageAction(), loadStarted()
-*/
-void QWebView::reload()
-{
- if (d->page)
- d->page->triggerAction(QWebPage::Reload);
-}
-
-/*! \reimp
-*/
-void QWebView::resizeEvent(QResizeEvent *e)
-{
- if (d->page)
- d->page->setViewportSize(e->size());
-}
-
-/*! \reimp
-*/
-void QWebView::paintEvent(QPaintEvent *ev)
-{
- if (!d->page)
- return;
-#ifdef QWEBKIT_TIME_RENDERING
- QTime time;
- time.start();
-#endif
-
- QWebFrame *frame = d->page->mainFrame();
- QPainter p(this);
- p.setRenderHints(d->renderHints);
-
- frame->render(&p, ev->region());
-
-#ifdef QWEBKIT_TIME_RENDERING
- int elapsed = time.elapsed();
- qDebug() << "paint event on " << ev->region() << ", took to render = " << elapsed;
-#endif
-}
-
-/*!
- This function is called from the createWindow() method of the associated QWebPage,
- each time the page wants to create a new window of the given \a type. This might
- be the result, for example, of a JavaScript request to open a document in a new window.
-
- \note If the createWindow() method of the associated page is reimplemented, this
- method is not called, unless explicitly done so in the reimplementation.
-
- \note In the cases when the window creation is being triggered by JavaScript, apart from
- reimplementing this method application must also set the JavaScriptCanOpenWindows attribute
- of QWebSettings to true in order for it to get called.
-
- \sa QWebPage::createWindow(), QWebPage::acceptNavigationRequest()
-*/
-QWebView *QWebView::createWindow(QWebPage::WebWindowType type)
-{
- Q_UNUSED(type)
- return 0;
-}
-
-/*! \reimp
-*/
-void QWebView::mouseMoveEvent(QMouseEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-}
-
-/*! \reimp
-*/
-void QWebView::mousePressEvent(QMouseEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-}
-
-/*! \reimp
-*/
-void QWebView::mouseDoubleClickEvent(QMouseEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-}
-
-/*! \reimp
-*/
-void QWebView::mouseReleaseEvent(QMouseEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-}
-
-#ifndef QT_NO_CONTEXTMENU
-/*! \reimp
-*/
-void QWebView::contextMenuEvent(QContextMenuEvent* 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 QWebView::wheelEvent(QWheelEvent* ev)
-{
- if (d->page) {
- const bool accepted = ev->isAccepted();
- d->page->event(ev);
- ev->setAccepted(accepted);
- }
-}
-#endif // QT_NO_WHEELEVENT
-
-/*! \reimp
-*/
-void QWebView::keyPressEvent(QKeyEvent* ev)
-{
- if (d->page)
- d->page->event(ev);
- if (!ev->isAccepted())
- QWidget::keyPressEvent(ev);
-}
-
-/*! \reimp
-*/
-void QWebView::keyReleaseEvent(QKeyEvent* ev)
-{
- if (d->page)
- d->page->event(ev);
- if (!ev->isAccepted())
- QWidget::keyReleaseEvent(ev);
-}
-
-/*! \reimp
-*/
-void QWebView::focusInEvent(QFocusEvent* ev)
-{
- if (d->page)
- d->page->event(ev);
- else
- QWidget::focusInEvent(ev);
-}
-
-/*! \reimp
-*/
-void QWebView::focusOutEvent(QFocusEvent* ev)
-{
- if (d->page)
- d->page->event(ev);
- else
- QWidget::focusOutEvent(ev);
-}
-
-/*! \reimp
-*/
-void QWebView::dragEnterEvent(QDragEnterEvent* ev)
-{
-#ifndef QT_NO_DRAGANDDROP
- if (d->page)
- d->page->event(ev);
-#endif
-}
-
-/*! \reimp
-*/
-void QWebView::dragLeaveEvent(QDragLeaveEvent* ev)
-{
-#ifndef QT_NO_DRAGANDDROP
- if (d->page)
- d->page->event(ev);
-#endif
-}
-
-/*! \reimp
-*/
-void QWebView::dragMoveEvent(QDragMoveEvent* ev)
-{
-#ifndef QT_NO_DRAGANDDROP
- if (d->page)
- d->page->event(ev);
-#endif
-}
-
-/*! \reimp
-*/
-void QWebView::dropEvent(QDropEvent* ev)
-{
-#ifndef QT_NO_DRAGANDDROP
- if (d->page)
- d->page->event(ev);
-#endif
-}
-
-/*! \reimp
-*/
-bool QWebView::focusNextPrevChild(bool next)
-{
- if (d->page && d->page->focusNextPrevChild(next))
- return true;
- return QWidget::focusNextPrevChild(next);
-}
-
-/*!\reimp
-*/
-QVariant QWebView::inputMethodQuery(Qt::InputMethodQuery property) const
-{
- if (d->page)
- return d->page->inputMethodQuery(property);
- return QVariant();
-}
-
-/*!\reimp
-*/
-void QWebView::inputMethodEvent(QInputMethodEvent *e)
-{
- if (d->page)
- d->page->event(e);
-}
-
-/*!\reimp
-*/
-void QWebView::changeEvent(QEvent *e)
-{
- if (d->page && e->type() == QEvent::PaletteChange)
- d->page->setPalette(palette());
- QWidget::changeEvent(e);
-}
-
-/*!
- \fn void QWebView::titleChanged(const QString &title)
-
- This signal is emitted whenever the \a title of the main frame changes.
-
- \sa title()
-*/
-
-/*!
- \fn void QWebView::urlChanged(const QUrl &url)
-
- This signal is emitted when the \a url of the view changes.
-
- \sa url(), load()
-*/
-
-/*!
- \fn void QWebView::statusBarMessage(const QString& text)
-
- This signal is emitted when the status bar \a text is changed by the page.
-*/
-
-/*!
- \fn void QWebView::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 QWebView::loadStarted()
-
- This signal is emitted when a new load of the page is started.
-
- \sa loadProgress(), loadFinished()
-*/
-
-/*!
- \fn void QWebView::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()
-*/
-
-/*!
- \fn void QWebView::selectionChanged()
-
- This signal is emitted whenever the selection changes.
-
- \sa selectedText()
-*/
-
-/*!
- \fn void QWebView::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 QWebView::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()
-*/
-
-#include "moc_qwebview.cpp"
-