2010-06-24 Martin Robinson <mrobinson@igalia.com>
authormrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 25 Jun 2010 00:29:33 +0000 (00:29 +0000)
committermrobinson@webkit.org <mrobinson@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 25 Jun 2010 00:29:33 +0000 (00:29 +0000)
        Reviewed by Xan Lopez.

        [GTK] Cannot change the selection via the keyboard
        https://bugs.webkit.org/show_bug.cgi?id=41162

        * platform/gtk/Skipped: Unskip a test which is now passing.
2010-06-24  Martin Robinson  <mrobinson@igalia.com>

        Reviewed by Xan Lopez.

        [GTK] Cannot change the selection via the keyboard
        https://bugs.webkit.org/show_bug.cgi?id=41162

        Fix issue where the selection could not be extended via the keyboard by
        adjusting the logic guarding against inserting text in non-editable nodes.

        * WebCoreSupport/EditorClientGtk.cpp:
        (WebKit::EditorClient::handleKeyboardEvent):
        Allow editor commands that do not insert text in non-editable nodes. This
        fixes keyboard selection extension in non-editable nodes. Move the existing
        check to after the execution of any editor commands.

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

LayoutTests/ChangeLog
LayoutTests/platform/gtk/Skipped
WebKit/gtk/ChangeLog
WebKit/gtk/WebCoreSupport/EditorClientGtk.cpp

index 86e4049..074d3e3 100644 (file)
@@ -1,3 +1,12 @@
+2010-06-24  Martin Robinson  <mrobinson@igalia.com>
+
+        Reviewed by Xan Lopez.
+
+        [GTK] Cannot change the selection via the keyboard
+        https://bugs.webkit.org/show_bug.cgi?id=41162
+
+        * platform/gtk/Skipped: Unskip a test which is now passing.
+
 2010-06-24  Tony Chang  <tony@chromium.org>
 
         Not reviewed, just updating a comment.
index cc4abfc..03282eb 100644 (file)
@@ -5128,7 +5128,6 @@ webarchive/test-xml-stylesheet.xml
 editing/input/scroll-viewport-page-up-down.html
 editing/pasteboard/dataTransfer-setData-getData.html
 editing/pasteboard/files-during-page-drags.html
-editing/selection/extend-selection-after-double-click.html
 fast/events/drag-to-navigate.html
 fast/events/ondrop-text-html.html
 fast/events/prevent-drag-to-navigate.html
index 2e2345d..e13e9ce 100644 (file)
@@ -1,3 +1,19 @@
+2010-06-24  Martin Robinson  <mrobinson@igalia.com>
+
+        Reviewed by Xan Lopez.
+
+        [GTK] Cannot change the selection via the keyboard
+        https://bugs.webkit.org/show_bug.cgi?id=41162
+
+        Fix issue where the selection could not be extended via the keyboard by
+        adjusting the logic guarding against inserting text in non-editable nodes.
+
+        * WebCoreSupport/EditorClientGtk.cpp:
+        (WebKit::EditorClient::handleKeyboardEvent):
+        Allow editor commands that do not insert text in non-editable nodes. This
+        fixes keyboard selection extension in non-editable nodes. Move the existing
+        check to after the execution of any editor commands.
+
 2010-06-15  Dumitru Daniliuc  <dumi@chromium.org>
 
         Reviewed by Adam Barth.
index a5c36e8..77ed9b2 100644 (file)
@@ -3,7 +3,7 @@
  *  Copyright (C) 2008 Nuanti Ltd.
  *  Copyright (C) 2009 Diego Escalante Urrelo <diegoe@gnome.org>
  *  Copyright (C) 2006, 2007 Apple Inc.  All rights reserved.
- *  Copyright (C) 2009, Igalia S.L.
+ *  Copyright (C) 2009, 2010 Igalia S.L.
  *  Copyright (C) 2010, Martin Robinson <mrobinson@webkit.org>
  *
  *  This library is free software; you can redistribute it and/or
@@ -604,11 +604,6 @@ void EditorClient::handleKeyboardEvent(KeyboardEvent* event)
     if (!platformEvent)
         return;
 
-    // Don't allow editor commands or text insertion for nodes that
-    // cannot edit, unless we are in caret mode.
-    if (!frame->editor()->canEdit() && !(frame->settings() && frame->settings()->caretBrowsingEnabled()))
-        return;
-
     generateEditorCommands(event);
     if (m_pendingEditorCommands.size() > 0) {
 
@@ -622,12 +617,17 @@ void EditorClient::handleKeyboardEvent(KeyboardEvent* event)
             return;
         }
 
-        if (executePendingEditorCommands(frame, true)) {
+        // Only allow text insertion commands if the current node is editable.
+        if (executePendingEditorCommands(frame, frame->editor()->canEdit())) {
             event->setDefaultHandled();
             return;
         }
     }
 
+    // Don't allow text insertion for nodes that cannot edit.
+    if (!frame->editor()->canEdit())
+        return;
+
     // This is just a normal text insertion, so wait to execute the insertion
     // until a keypress event happens. This will ensure that the insertion will not
     // be reflected in the contents of the field until the keyup DOM event.