WebCore:
authoradele@apple.com <adele@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 16 Feb 2008 00:44:56 +0000 (00:44 +0000)
committeradele@apple.com <adele@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sat, 16 Feb 2008 00:44:56 +0000 (00:44 +0000)
        Reviewed by Darin.

        Fix for <rdar://problem/5745072> REGRESSION (r29348): Shift + Tab does not change indent level on Google Docs

        The immediate cause of this bug was that we stopped sending keypress events for the tab key when it is used to advance focus.
        We had a special case for forward-tab in designMode, where the default behavior was to insert a tab key (or respect the keypress handler behavior).
        This change makes the shift-tab behavior match the forward-tab behavior.

        If the site had put their event handler (which does the indenting) on the keydown event, then this problem would have been avoided.
        This is something we should look into and maybe advise the site on in the future.  However, it's a low-risk change to just make tab and shift-tab uniform
        in this respect, so I think this is the way to go for right now.

        * page/EventHandler.cpp: (WebCore::EventHandler::defaultTabEventHandler):

LayoutTests:

        Reviewed by Darin.

        Updated test for <rdar://problem/5745072> REGRESSION (r29348): Shift + Tab does not change indent level on Google Docs

        * editing/inserting/typing-tab-designmode-expected.txt:
        * editing/inserting/typing-tab-designmode.html:

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@30330 268f45cc-cd09-0410-ab3c-d52691b4dbfc

LayoutTests/ChangeLog
LayoutTests/editing/inserting/typing-tab-designmode-expected.txt
LayoutTests/editing/inserting/typing-tab-designmode.html
WebCore/ChangeLog
WebCore/page/EventHandler.cpp

index db115ce3ad61ecfe5f0e9123932358eee8e4687e..8d4427ce25a3cf09ec6a17be45de8135fd0a175d 100644 (file)
@@ -1,3 +1,12 @@
+2008-02-15  Adele Peterson  <adele@apple.com>
+
+        Reviewed by Darin.
+
+        Updated test for <rdar://problem/5745072> REGRESSION (r29348): Shift + Tab does not change indent level on Google Docs
+
+        * editing/inserting/typing-tab-designmode-expected.txt:
+        * editing/inserting/typing-tab-designmode.html:
+
 2008-02-15  Geoffrey Garen  <ggaren@apple.com>
 
         Reviewed by Anders Carlsson.
index 96bfb5edc5cf74938021910aef17689bf4b117ae..9b9d830fa73e835b364043e851e410a561b235b7 100644 (file)
@@ -1,2 +1,2 @@
-        try if tabs work in designMode
+                Test to see if tabs work in designMode. There should be two tabs inserted. One for the tab key, and one for shift-tab.
 
index 77210456e3f5164059a790aec95d96ece69eea9a..13d6e0ba3c751aef6265be962a90b32eb74a5b7d 100644 (file)
@@ -10,10 +10,10 @@ var s = window.getSelection();
 s.setPosition(e, 0);
 
 if (window.eventSender) {
-    var mod = [];
-    eventSender.keyDown('\t', mod);
+    eventSender.keyDown('\t');
+    eventSender.keyDown('\t', ["shiftKey"]);
 }
 </script>
-try if tabs work in designMode<br>
+Test to see if tabs work in designMode.  There should be two tabs inserted.  One for the tab key, and one for shift-tab.<br>
 
-</script>
+</body>
index 693810e94f3dd0fb2a2d773c2564001137c171cd..2fbebe6eec69385824cbdf13caa28bfe8d60a4f7 100644 (file)
@@ -1,3 +1,19 @@
+2008-02-15  Adele Peterson  <adele@apple.com>
+
+        Reviewed by Darin.
+
+        Fix for <rdar://problem/5745072> REGRESSION (r29348): Shift + Tab does not change indent level on Google Docs
+
+        The immediate cause of this bug was that we stopped sending keypress events for the tab key when it is used to advance focus.
+        We had a special case for forward-tab in designMode, where the default behavior was to insert a tab key (or respect the keypress handler behavior).
+        This change makes the shift-tab behavior match the forward-tab behavior.
+
+        If the site had put their event handler (which does the indenting) on the keydown event, then this problem would have been avoided.
+        This is something we should look into and maybe advise the site on in the future.  However, it's a low-risk change to just make tab and shift-tab uniform 
+        in this respect, so I think this is the way to go for right now.
+
+        * page/EventHandler.cpp: (WebCore::EventHandler::defaultTabEventHandler):
+
 2008-02-15  Anders Carlsson  <andersca@apple.com>
 
         Reviewed by Alice.
index 8eebfa7e792405d7ec747da2c9cffe16e05a1ae7..adb408646d191e72aeaa72a7a13ffee9a3eca8f9 100644 (file)
@@ -1847,8 +1847,8 @@ void EventHandler::defaultTabEventHandler(KeyboardEvent* event)
 
     FocusDirection focusDirection = event->shiftKey() ? FocusDirectionBackward : FocusDirectionForward;
 
-    // Tabs can be used in design mode editing. You can still move out with back tab.
-    if (m_frame->document()->inDesignMode() && focusDirection == FocusDirectionForward)
+    // Tabs can be used in design mode editing.
+    if (m_frame->document()->inDesignMode())
         return;
 
     if (page->focusController()->advanceFocus(focusDirection, event))