Changeset 187266 in webkit


Ignore:
Timestamp:
Jul 23, 2015 4:06:44 PM (9 years ago)
Author:
mitz@apple.com
Message:

<rdar://problem/21910578> Second pass at [iOS] Keyboard shortcuts that take focus away from the web view end up typing a letter into the newly focused field
https://bugs.webkit.org/show_bug.cgi?id=146732

Reviewed by Darin Adler.

  • UIProcess/ios/WKContentViewInteraction.mm:

(-[WKContentView _interpretKeyEvent:isCharEvent:]): Rather than checking if the view is
first responder, which it might still be when the Web Content processes invokes this
callback, check if we are in editable content before forwarding the event to the keyboard.

Location:
trunk/Source/WebKit2
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebKit2/ChangeLog

    r187264 r187266  
     12015-07-23  Dan Bernstein  <mitz@apple.com>
     2
     3        <rdar://problem/21910578> Second pass at [iOS] Keyboard shortcuts that take focus away from the web view end up typing a letter into the newly focused field
     4        https://bugs.webkit.org/show_bug.cgi?id=146732
     5
     6        Reviewed by Darin Adler.
     7
     8        * UIProcess/ios/WKContentViewInteraction.mm:
     9        (-[WKContentView _interpretKeyEvent:isCharEvent:]): Rather than checking if the view is
     10        first responder, which it might still be when the Web Content processes invokes this
     11        callback, check if we are in editable content before forwarding the event to the keyboard.
     12
    1132015-07-23  Jer Noble  <jer.noble@apple.com>
    214
  • trunk/Source/WebKit2/UIProcess/ios/WKContentViewInteraction.mm

    r187255 r187266  
    26502650    static const unsigned kWebSpaceKey = 0x20;
    26512651
    2652     if (!self.isFirstResponder)
    2653         return NO;
    2654 
    2655     if (!_page->editorState().isContentEditable && event.isTabKey)
     2652    BOOL contentEditable = _page->editorState().isContentEditable;
     2653
     2654    if (!contentEditable && event.isTabKey)
    26562655        return NO;
    26572656
     
    27022701    case kWebBackspaceKey:
    27032702    case kWebDeleteKey:
    2704         // FIXME: remove deleteFromInput once UIKit adopts deleteFromInputWithFlags
    2705         if ([keyboard respondsToSelector:@selector(deleteFromInputWithFlags:)])
    2706             [keyboard deleteFromInputWithFlags:event.keyboardFlags];
    2707         else
    2708             [keyboard deleteFromInput];
    2709         return YES;
     2703        if (contentEditable) {
     2704            // FIXME: remove deleteFromInput once UIKit adopts deleteFromInputWithFlags
     2705            if ([keyboard respondsToSelector:@selector(deleteFromInputWithFlags:)])
     2706                [keyboard deleteFromInputWithFlags:event.keyboardFlags];
     2707            else
     2708                [keyboard deleteFromInput];
     2709            return YES;
     2710        }
     2711        break;
    27102712
    27112713    case kWebSpaceKey:
    2712         if (!_page->editorState().isContentEditable) {
     2714        if (!contentEditable) {
    27132715            [_webView _scrollByOffset:FloatPoint(0, shift ? -_page->unobscuredContentRect().height() : _page->unobscuredContentRect().height())];
    27142716            return YES;
     
    27222724    case kWebEnterKey:
    27232725    case kWebReturnKey:
    2724         if (isCharEvent) {
     2726        if (contentEditable && isCharEvent) {
    27252727            // Map \r from HW keyboard to \n to match the behavior of the soft keyboard.
    27262728            [keyboard addInputString:@"\n" withFlags:0];
     
    27342736
    27352737    default:
    2736         if (isCharEvent) {
     2738        if (contentEditable && isCharEvent) {
    27372739            [keyboard addInputString:event.characters withFlags:event.keyboardFlags];
    27382740            return YES;
Note: See TracChangeset for help on using the changeset viewer.