Add support to Windows for Backspace back/forward navigation and for Ctrl+arrow key...
authorhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 Jun 2007 23:22:32 +0000 (23:22 +0000)
committerhyatt <hyatt@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Tue, 19 Jun 2007 23:22:32 +0000 (23:22 +0000)
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@23623 268f45cc-cd09-0410-ab3c-d52691b4dbfc

WebKit/win/ChangeLog
WebKit/win/WebView.cpp

index 84732665980e7c892b87ba9d30b3bb388c2e8b13..a271e5c46bfe3062d8ea8ca4ee7ffa200b603039 100644 (file)
@@ -1,3 +1,13 @@
+2007-06-19  Dave Hyatt  <hyatt@apple.com>
+
+        Fix for <rdar://problem/5022197>, backspace and ctrl+left arrow should go back.  Shift+backspace
+        and ctrl+right arrow should go forward.  Add support for these keybindings to Windows.
+       
+        Reviewed by ada
+
+        * WebView.cpp:
+        (WebView::keyDown):
+
 2007-06-18  Dave Hyatt  <hyatt@apple.com>
 
         Let through more newline+modifier key combos in order to support Alt+Enter and Ctrl+Enter in the
index 35def5e953526fa3dfa3600120dd8fecc3fd67de..d7ce651f427cd6f8184404be61b735ed4be7f267 100644 (file)
@@ -1016,9 +1016,8 @@ bool WebView::keyDown(WPARAM virtualKeyCode, LPARAM keyData)
     // FIXME: We may need to handle other messages for international text.
 
     // Don't send key events for shift, ctrl, and capslock keys when they're by themselves
-    if (virtualKeyCode == VK_SHIFT || virtualKeyCode == VK_CONTROL || virtualKeyCode == VK_CAPITAL) {
+    if (virtualKeyCode == VK_SHIFT || virtualKeyCode == VK_CONTROL || virtualKeyCode == VK_CAPITAL)
         return false;
-    }
 
     PlatformKeyboardEvent keyEvent(m_viewWindow, virtualKeyCode, keyData, m_currentCharacterCode);
     Frame* frame = m_page->focusController()->focusedOrMainFrame();
@@ -1026,10 +1025,17 @@ bool WebView::keyDown(WPARAM virtualKeyCode, LPARAM keyData)
     if (frame->eventHandler()->keyEvent(keyEvent))
         return true;
 
+    // We need to handle back/forward using either Backspace(+Shift) or Ctrl+Left/Right Arrow keys.
+    int windowsKeyCode = keyEvent.WindowsKeyCode();
+    if ((windowsKeyCode == VK_BACK && keyEvent.shiftKey()) || (windowsKeyCode == VK_RIGHT && keyEvent.ctrlKey()))
+        m_page->goForward();
+    else if (windowsKeyCode == VK_BACK || (windowsKeyCode == VK_LEFT && keyEvent.ctrlKey()))
+        m_page->goBack();
+    
     // Need to scroll the page if the arrow keys, space(shift), pgup/dn, or home/end are hit.
     ScrollDirection direction;
     ScrollGranularity granularity;
-    switch (keyEvent.WindowsKeyCode()) {
+    switch (windowsKeyCode) {
         case VK_LEFT:
             granularity = ScrollByLine;
             direction = ScrollLeft;