diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-02-09 14:16:12 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-02-09 14:16:12 +0100 |
commit | 03e12282df9aa1e1fb05a8b90f1cfc2e08764cec (patch) | |
tree | 52599cd0ab782b1768e23ad176f7618f98333cb6 /Tools/MiniBrowser | |
parent | cd44dc59cdfc39534aef4d417e9f3c412e3be139 (diff) | |
download | qtwebkit-03e12282df9aa1e1fb05a8b90f1cfc2e08764cec.tar.gz |
Imported WebKit commit e09a82039aa4273ab318b71122e92d8e5f233525 (http://svn.webkit.org/repository/webkit/trunk@107223)
Diffstat (limited to 'Tools/MiniBrowser')
-rw-r--r-- | Tools/MiniBrowser/gtk/BrowserWindow.c | 21 | ||||
-rw-r--r-- | Tools/MiniBrowser/gtk/GNUmakefile.am | 11 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/BrowserWindow.cpp | 6 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/MiniBrowserApplication.cpp | 7 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/MiniBrowserApplication.h | 5 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/qml/BrowserWindow.qml | 2 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/qml/MockTouchPoint.qml | 4 |
7 files changed, 38 insertions, 18 deletions
diff --git a/Tools/MiniBrowser/gtk/BrowserWindow.c b/Tools/MiniBrowser/gtk/BrowserWindow.c index e04ab0b06..4d6bde488 100644 --- a/Tools/MiniBrowser/gtk/BrowserWindow.c +++ b/Tools/MiniBrowser/gtk/BrowserWindow.c @@ -235,6 +235,26 @@ static gboolean webViewLoadFailed(WebKitWebView *webView, WebKitLoadEvent loadEv return FALSE; } +static gboolean webViewDecidePolicy(WebKitWebView *webView, WebKitPolicyDecision *decision, WebKitPolicyDecisionType decisionType, BrowserWindow *window) +{ + if (decisionType != WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION) + return FALSE; + + WebKitNavigationPolicyDecision *navigationDecision = WEBKIT_NAVIGATION_POLICY_DECISION(decision); + if (webkit_navigation_policy_decision_get_navigation_type(navigationDecision) != WEBKIT_NAVIGATION_TYPE_LINK_CLICKED + || webkit_navigation_policy_decision_get_mouse_button(navigationDecision) != 2) + return FALSE; + + WebKitWebView *newWebView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(webkit_web_view_get_context(webView))); + webkit_web_view_set_settings(newWebView, webkit_web_view_get_settings(webView)); + GtkWidget *newWindow = browser_window_new(newWebView); + webkit_web_view_load_request(newWebView, webkit_navigation_policy_decision_get_request(navigationDecision)); + gtk_widget_show(newWindow); + + webkit_policy_decision_ignore(decision); + return TRUE; +} + static void browserWindowFinalize(GObject *gObject) { G_OBJECT_CLASS(browser_window_parent_class)->finalize(gObject); @@ -333,6 +353,7 @@ static void browserWindowConstructed(GObject *gObject) g_signal_connect(window->webView, "notify::title", G_CALLBACK(webViewTitleChanged), window); g_signal_connect(window->webView, "create", G_CALLBACK(webViewCreate), window); g_signal_connect(window->webView, "load-failed", G_CALLBACK(webViewLoadFailed), window); + g_signal_connect(window->webView, "decide-policy", G_CALLBACK(webViewDecidePolicy), window); WebKitBackForwardList *backForwadlist = webkit_web_view_get_back_forward_list(window->webView); g_signal_connect(backForwadlist, "changed", G_CALLBACK(backForwadlistChanged), window); diff --git a/Tools/MiniBrowser/gtk/GNUmakefile.am b/Tools/MiniBrowser/gtk/GNUmakefile.am index 8a3b87e0f..2a020f6e5 100644 --- a/Tools/MiniBrowser/gtk/GNUmakefile.am +++ b/Tools/MiniBrowser/gtk/GNUmakefile.am @@ -1,10 +1,6 @@ noinst_PROGRAMS += \ Programs/MiniBrowser -minibrowser_built_sources += \ - DerivedSources/WebKit2/BrowserMarshal.h \ - DerivedSources/WebKit2/BrowserMarshal.c - Programs_MiniBrowser_CPPFLAGS = \ -I$(srcdir)/Source \ -I$(top_builddir)/DerivedSources/WebKit2 \ @@ -16,7 +12,6 @@ Programs_MiniBrowser_CPPFLAGS = \ $(GTK_CFLAGS) Programs_MiniBrowser_SOURCES = \ - $(minibrowser_built_sources) \ Tools/MiniBrowser/gtk/BrowserCellRendererVariant.h \ Tools/MiniBrowser/gtk/BrowserCellRendererVariant.c \ Tools/MiniBrowser/gtk/BrowserSettingsDialog.h \ @@ -25,6 +20,12 @@ Programs_MiniBrowser_SOURCES = \ Tools/MiniBrowser/gtk/BrowserWindow.c \ Tools/MiniBrowser/gtk/main.c +minibrowser_built_sources += \ + DerivedSources/WebKit2/BrowserMarshal.h \ + DerivedSources/WebKit2/BrowserMarshal.c +nodist_Programs_MiniBrowser_SOURCES = \ + $(minibrowser_built_sources) + Programs_MiniBrowser_LDADD = \ libwebkit2gtk-@WEBKITGTK_API_MAJOR_VERSION@.@WEBKITGTK_API_MINOR_VERSION@.la \ $(GLIB_LIBS) \ diff --git a/Tools/MiniBrowser/qt/BrowserWindow.cpp b/Tools/MiniBrowser/qt/BrowserWindow.cpp index a768581dc..639cd4f0e 100644 --- a/Tools/MiniBrowser/qt/BrowserWindow.cpp +++ b/Tools/MiniBrowser/qt/BrowserWindow.cpp @@ -54,8 +54,6 @@ BrowserWindow::BrowserWindow(WindowOptions* options) setSource(QUrl("qrc:/qml/BrowserWindow.qml")); connect(rootObject(), SIGNAL(pageTitleChanged(QString)), this, SLOT(setWindowTitle(QString))); connect(rootObject(), SIGNAL(newWindow(QString)), this, SLOT(newWindow(QString))); - if (options->useTraditionalDesktopBehavior()) - webView()->experimental()->setUseTraditionalDesktopBehaviour(true); if (options->startFullScreen()) showFullScreen(); else { @@ -110,12 +108,14 @@ void BrowserWindow::updateVisualMockTouchPoints(const QList<QWindowSystemInterfa mockTouchPointItem->setParentItem(rootObject()); } - QPointF position = touchPoint.area.topLeft(); + QPointF position = touchPoint.area.center(); position.rx() -= geometry().x(); position.ry() -= geometry().y(); mockTouchPointItem->setX(position.x()); mockTouchPointItem->setY(position.y()); + mockTouchPointItem->setWidth(touchPoint.area.width()); + mockTouchPointItem->setHeight(touchPoint.area.height()); mockTouchPointItem->setProperty("pressed", QVariant(touchPoint.state != Qt::TouchPointReleased)); } } diff --git a/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp b/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp index 88260b8cc..57a55928b 100644 --- a/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp +++ b/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp @@ -29,6 +29,7 @@ #include "MiniBrowserApplication.h" #include "BrowserWindow.h" +#include "qquickwebview_p.h" #include "utils.h" #include <QRegExp> #include <QEvent> @@ -124,7 +125,7 @@ bool MiniBrowserApplication::notify(QObject* target, QEvent* event) const QMouseEvent* const mouseEvent = static_cast<QMouseEvent*>(event); QWindowSystemInterface::TouchPoint touchPoint; - touchPoint.area = QRectF(mouseEvent->globalPos(), QSizeF(1, 1)); + touchPoint.area = QRectF(mouseEvent->globalPos() - QPointF(30, 40), QSizeF(60, 80)); touchPoint.pressure = 1; switch (mouseEvent->type()) { @@ -182,7 +183,7 @@ void MiniBrowserApplication::sendTouchEvent(BrowserWindow* browserWindow) QWindowSystemInterface::handleTouchEvent(browserWindow, device, m_touchPoints.values()); bool holdingControl = QApplication::keyboardModifiers().testFlag(Qt::ControlModifier); - if (!m_windowOptions.useTraditionalDesktopBehavior()) + if (QQuickWebViewExperimental::flickableViewportEnabled()) browserWindow->updateVisualMockTouchPoints(holdingControl ? m_touchPoints.values() : QList<QWindowSystemInterface::TouchPoint>()); // Get rid of touch-points that are no longer valid @@ -220,9 +221,9 @@ void MiniBrowserApplication::handleUserOptions() } const bool useDesktopBehavior = takeOptionFlag(&args, "--desktop"); + QQuickWebViewExperimental::setFlickableViewportEnabled(!useDesktopBehavior); if (!useDesktopBehavior) qputenv("QT_WEBKIT_USE_MOBILE_THEME", QByteArray("1")); - m_windowOptions.setUseTraditionalDesktopBehavior(useDesktopBehavior); m_windowOptions.setPrintLoadedUrls(takeOptionFlag(&args, "-v")); m_windowOptions.setStartMaximized(takeOptionFlag(&args, "--maximize")); m_windowOptions.setStartFullScreen(takeOptionFlag(&args, "-f")); diff --git a/Tools/MiniBrowser/qt/MiniBrowserApplication.h b/Tools/MiniBrowser/qt/MiniBrowserApplication.h index 43f83cfe1..b5565855e 100644 --- a/Tools/MiniBrowser/qt/MiniBrowserApplication.h +++ b/Tools/MiniBrowser/qt/MiniBrowserApplication.h @@ -43,7 +43,6 @@ class BrowserWindow; class WindowOptions : public QObject { Q_OBJECT Q_PROPERTY(bool printLoadedUrls READ printLoadedUrls) - Q_PROPERTY(bool useTraditionalDesktopBehavior READ useTraditionalDesktopBehavior) Q_PROPERTY(bool startMaximized READ startMaximized) Q_PROPERTY(bool touchMockingEnabled READ touchMockingEnabled WRITE setTouchMockingEnabled NOTIFY touchMockingEnabledChanged) @@ -51,7 +50,6 @@ public: WindowOptions(QObject* parent = 0) : QObject(parent) , m_printLoadedUrls(false) - , m_useTraditionalDesktopBehavior(false) , m_startMaximized(false) , m_touchMockingEnabled(true) , m_windowSize(QSize(980, 735)) @@ -60,8 +58,6 @@ public: void setPrintLoadedUrls(bool enabled) { m_printLoadedUrls = enabled; } bool printLoadedUrls() const { return m_printLoadedUrls; } - void setUseTraditionalDesktopBehavior(bool enabled) { m_useTraditionalDesktopBehavior = enabled; } - bool useTraditionalDesktopBehavior() const { return m_useTraditionalDesktopBehavior; } void setStartMaximized(bool enabled) { m_startMaximized = enabled; } bool startMaximized() const { return m_startMaximized; } void setStartFullScreen(bool enabled) { m_startFullScreen = enabled; } @@ -82,7 +78,6 @@ signals: private: bool m_printLoadedUrls; - bool m_useTraditionalDesktopBehavior; bool m_startMaximized; bool m_startFullScreen; bool m_touchMockingEnabled; diff --git a/Tools/MiniBrowser/qt/qml/BrowserWindow.qml b/Tools/MiniBrowser/qt/qml/BrowserWindow.qml index c080ed3ea..65999dd32 100644 --- a/Tools/MiniBrowser/qt/qml/BrowserWindow.qml +++ b/Tools/MiniBrowser/qt/qml/BrowserWindow.qml @@ -28,7 +28,7 @@ import QtQuick 2.0 import QtWebKit 3.0 -import QtWebKit.experimental 3.0 +import QtWebKit.experimental 1.0 Rectangle { // Do not define anchors or an initial size here! This would mess up with QSGView::SizeRootObjectToView. diff --git a/Tools/MiniBrowser/qt/qml/MockTouchPoint.qml b/Tools/MiniBrowser/qt/qml/MockTouchPoint.qml index fd05156da..4cc5c2c66 100644 --- a/Tools/MiniBrowser/qt/qml/MockTouchPoint.qml +++ b/Tools/MiniBrowser/qt/qml/MockTouchPoint.qml @@ -37,7 +37,9 @@ Item { source: "../icons/touchpoint.png" x: -(width / 2) y: -(height / 2) - opacity: parent.pressed ? 0.8 : 0.0 + height: parent.height + width: parent.width + opacity: parent.pressed ? 0.6 : 0.0 Behavior on opacity { NumberAnimation { duration: 200 } |