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 db115ce..8d4427c 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 96bfb5e..9b9d830 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 7721045..13d6e0b 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 693810e..2fbebe6 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 8eebfa7..adb4086 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))