summaryrefslogtreecommitdiffstats
path: root/WebKit/qt/Api/qwebview.cpp
diff options
context:
space:
mode:
authorKristian Monsen <kristianm@google.com>2010-05-21 16:53:46 +0100
committerKristian Monsen <kristianm@google.com>2010-05-25 10:24:15 +0100
commit6c2af9490927c3c5959b5cb07461b646f8b32f6c (patch)
treef7111b9b22befab472616c1d50ec94eb50f1ec8c /WebKit/qt/Api/qwebview.cpp
parenta149172322a9067c14e8b474a53e63649aa17cad (diff)
downloadexternal_webkit-6c2af9490927c3c5959b5cb07461b646f8b32f6c.zip
external_webkit-6c2af9490927c3c5959b5cb07461b646f8b32f6c.tar.gz
external_webkit-6c2af9490927c3c5959b5cb07461b646f8b32f6c.tar.bz2
Merge WebKit at r59636: Initial merge by git
Change-Id: I59b289c4e6b18425f06ce41cc9d34c522515de91
Diffstat (limited to 'WebKit/qt/Api/qwebview.cpp')
-rw-r--r--WebKit/qt/Api/qwebview.cpp35
1 files changed, 20 insertions, 15 deletions
diff --git a/WebKit/qt/Api/qwebview.cpp b/WebKit/qt/Api/qwebview.cpp
index 3ba1678..2defdbb 100644
--- a/WebKit/qt/Api/qwebview.cpp
+++ b/WebKit/qt/Api/qwebview.cpp
@@ -44,8 +44,10 @@ public:
Q_ASSERT(view);
}
+ virtual ~QWebViewPrivate();
+
void _q_pageDestroyed();
- void unsetPageIfExists();
+ void detachCurrentPage();
QWebView *view;
QWebPage *page;
@@ -53,6 +55,11 @@ public:
QPainter::RenderHints renderHints;
};
+QWebViewPrivate::~QWebViewPrivate()
+{
+ detachCurrentPage();
+}
+
void QWebViewPrivate::_q_pageDestroyed()
{
page = 0;
@@ -319,18 +326,6 @@ QWebView::QWebView(QWidget *parent)
*/
QWebView::~QWebView()
{
- if (d->page) {
-#if QT_VERSION >= 0x040600
- d->page->d->view.clear();
-#else
- d->page->d->view = 0;
-#endif
- delete d->page->d->client;
- d->page->d->client = 0;
- }
-
- if (d->page && d->page->parent() == this)
- delete d->page;
delete d;
}
@@ -348,11 +343,19 @@ QWebPage *QWebView::page() const
return d->page;
}
-void QWebViewPrivate::unsetPageIfExists()
+void QWebViewPrivate::detachCurrentPage()
{
if (!page)
return;
+ if (page) {
+#if QT_VERSION >= 0x040600
+ page->d->view.clear();
+#else
+ page->d->view = 0;
+#endif
+ }
+
// if the page client is the special client constructed for
// delegating the responsibilities to a QWidget, we need
// to destroy it.
@@ -369,6 +372,8 @@ void QWebViewPrivate::unsetPageIfExists()
delete page;
else
page->disconnect(view);
+
+ page = 0;
}
/*!
@@ -385,7 +390,7 @@ void QWebView::setPage(QWebPage* page)
if (d->page == page)
return;
- d->unsetPageIfExists();
+ d->detachCurrentPage();
d->page = page;
if (d->page) {