- Revision
- 256889
- Author
- hironori.fu...@sony.com
- Date
- 2020-02-18 16:49:13 -0800 (Tue, 18 Feb 2020)
Log Message
[Win][MiniBrowser] Support back/forward mouse buttons by handing APPCOMMAND_BROWSER_BACKWARD and APPCOMMAND_BROWSER_FORWARD
https://bugs.webkit.org/show_bug.cgi?id=207883
Reviewed by Ross Kirsling.
Unlike other mouse buttons, 4th and 5th mouse buttons are
processed differently. Clicking them dispatches WM_XBUTTONDOWN and
WM_XBUTTONUP events to the window under the mouse cursor.
Unhandled WM_XBUTTONUP events are automatically converted to
WM_APPCOMMAND. And, unhandle WM_APPCOMMAND are propagated to the
parent window.
<https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-appcommand>
Unlike other WM_* commands, WM_APPCOMMAND should return 1 if it is
handled.
* MiniBrowser/win/BrowserWindow.h:
* MiniBrowser/win/MainWindow.cpp:
(MainWindow::WndProc):
* MiniBrowser/win/WebKitBrowserWindow.cpp:
(WebKitBrowserWindow::navigateForwardOrBackward):
* MiniBrowser/win/WebKitBrowserWindow.h:
* MiniBrowser/win/WebKitLegacyBrowserWindow.cpp:
(WebKitLegacyBrowserWindow::navigateForwardOrBackward):
* MiniBrowser/win/WebKitLegacyBrowserWindow.h:
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (256888 => 256889)
--- trunk/Tools/ChangeLog 2020-02-19 00:48:04 UTC (rev 256888)
+++ trunk/Tools/ChangeLog 2020-02-19 00:49:13 UTC (rev 256889)
@@ -1,3 +1,31 @@
+2020-02-18 Fujii Hironori <hironori.fu...@sony.com>
+
+ [Win][MiniBrowser] Support back/forward mouse buttons by handing APPCOMMAND_BROWSER_BACKWARD and APPCOMMAND_BROWSER_FORWARD
+ https://bugs.webkit.org/show_bug.cgi?id=207883
+
+ Reviewed by Ross Kirsling.
+
+ Unlike other mouse buttons, 4th and 5th mouse buttons are
+ processed differently. Clicking them dispatches WM_XBUTTONDOWN and
+ WM_XBUTTONUP events to the window under the mouse cursor.
+ Unhandled WM_XBUTTONUP events are automatically converted to
+ WM_APPCOMMAND. And, unhandle WM_APPCOMMAND are propagated to the
+ parent window.
+ <https://docs.microsoft.com/en-us/windows/win32/inputdev/wm-appcommand>
+
+ Unlike other WM_* commands, WM_APPCOMMAND should return 1 if it is
+ handled.
+
+ * MiniBrowser/win/BrowserWindow.h:
+ * MiniBrowser/win/MainWindow.cpp:
+ (MainWindow::WndProc):
+ * MiniBrowser/win/WebKitBrowserWindow.cpp:
+ (WebKitBrowserWindow::navigateForwardOrBackward):
+ * MiniBrowser/win/WebKitBrowserWindow.h:
+ * MiniBrowser/win/WebKitLegacyBrowserWindow.cpp:
+ (WebKitLegacyBrowserWindow::navigateForwardOrBackward):
+ * MiniBrowser/win/WebKitLegacyBrowserWindow.h:
+
2020-02-18 Alex Christensen <achristen...@webkit.org>
Expand WKRemoteObjectCoder supported POD types to encode NSURLResponse types
Modified: trunk/Tools/MiniBrowser/win/BrowserWindow.h (256888 => 256889)
--- trunk/Tools/MiniBrowser/win/BrowserWindow.h 2020-02-19 00:48:04 UTC (rev 256888)
+++ trunk/Tools/MiniBrowser/win/BrowserWindow.h 2020-02-19 00:49:13 UTC (rev 256889)
@@ -44,7 +44,7 @@
virtual HRESULT loadURL(const BSTR& passedURL) = 0;
virtual void reload() = 0;
- virtual void navigateForwardOrBackward(UINT menuID) = 0;
+ virtual void navigateForwardOrBackward(bool forward) = 0;
virtual void navigateToHistory(UINT menuID) = 0;
virtual void setPreference(UINT menuID, bool enable) = 0;
virtual bool usesLayeredWebView() const { return false; }
Modified: trunk/Tools/MiniBrowser/win/MainWindow.cpp (256888 => 256889)
--- trunk/Tools/MiniBrowser/win/MainWindow.cpp 2020-02-19 00:48:04 UTC (rev 256888)
+++ trunk/Tools/MiniBrowser/win/MainWindow.cpp 2020-02-19 00:49:13 UTC (rev 256889)
@@ -253,6 +253,7 @@
LRESULT CALLBACK MainWindow::WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
{
+ LRESULT result = 0;
RefPtr<MainWindow> thisWindow = reinterpret_cast<MainWindow*>(GetWindowLongPtr(hWnd, GWLP_USERDATA));
switch (message) {
case WM_ACTIVATE:
@@ -265,6 +266,28 @@
case WM_CREATE:
SetWindowLongPtr(hWnd, GWLP_USERDATA, reinterpret_cast<LONG_PTR>(reinterpret_cast<LPCREATESTRUCT>(lParam)->lpCreateParams));
break;
+ case WM_APPCOMMAND: {
+ auto cmd = GET_APPCOMMAND_LPARAM(lParam);
+ switch (cmd) {
+ case APPCOMMAND_BROWSER_BACKWARD:
+ thisWindow->browserWindow()->navigateForwardOrBackward(false);
+ result = 1;
+ break;
+ case APPCOMMAND_BROWSER_FORWARD:
+ thisWindow->browserWindow()->navigateForwardOrBackward(true);
+ result = 1;
+ break;
+ case APPCOMMAND_BROWSER_HOME:
+ break;
+ case APPCOMMAND_BROWSER_REFRESH:
+ thisWindow->browserWindow()->reload();
+ result = 1;
+ break;
+ case APPCOMMAND_BROWSER_STOP:
+ break;
+ }
+ break;
+ }
case WM_COMMAND: {
int wmId = LOWORD(wParam);
int wmEvent = HIWORD(wParam);
@@ -326,7 +349,7 @@
break;
case IDM_HISTORY_BACKWARD:
case IDM_HISTORY_FORWARD:
- thisWindow->browserWindow()->navigateForwardOrBackward(wmId);
+ thisWindow->browserWindow()->navigateForwardOrBackward(wmId == IDM_HISTORY_FORWARD);
break;
case IDM_UA_OTHER:
DialogBoxParam(hInst, MAKEINTRESOURCE(IDD_USER_AGENT), hWnd, customUserAgentDialogProc, reinterpret_cast<LPARAM>(thisWindow.get()));
@@ -375,7 +398,7 @@
return DefWindowProc(hWnd, message, wParam, lParam);
}
- return 0;
+ return result;
}
static bool menuItemIsChecked(const MENUITEMINFO& info)
Modified: trunk/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp (256888 => 256889)
--- trunk/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp 2020-02-19 00:48:04 UTC (rev 256888)
+++ trunk/Tools/MiniBrowser/win/WebKitBrowserWindow.cpp 2020-02-19 00:49:13 UTC (rev 256889)
@@ -206,10 +206,10 @@
WKPageReload(page);
}
-void WebKitBrowserWindow::navigateForwardOrBackward(UINT menuID)
+void WebKitBrowserWindow::navigateForwardOrBackward(bool forward)
{
auto page = WKViewGetPage(m_view.get());
- if (menuID == IDM_HISTORY_FORWARD)
+ if (forward)
WKPageGoForward(page);
else
WKPageGoBack(page);
Modified: trunk/Tools/MiniBrowser/win/WebKitBrowserWindow.h (256888 => 256889)
--- trunk/Tools/MiniBrowser/win/WebKitBrowserWindow.h 2020-02-19 00:48:04 UTC (rev 256888)
+++ trunk/Tools/MiniBrowser/win/WebKitBrowserWindow.h 2020-02-19 00:49:13 UTC (rev 256889)
@@ -43,7 +43,7 @@
HRESULT loadURL(const BSTR& url) override;
void reload() override;
- void navigateForwardOrBackward(UINT menuID) override;
+ void navigateForwardOrBackward(bool forward) override;
void navigateToHistory(UINT menuID) override;
void setPreference(UINT menuID, bool enable) override;
Modified: trunk/Tools/MiniBrowser/win/WebKitLegacyBrowserWindow.cpp (256888 => 256889)
--- trunk/Tools/MiniBrowser/win/WebKitLegacyBrowserWindow.cpp 2020-02-19 00:48:04 UTC (rev 256888)
+++ trunk/Tools/MiniBrowser/win/WebKitLegacyBrowserWindow.cpp 2020-02-19 00:49:13 UTC (rev 256889)
@@ -411,13 +411,13 @@
{
}
-void WebKitLegacyBrowserWindow::navigateForwardOrBackward(UINT menuID)
+void WebKitLegacyBrowserWindow::navigateForwardOrBackward(bool forward)
{
if (!m_webView)
return;
BOOL wentBackOrForward = FALSE;
- if (IDM_HISTORY_FORWARD == menuID)
+ if (forward)
m_webView->goForward(&wentBackOrForward);
else
m_webView->goBack(&wentBackOrForward);
Modified: trunk/Tools/MiniBrowser/win/WebKitLegacyBrowserWindow.h (256888 => 256889)
--- trunk/Tools/MiniBrowser/win/WebKitLegacyBrowserWindow.h 2020-02-19 00:48:04 UTC (rev 256888)
+++ trunk/Tools/MiniBrowser/win/WebKitLegacyBrowserWindow.h 2020-02-19 00:49:13 UTC (rev 256889)
@@ -78,7 +78,7 @@
void showLastVisitedSites(IWebView&);
void launchInspector();
void openProxySettings();
- void navigateForwardOrBackward(UINT menuID);
+ void navigateForwardOrBackward(bool forward);
void navigateToHistory(UINT menuID);
bool seedInitialDefaultPreferences();
bool setToDefaultPreferences();