[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

eric at webkit.org eric at webkit.org
Wed Apr 7 23:21:54 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 0f9aa4c406e48344f79ef57eb234acbb2ad73683
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Wed Nov 4 08:50:20 2009 +0000

    2009-11-04  Yael Aharon  <yael.aharon at nokia.com>
    
            Reviewed by Simon Hausmann.
    
            [Qt] REGRESSION: Allow applications to use their own QWidget bypassing QWebView.
            https://bugs.webkit.org/show_bug.cgi?id=30979
    
            Decouple QWebViewPrivate from QWebPageClient, and automatically create
            QWebPageWidgetClient whenever the view is QWidget based.
    
            * Api/qwebpage.cpp:
            (QWebPageWidgetClient::QWebPageWidgetClient):
            (QWebPageWidgetClient::scroll):
            (QWebPageWidgetClient::update):
            (QWebPageWidgetClient::setInputMethodEnabled):
            (QWebPageWidgetClient::setInputMethodHint):
            (QWebPageWidgetClient::cursor):
            (QWebPageWidgetClient::updateCursor):
            (QWebPageWidgetClient::palette):
            (QWebPageWidgetClient::screenNumber):
            (QWebPageWidgetClient::ownerWidget):
            (QWebPageWidgetClient::pluginParent):
            (QWebPage::setView):
            * Api/qwebview.cpp:
            (QWebView::~QWebView):
            (QWebView::setPage):
            (QWebView::event):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@50503 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/qt/Api/qwebpage.cpp b/WebKit/qt/Api/qwebpage.cpp
index 1bf04af..f500533 100644
--- a/WebKit/qt/Api/qwebpage.cpp
+++ b/WebKit/qt/Api/qwebpage.cpp
@@ -78,6 +78,7 @@
 #include "Cache.h"
 #include "runtime/InitializeThreading.h"
 #include "PageGroup.h"
+#include "QWebPageClient.h"
 
 #include <QApplication>
 #include <QBasicTimer>
@@ -107,6 +108,9 @@
 #else
 #include "qwebnetworkinterface.h"
 #endif
+#if defined(Q_WS_X11)
+#include <QX11Info>
+#endif
 
 using namespace WebCore;
 
@@ -138,6 +142,95 @@ QString QWEBKIT_EXPORT qt_webpage_groupName(QWebPage* page)
     return page->handle()->page->groupName();
 }
 
