diff options
author | Simon Hausmann <simon.hausmann@nokia.com> | 2012-01-11 10:03:25 +0100 |
---|---|---|
committer | Simon Hausmann <simon.hausmann@nokia.com> | 2012-01-11 10:03:25 +0100 |
commit | d11f84f5b5cdc0d92a08af01b13472fdd5f9acb9 (patch) | |
tree | b318cf594dc1da2fa48224005945c9157f35bb41 /Tools/MiniBrowser | |
parent | 6300a96eca9f152b379f1bcf3d9efdc5572d989a (diff) | |
download | qtwebkit-d11f84f5b5cdc0d92a08af01b13472fdd5f9acb9.tar.gz |
Imported WebKit commit 75bb2fc5882d2e1b3d5572c2961507996cbca5e3 (http://svn.webkit.org/repository/webkit/trunk@104681)
Diffstat (limited to 'Tools/MiniBrowser')
-rw-r--r-- | Tools/MiniBrowser/gtk/GNUmakefile.am | 3 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/BrowserWindow.cpp | 10 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/BrowserWindow.h | 2 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/MiniBrowser.qrc | 1 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/MiniBrowserApplication.cpp | 19 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/MiniBrowserApplication.h | 19 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/icons/touch.png | bin | 0 -> 6803 bytes | |||
-rw-r--r-- | Tools/MiniBrowser/qt/main.cpp | 4 | ||||
-rw-r--r-- | Tools/MiniBrowser/qt/qml/BrowserWindow.qml | 49 | ||||
-rw-r--r-- | Tools/MiniBrowser/win/BrowserView.cpp | 4 | ||||
-rw-r--r-- | Tools/MiniBrowser/win/BrowserWindow.cpp | 2 |
11 files changed, 87 insertions, 26 deletions
diff --git a/Tools/MiniBrowser/gtk/GNUmakefile.am b/Tools/MiniBrowser/gtk/GNUmakefile.am index cf3994a57..8a3b87e0f 100644 --- a/Tools/MiniBrowser/gtk/GNUmakefile.am +++ b/Tools/MiniBrowser/gtk/GNUmakefile.am @@ -58,4 +58,5 @@ stamp-mini-browser-marshal.h: $(MiniBrowser_marshal_list) echo timestamp > $(@F) EXTRA_DIST += \ - $(minibrowser_marshal_list) + $(srcdir)/Tools/MiniBrowser/gtk/browser-marshal.list + diff --git a/Tools/MiniBrowser/qt/BrowserWindow.cpp b/Tools/MiniBrowser/qt/BrowserWindow.cpp index 29bf58aee..9ccb8a263 100644 --- a/Tools/MiniBrowser/qt/BrowserWindow.cpp +++ b/Tools/MiniBrowser/qt/BrowserWindow.cpp @@ -76,6 +76,16 @@ void BrowserWindow::load(const QString& url) QMetaObject::invokeMethod(rootObject(), "load", Qt::DirectConnection, Q_ARG(QVariant, completedUrl)); } +void BrowserWindow::reload() +{ + QMetaObject::invokeMethod(rootObject(), "reload", Qt::DirectConnection); +} + +void BrowserWindow::focusAddressBar() +{ + QMetaObject::invokeMethod(rootObject(), "focusAddressBar", Qt::DirectConnection); +} + BrowserWindow* BrowserWindow::newWindow(const QString& url) { BrowserWindow* window = new BrowserWindow(); diff --git a/Tools/MiniBrowser/qt/BrowserWindow.h b/Tools/MiniBrowser/qt/BrowserWindow.h index e697c7548..9593e1014 100644 --- a/Tools/MiniBrowser/qt/BrowserWindow.h +++ b/Tools/MiniBrowser/qt/BrowserWindow.h @@ -42,6 +42,8 @@ public: BrowserWindow(WindowOptions* = 0); ~BrowserWindow(); void load(const QString& url); + void reload(); + void focusAddressBar(); QQuickWebView* webView() const; void updateVisualMockTouchPoints(const QList<QWindowSystemInterface::TouchPoint>& touchPoints); diff --git a/Tools/MiniBrowser/qt/MiniBrowser.qrc b/Tools/MiniBrowser/qt/MiniBrowser.qrc index b50609398..20a9400c6 100644 --- a/Tools/MiniBrowser/qt/MiniBrowser.qrc +++ b/Tools/MiniBrowser/qt/MiniBrowser.qrc @@ -5,6 +5,7 @@ <file>icons/previous.png</file> <file>icons/refresh.png</file> <file>icons/stop.png</file> + <file>icons/touch.png</file> <file>icons/touchpoint.png</file> <file>qml/AlertDialog.qml</file> <file>qml/BrowserWindow.qml</file> diff --git a/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp b/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp index 0ea3c3b78..265436505 100644 --- a/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp +++ b/Tools/MiniBrowser/qt/MiniBrowserApplication.cpp @@ -63,12 +63,12 @@ static inline bool isMouseEvent(const QEvent* event) MiniBrowserApplication::MiniBrowserApplication(int& argc, char** argv) : QApplication(argc, argv) - , m_windowOptions(this) , m_realTouchEventReceived(false) , m_pendingFakeTouchEventCount(0) , m_isRobotized(false) , m_robotTimeoutSeconds(0) , m_robotExtraTimeSeconds(0) + , m_windowOptions(this) { setOrganizationName("Nokia"); setApplicationName("QtMiniBrowser"); @@ -82,7 +82,7 @@ bool MiniBrowserApplication::notify(QObject* target, QEvent* event) // We try to be smart, if we received real touch event, we are probably on a device // with touch screen, and we should not have touch mocking. - if (!event->spontaneous() || m_realTouchEventReceived) + if (!event->spontaneous() || m_realTouchEventReceived || !m_windowOptions.touchMockingEnabled()) return QApplication::notify(target, event); if (isTouchEvent(event) && static_cast<QTouchEvent*>(event)->deviceType() == QTouchEvent::TouchScreen) { @@ -97,6 +97,21 @@ bool MiniBrowserApplication::notify(QObject* target, QEvent* event) if (!browserWindow) return QApplication::notify(target, event); + // In QML events are propagated through parents. But since the WebView + // may consume key events, a shortcut might never reach the top QQuickItem. + // Therefore we are checking here for shortcuts. + if (event->type() == QEvent::KeyPress) { + QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event); + if ((keyEvent->key() == Qt::Key_R && keyEvent->modifiers() == Qt::ControlModifier) || keyEvent->key() == Qt::Key_F5) { + browserWindow->reload(); + return true; + } + if ((keyEvent->key() == Qt::Key_L && keyEvent->modifiers() == Qt::ControlModifier) || keyEvent->key() == Qt::Key_F6) { + browserWindow->focusAddressBar(); + return true; + } + } + if (event->type() == QEvent::KeyRelease && static_cast<QKeyEvent*>(event)->key() == Qt::Key_Control) { foreach (int id, m_heldTouchPoints) if (m_touchPoints.contains(id)) diff --git a/Tools/MiniBrowser/qt/MiniBrowserApplication.h b/Tools/MiniBrowser/qt/MiniBrowserApplication.h index 719c79de6..43f83cfe1 100644 --- a/Tools/MiniBrowser/qt/MiniBrowserApplication.h +++ b/Tools/MiniBrowser/qt/MiniBrowserApplication.h @@ -45,6 +45,7 @@ class WindowOptions : public QObject { 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) public: WindowOptions(QObject* parent = 0) @@ -52,6 +53,7 @@ public: , m_printLoadedUrls(false) , m_useTraditionalDesktopBehavior(false) , m_startMaximized(false) + , m_touchMockingEnabled(true) , m_windowSize(QSize(980, 735)) { } @@ -66,12 +68,24 @@ public: bool startFullScreen() const { return m_startFullScreen; } void setRequestedWindowSize(const QSize& size) { m_windowSize = size; } QSize requestedWindowSize() const { return m_windowSize; } + bool touchMockingEnabled() const { return m_touchMockingEnabled; } + void setTouchMockingEnabled(bool enabled) + { + if (enabled != m_touchMockingEnabled) { + m_touchMockingEnabled = enabled; + emit touchMockingEnabledChanged(); + } + } + +signals: + void touchMockingEnabledChanged(); private: bool m_printLoadedUrls; bool m_useTraditionalDesktopBehavior; bool m_startMaximized; bool m_startFullScreen; + bool m_touchMockingEnabled; QSize m_windowSize; }; @@ -84,8 +98,7 @@ public: bool isRobotized() const { return m_isRobotized; } int robotTimeout() const { return m_robotTimeoutSeconds; } int robotExtraTime() const { return m_robotExtraTimeSeconds; } - - WindowOptions m_windowOptions; + WindowOptions* windowOptions() { return &m_windowOptions; } virtual bool notify(QObject*, QEvent*); @@ -103,6 +116,8 @@ private: QHash<int, QWindowSystemInterface::TouchPoint> m_touchPoints; QSet<int> m_heldTouchPoints; + + WindowOptions m_windowOptions; }; QML_DECLARE_TYPE(WindowOptions); diff --git a/Tools/MiniBrowser/qt/icons/touch.png b/Tools/MiniBrowser/qt/icons/touch.png Binary files differnew file mode 100644 index 000000000..182ae0fe8 --- /dev/null +++ b/Tools/MiniBrowser/qt/icons/touch.png diff --git a/Tools/MiniBrowser/qt/main.cpp b/Tools/MiniBrowser/qt/main.cpp index 26877ae77..feae14ade 100644 --- a/Tools/MiniBrowser/qt/main.cpp +++ b/Tools/MiniBrowser/qt/main.cpp @@ -45,7 +45,7 @@ int main(int argc, char** argv) MiniBrowserApplication app(argc, argv); if (app.isRobotized()) { - BrowserWindow* window = new BrowserWindow(&app.m_windowOptions); + BrowserWindow* window = new BrowserWindow(app.windowOptions()); UrlLoader loader(window, app.urls().at(0), app.robotTimeout(), app.robotExtraTime()); loader.loadNext(); window->show(); @@ -62,7 +62,7 @@ int main(int argc, char** argv) urls.append("http://www.google.com"); } - BrowserWindow* window = new BrowserWindow(&app.m_windowOptions); + BrowserWindow* window = new BrowserWindow(app.windowOptions()); window->load(urls.at(0)); for (int i = 1; i < urls.size(); ++i) diff --git a/Tools/MiniBrowser/qt/qml/BrowserWindow.qml b/Tools/MiniBrowser/qt/qml/BrowserWindow.qml index 0d73dceca..c2c673aa1 100644 --- a/Tools/MiniBrowser/qt/qml/BrowserWindow.qml +++ b/Tools/MiniBrowser/qt/qml/BrowserWindow.qml @@ -41,6 +41,10 @@ Rectangle { webView.load(address) } + function reload() { + webView.reload() + } + function focusAddressBar() { addressLine.forceActiveFocus() addressLine.selectAll() @@ -151,11 +155,9 @@ Rectangle { onReleased: { parent.color = "#efefef" } onClicked: { if (webView.loading) { - console.log("stop loading") webView.stop() } else { - console.log("reloading") - webView.reload() + reload() } } } @@ -180,6 +182,33 @@ Rectangle { } } } + + Rectangle { + id: touchEventsButton + height: parent.height + width: height + color: "#efefef" + radius: 6 + + Image { + anchors.centerIn: parent + opacity: options.touchMockingEnabled ? 0.6 : 0.1 + source: "../icons/touch.png" + } + + MouseArea { + anchors.fill: parent + onClicked: { + if (options.touchMockingEnabled) { + console.log("Touch Mocking Disabled") + } else { + console.log("Touch Mocking Enabled") + } + + options.touchMockingEnabled = !options.touchMockingEnabled + } + } + } } Rectangle { color: "white" @@ -234,13 +263,6 @@ Rectangle { console.log("going to: ", addressLine.text) webView.load(utils.urlFromUserInput(addressLine.text)) } - - Keys.onPressed: { - if (((event.modifiers & Qt.ControlModifier) && event.key == Qt.Key_L) || event.key == Qt.key_F6) { - focusAddressBar() - event.accepted = true - } - } } } } @@ -279,11 +301,4 @@ Rectangle { visible: false viewportInfo : webView.experimental.viewportInfo } - - Keys.onPressed: { - if (((event.modifiers & Qt.ControlModifier) && event.key == Qt.Key_L) || event.key == Qt.key_F6) { - focusAddressBar() - event.accepted = true - } - } } diff --git a/Tools/MiniBrowser/win/BrowserView.cpp b/Tools/MiniBrowser/win/BrowserView.cpp index fdf076e9c..bd5dcba65 100644 --- a/Tools/MiniBrowser/win/BrowserView.cpp +++ b/Tools/MiniBrowser/win/BrowserView.cpp @@ -152,8 +152,10 @@ void BrowserView::setFrame(RECT rect) void BrowserView::goToURL(const std::wstring& urlString) { CFStringRef string = CFStringCreateWithCharacters(0, (const UniChar*)urlString.data(), urlString.size()); - CFURLRef cfURL = CFURLCreateWithString(0, string, 0); + CFStringRef escapedString = CFURLCreateStringByAddingPercentEscapes(0, string, 0, 0, kCFStringEncodingUTF8); CFRelease(string); + CFURLRef cfURL = CFURLCreateWithString(0, escapedString, 0); + CFRelease(escapedString); WKURLRef url = WKURLCreateWithCFURL(cfURL); CFRelease(cfURL); diff --git a/Tools/MiniBrowser/win/BrowserWindow.cpp b/Tools/MiniBrowser/win/BrowserWindow.cpp index dc43a684e..b791d5bb5 100644 --- a/Tools/MiniBrowser/win/BrowserWindow.cpp +++ b/Tools/MiniBrowser/win/BrowserWindow.cpp @@ -251,7 +251,7 @@ bool BrowserWindow::handleMessage(const MSG* message) std::wstring url(&buffer[0], buffer.size() - 1); - if (url.find(L"http://")) + if (url.find(L":") == std::wstring::npos) url = L"http://" + url; m_browserView.goToURL(url); |