+class QWebPageWidgetClient : public QWebPageClient {
+public:
+    QWebPageWidgetClient(QWidget* view)
+        : view(view)
+    {
+        Q_ASSERT(view);
+    }
+
+    virtual void scroll(int dx, int dy, const QRect&);
+    virtual void update(const QRect& dirtyRect);
+    virtual void setInputMethodEnabled(bool enable);
+#if QT_VERSION >= 0x040600
+    virtual void setInputMethodHint(Qt::InputMethodHint hint, bool enable);
+#endif
+
+#ifndef QT_NO_CURSOR
+    virtual QCursor cursor() const;
+    virtual void updateCursor(const QCursor& cursor);
+#endif
+
+    virtual QPalette palette() const;
+    virtual int screenNumber() const;
+    virtual QWidget* ownerWidget() const;
+
+    virtual QObject* pluginParent() const;
+
+    QWidget* view;
+};
+
+void QWebPageWidgetClient::scroll(int dx, int dy, const QRect& rectToScroll)
+{
+    view->scroll(qreal(dx), qreal(dy), rectToScroll);
+}
+
+void QWebPageWidgetClient::update(const QRect & dirtyRect)
+{
+    view->update(dirtyRect);
+}
+
+void QWebPageWidgetClient::setInputMethodEnabled(bool enable)
+{
+    view->setAttribute(Qt::WA_InputMethodEnabled, enable);
+}
+#if QT_VERSION >= 0x040600
+void QWebPageWidgetClient::setInputMethodHint(Qt::InputMethodHint hint, bool enable)
+{
+    if (enable)
+        view->setInputMethodHints(view->inputMethodHints() | hint);
+    else
+        view->setInputMethodHints(view->inputMethodHints() & ~hint);
+}
+#endif
+#ifndef QT_NO_CURSOR
+QCursor QWebPageWidgetClient::cursor() const
+{
+    return view->cursor();
+}
+
+void QWebPageWidgetClient::updateCursor(const QCursor& cursor)
+{
+    view->setCursor(cursor);
+}
+#endif
+
+QPalette QWebPageWidgetClient::palette() const
+{
+    return view->palette();
+}
+
+int QWebPageWidgetClient::screenNumber() const
+{
+#if defined(Q_WS_X11)
+    if (view)
+        return view->x11Info().screen();
+#endif
+
+    return 0;
+}
+
+QWidget* QWebPageWidgetClient::ownerWidget() const
+{
+    return view;
+}
+
+QObject* QWebPageWidgetClient::pluginParent() const
+{
+    return view;
+}
+
 // Lookup table mapping QWebPage::WebActions to the associated Editor commands
 static const char* editorCommandWebActions[] =
 {
@@ -1672,6 +1765,15 @@ void QWebPage::setView(QWidget *view)
 {
     if (this->view() != view) {
         d->view = view;
+        if (!view) {
+            delete d->client;
+            d->client = 0;
+        } else {
+            if (!d->client) 
+                d->client = new QWebPageWidgetClient(view);
+            else
+                static_cast<QWebPageWidgetClient*>(d->client)->view = view;
+        }
         setViewportSize(view ? view->size() : QSize(0, 0));
     }
 }
diff --git a/WebKit/qt/Api/qwebview.cpp b/WebKit/qt/Api/qwebview.cpp
index 48de8c6..12b20ab 100644
--- a/WebKit/qt/Api/qwebview.cpp
+++ b/WebKit/qt/Api/qwebview.cpp
@@ -32,11 +32,8 @@
 #include "qprinter.h"
 #include "qdir.h"
 #include "qfile.h"
-#if defined(Q_WS_X11)
-#include <QX11Info>
-#endif
 
-class QWebViewPrivate : public QWebPageClient {
+class QWebViewPrivate {
 public:
     QWebViewPrivate(QWebView *view)
         : view(view)
@@ -46,24 +43,6 @@ public:
         Q_ASSERT(view);
     }
 
-    virtual void scroll(int dx, int dy, const QRect&);
-    virtual void update(const QRect& dirtyRect);
-    virtual void setInputMethodEnabled(bool enable);
-#if QT_VERSION >= 0x040600
-    virtual void setInputMethodHint(Qt::InputMethodHint hint, bool enable);
-#endif
-
-#ifndef QT_NO_CURSOR
-    virtual QCursor cursor() const;
-    virtual void updateCursor(const QCursor& cursor);
-#endif
-
-    virtual QPalette palette() const;
-    virtual int screenNumber() const;
-    virtual QWidget* ownerWidget() const;
-
-    virtual QObject* pluginParent() const;
-
     void _q_pageDestroyed();
 
     QWebView *view;
@@ -72,66 +51,6 @@ public:
     QPainter::RenderHints renderHints;
 };
 
-void QWebViewPrivate::scroll(int dx, int dy, const QRect& rectToScroll)
-{
-    view->scroll(qreal(dx), qreal(dy), rectToScroll);
-}
-
-void QWebViewPrivate::update(const QRect & dirtyRect)
-{
-    view->update(dirtyRect);
-}
-
-void QWebViewPrivate::setInputMethodEnabled(bool enable)
-{
-    view->setAttribute(Qt::WA_InputMethodEnabled, enable);
-}
-#if QT_VERSION >= 0x040600
-void QWebViewPrivate::setInputMethodHint(Qt::InputMethodHint hint, bool enable)
-{
-    if (enable)
-        view->setInputMethodHints(view->inputMethodHints() | hint);
-    else
-        view->setInputMethodHints(view->inputMethodHints() & ~hint);
-}
-#endif
-#ifndef QT_NO_CURSOR
-QCursor QWebViewPrivate::cursor() const
-{
-    return view->cursor();
-}
-
-void QWebViewPrivate::updateCursor(const QCursor& cursor)
-{
-    view->setCursor(cursor);
-}
-#endif
-
-QPalette QWebViewPrivate::palette() const
-{
-    return view->palette();
-}
-
-int QWebViewPrivate::screenNumber() const
-{
-#if defined(Q_WS_X11)
-    if (view)
-        return view->x11Info().screen();
-#endif
-
-    return 0;
-}
-
-QWidget* QWebViewPrivate::ownerWidget() const
-{
-    return view;
-}
-
-QObject* QWebViewPrivate::pluginParent() const
-{
-    return view;
-}
-
 void QWebViewPrivate::_q_pageDestroyed()
 {
     page = 0;
@@ -251,6 +170,7 @@ QWebView::~QWebView()
 #else
         d->page->d->view = 0;
 #endif
+        delete d->page->d->client;
         d->page->d->client = 0;
     }
 
@@ -296,7 +216,6 @@ void QWebView::setPage(QWebPage* page)
     d->page = page;
     if (d->page) {
         d->page->setView(this);
-        d->page->d->client = d; // set the page client
         d->page->setPalette(palette());
         // #### connect signals
         QWebFrame *mainFrame = d->page->mainFrame();
@@ -728,7 +647,7 @@ bool QWebView::event(QEvent *e)
             // WebCore.
             // FIXME: Add a QEvent::CursorUnset or similar to Qt.
             if (cursor().shape() == Qt::ArrowCursor)
-                d->resetCursor();
+                d->page->d->client->resetCursor();
 #endif
 #endif
         } else if (e->type() == QEvent::Leave)
diff --git a/WebKit/qt/ChangeLog b/WebKit/qt/ChangeLog
index 338c606..0a0445b 100644
--- a/WebKit/qt/ChangeLog
+++ b/WebKit/qt/ChangeLog
@@ -1,3 +1,31 @@
+2009-11-04  Yael Aharon  <yael.aharon at nokia.com>
+
+        Reviewed by Simon Hausmann.
+
+        [Qt] REGRESSION: Allow applications to use their own QWidget bypassing QWebView.
+        https://bugs.webkit.org/show_bug.cgi?id=30979
+
+        Decouple QWebViewPrivate from QWebPageClient, and automatically create
+        QWebPageWidgetClient whenever the view is QWidget based.
+
+        * Api/qwebpage.cpp:
+        (QWebPageWidgetClient::QWebPageWidgetClient):
+        (QWebPageWidgetClient::scroll):
+        (QWebPageWidgetClient::update):
+        (QWebPageWidgetClient::setInputMethodEnabled):
+        (QWebPageWidgetClient::setInputMethodHint):
+        (QWebPageWidgetClient::cursor):
+        (QWebPageWidgetClient::updateCursor):
+        (QWebPageWidgetClient::palette):
+        (QWebPageWidgetClient::screenNumber):
+        (QWebPageWidgetClient::ownerWidget):
+        (QWebPageWidgetClient::pluginParent):
+        (QWebPage::setView):
+        * Api/qwebview.cpp:
+        (QWebView::~QWebView):
+        (QWebView::setPage):
+        (QWebView::event):
+
 2009-11-03  Andras Becsi  <becsi.andras at stud.u-szeged.hu>
 
         Reviewed by Simon Hausmann.

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list