[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677

darin darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:41:18 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit bf252036da75a91443b541ec08650d5b1cae0fcb
Author: darin <darin at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Sun May 23 22:34:48 2004 +0000

            Reviewed by Ken.
    
            - implemented some of the trivial WebView editing operations; some had bug reports, to wit:
            - fixed <rdar://problem/3655342>: (Editing: -centerSelectionInVisibleArea: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655398>: (Editing: -deleteWordBackward: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655397>: (Editing: -deleteWordForward: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655387>: (Editing: -insertBacktab: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655386>: (Editing: -insertTab: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655351>: (Editing: -moveWordBackward: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655352>: (Editing: -moveWordBackwardAndModifySelection: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655353>: (Editing: -moveWordForward: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655354>: (Editing: -moveWordForwardAndModifySelection: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655374>: (Editing: -pasteAsPlainText: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655362>: (Editing: -scrollLineDown: method unimplemented (WebKit editing API))
            - fixed <rdar://problem/3655363>: (Editing: -scrollLineUp: method unimplemented (WebKit editing API))
    
            * WebView.subproj/WebView.m:
            (-[WebView centerSelectionInVisibleArea:]): Implemented. The implementation isn't perfect, but it's hooked
            up. It simply calls ensureCaretVisible for now.
            (-[WebView moveBackward:]): Implemented. The WebCore API already has a way to specify backward as opposed
            to left. A separate issue is the fact that these operations don't have bi-di-savvy implementations, but
            now this method is hooked up and will work at least for left-to-right text.
            (-[WebView moveBackwardAndModifySelection:]): Ditto.
            (-[WebView moveForward:]): Ditto.
            (-[WebView moveForwardAndModifySelection:]): Ditto.
            (-[WebView moveWordBackward:]): Ditto.
            (-[WebView moveWordBackwardAndModifySelection:]): Ditto.
            (-[WebView moveWordForward:]): Ditto.
            (-[WebView moveWordForwardAndModifySelection:]): Ditto.
            (-[WebView scrollLineDown:]): Forward to WebFrameView.
            (-[WebView scrollLineUp:]): Ditto.
            (-[WebView scrollPageDown:]): Ditto.
            (-[WebView scrollPageUp:]): Ditto.
            (-[WebView delete:]): Implemented. Follows pattern used in cut, copy, and paste.
            (-[WebView pasteAsPlainText:]): Implemented. Calls delegate, then replaceSelectionWithText: on the bridge.
            (-[WebView insertTab:]): Implemented. Calls delegate, then replaceSelectionWithText: on the bridge.
            (-[WebView insertBacktab:]): Implemented. Does nothing. If we ever change so that you can use a WebView as
            a field editor, then we might have to add code here.
            (-[WebView deleteWordForward:]): Implement by calling moveForwardAndModifySelection: and then delete:.
            Might not be a perfect implementation in the presence of delegates who refuse to delete because it will
            change the selection even if the delete is disallowed.
            (-[WebView deleteWordBackward:]): Implement by calling moveBackwardAndModifySelection: and then delete:.
            Same issue about about delegates as deleteWordForward:.
    
            * WebView.subproj/WebHTMLView.m: (-[WebHTMLView _pasteFromPasteboard:]): Added a FIXME.
    
            * DOM.subproj/DOMViews.h: Updated from recent change to WebCore.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@6669 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 6ce27b6..42be62f 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,53 @@
+2004-05-22  Darin Adler  <darin at apple.com>
+
+        Reviewed by Ken.
+
+        - implemented some of the trivial WebView editing operations; some had bug reports, to wit:
+        - fixed <rdar://problem/3655342>: (Editing: -centerSelectionInVisibleArea: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655398>: (Editing: -deleteWordBackward: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655397>: (Editing: -deleteWordForward: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655387>: (Editing: -insertBacktab: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655386>: (Editing: -insertTab: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655351>: (Editing: -moveWordBackward: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655352>: (Editing: -moveWordBackwardAndModifySelection: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655353>: (Editing: -moveWordForward: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655354>: (Editing: -moveWordForwardAndModifySelection: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655374>: (Editing: -pasteAsPlainText: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655362>: (Editing: -scrollLineDown: method unimplemented (WebKit editing API))
+        - fixed <rdar://problem/3655363>: (Editing: -scrollLineUp: method unimplemented (WebKit editing API))
+
+        * WebView.subproj/WebView.m:
+        (-[WebView centerSelectionInVisibleArea:]): Implemented. The implementation isn't perfect, but it's hooked
+        up. It simply calls ensureCaretVisible for now.
+        (-[WebView moveBackward:]): Implemented. The WebCore API already has a way to specify backward as opposed
+        to left. A separate issue is the fact that these operations don't have bi-di-savvy implementations, but
+        now this method is hooked up and will work at least for left-to-right text.
+        (-[WebView moveBackwardAndModifySelection:]): Ditto.
+        (-[WebView moveForward:]): Ditto.
+        (-[WebView moveForwardAndModifySelection:]): Ditto.
+        (-[WebView moveWordBackward:]): Ditto.
+        (-[WebView moveWordBackwardAndModifySelection:]): Ditto.
+        (-[WebView moveWordForward:]): Ditto.
+        (-[WebView moveWordForwardAndModifySelection:]): Ditto.
+        (-[WebView scrollLineDown:]): Forward to WebFrameView.
+        (-[WebView scrollLineUp:]): Ditto.
+        (-[WebView scrollPageDown:]): Ditto.
+        (-[WebView scrollPageUp:]): Ditto.
+        (-[WebView delete:]): Implemented. Follows pattern used in cut, copy, and paste.
+        (-[WebView pasteAsPlainText:]): Implemented. Calls delegate, then replaceSelectionWithText: on the bridge.
+        (-[WebView insertTab:]): Implemented. Calls delegate, then replaceSelectionWithText: on the bridge.
+        (-[WebView insertBacktab:]): Implemented. Does nothing. If we ever change so that you can use a WebView as
+        a field editor, then we might have to add code here.
+        (-[WebView deleteWordForward:]): Implement by calling moveForwardAndModifySelection: and then delete:.
+        Might not be a perfect implementation in the presence of delegates who refuse to delete because it will
+        change the selection even if the delete is disallowed.
+        (-[WebView deleteWordBackward:]): Implement by calling moveBackwardAndModifySelection: and then delete:.
+        Same issue about about delegates as deleteWordForward:.
+
+        * WebView.subproj/WebHTMLView.m: (-[WebHTMLView _pasteFromPasteboard:]): Added a FIXME.
+
+        * DOM.subproj/DOMViews.h: Updated from recent change to WebCore.
+
 2004-05-21  Richard Williamson   <rjw at apple.com>
 
         Removed _bindObject:forFrame: SPI.
@@ -39,8 +89,8 @@
 
         Provide the methods to glue the WebView's editing delegate so that these methods work:
         
-        <rdar://problem/3655316>: "Editing:Ê-webViewShouldBeginEditing:inDOMRange:ÊmethodÊunimplementedÊ(WebKitÊeditingÊAPI)"
-        <rdar://problem/3655317>: "Editing:Ê-webViewShouldEndEditing:inDOMRange:ÊmethodÊunimplementedÊ(WebKitÊeditingÊAPI)"
+        <rdar://problem/3655316>: "Editing: -webViewShouldBeginEditing:inDOMRange: method unimplemented (WebKit editing API)"
+        <rdar://problem/3655317>: "Editing: -webViewShouldEndEditing:inDOMRange: method unimplemented (WebKit editing API)"
 
         * WebCoreSupport.subproj/WebBridge.m:
         (-[WebBridge shouldBeginEditing:]): New method used to glue delegate to focus shifts.
@@ -290,8 +340,8 @@
         NSView behavior gives us just what we want, and there is no
         special behavior required for editing.
 
-        <rdar://problem/3655364>: "Editing:Ê-scrollPageDown:ÊmethodÊunimplementedÊ(WebKitÊeditingÊAPI)"
-        <rdar://problem/3655365>: "Editing:Ê-scrollPageUp:ÊmethodÊunimplementedÊ(WebKitÊeditingÊAPI)"
+        <rdar://problem/3655364>: "Editing: -scrollPageDown: method unimplemented (WebKit editing API)"
+        <rdar://problem/3655365>: "Editing: -scrollPageUp: method unimplemented (WebKit editing API)"
 
         * WebView.subproj/WebView.h: Comment methods out and add a note about why.
         * WebView.subproj/WebView.m: Remove stubbed out implementation.
diff --git a/WebKit/DOM.subproj/DOMViews.h b/WebKit/DOM.subproj/DOMViews.h
index 8d581fc..b143d9c 100644
--- a/WebKit/DOM.subproj/DOMViews.h
+++ b/WebKit/DOM.subproj/DOMViews.h
@@ -25,12 +25,10 @@
 
 #import <WebKit/DOMCore.h>
 
- at class DOMDocumentView;
-
 @interface DOMAbstractView : DOMObject
-- (DOMDocumentView *)document;
+- (DOMDocument *)document;
 @end
 
- at interface DOMDocumentView : DOMObject
+ at interface DOMDocument (DOMDocumentView)
 - (DOMAbstractView *)defaultView;
 @end
diff --git a/WebKit/WebView.subproj/WebHTMLView.m b/WebKit/WebView.subproj/WebHTMLView.m
index b5adfc0..166d65b 100644
--- a/WebKit/WebView.subproj/WebHTMLView.m
+++ b/WebKit/WebView.subproj/WebHTMLView.m
@@ -588,6 +588,9 @@ static WebHTMLView *lastHitView = nil;
         NSString *URLString = [URL _web_originalDataAsString];
         NSString *linkLabel = [pasteboard stringForType:WebURLNamePboardType];
         linkLabel = [linkLabel length] > 0 ? linkLabel : URLString;
+        // FIXME: Need to escape the text in the linkLabel, otherwise characters like "<" won't work.
+        // An even better solution would be to make a DOM node with the DOM API rather than creating
+        // a markup string here.
         NSString *markupString = [NSString stringWithFormat:@"<A HREF=\"%@\">%@</A>", URLString, linkLabel];
         [self _replaceSelectionWithMarkupString:markupString];
     } else if ([types containsObject:NSRTFDPboardType]) {
@@ -884,15 +887,32 @@ static WebHTMLView *lastHitView = nil;
 
 - (void)copy:(id)sender
 {
+    if (![self _haveSelection]) {
+        NSBeep();
+        return;
+    }
     [self _writeSelectionToPasteboard:[NSPasteboard generalPasteboard]];
 }
 
 - (void)cut:(id)sender
 {   
+    if (![self _haveSelection]) {
+        NSBeep();
+        return;
+    }
     [self copy:sender];
     [[self _bridge] deleteSelection];
 }
 
+- (void)delete:(id)sender
+{
+    if (![self _haveSelection]) {
+        NSBeep();
+        return;
+    }
+    [[self _bridge] deleteSelection];
+}
+
 - (void)paste:(id)sender
 {
     [self _pasteFromPasteboard:[NSPasteboard generalPasteboard]];
@@ -1059,27 +1079,6 @@ static WebHTMLView *lastHitView = nil;
     }
 }
 
-- (void)copy:(id)sender
-{
-    [self _writeSelectionToPasteboard:[NSPasteboard generalPasteboard]];
-}
-
-- (void)cut:(id)sender
-{   
-    [self copy:sender];
-    [[self _bridge] deleteSelection];
-}
-
-- (void)delete:(id)sender
-{
-    [[self _bridge] deleteSelection];
-}
-
-- (void)paste:(id)sender
-{
-    [self _pasteFromPasteboard:[NSPasteboard generalPasteboard]];
-}
-
 - (BOOL)writeSelectionToPasteboard:(NSPasteboard *)pasteboard types:(NSArray *)types
 {
     [self _writeSelectionToPasteboard:pasteboard];
diff --git a/WebKit/WebView.subproj/WebHTMLViewPrivate.h b/WebKit/WebView.subproj/WebHTMLViewPrivate.h
index 91c6b0e..be9e00c 100644
--- a/WebKit/WebView.subproj/WebHTMLViewPrivate.h
+++ b/WebKit/WebView.subproj/WebHTMLViewPrivate.h
@@ -95,5 +95,6 @@
 - (void)cut:(id)sender;
 - (void)copy:(id)sender;
 - (void)paste:(id)sender;
+- (void)delete:(id)sender;
 
 @end
diff --git a/WebKit/WebView.subproj/WebView.h b/WebKit/WebView.subproj/WebView.h
index ff2c337..535be3b 100644
--- a/WebKit/WebView.subproj/WebView.h
+++ b/WebKit/WebView.subproj/WebView.h
@@ -607,7 +607,8 @@ extern NSString * const WebViewDidChangeSelectionNotification;
 - (void)pageUp:(id)sender;
 - (void)scrollLineDown:(id)sender;
 - (void)scrollLineUp:(id)sender;
-// Use default responder behavior for scrollPageDown: and scrollPageUp:.
+- (void)scrollPageDown:(id)sender;
+- (void)scrollPageUp:(id)sender;
 
     /* Selections */
 
diff --git a/WebKit/WebView.subproj/WebView.m b/WebKit/WebView.subproj/WebView.m
index e640b40..32477b3 100644
--- a/WebKit/WebView.subproj/WebView.m
+++ b/WebKit/WebView.subproj/WebView.m
@@ -2570,7 +2570,8 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)centerSelectionInVisibleArea:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        // FIXME: Does this do the right thing when the selection is not a caret?
+        [[self _bridgeForCurrentSelection] ensureCaretVisible];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(centerSelectionInVisibleArea:) with:sender];
@@ -2579,7 +2580,7 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)moveBackward:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        [self _alterCurrentSelection:WebSelectByMoving direction:WebSelectBackward granularity:WebSelectByCharacter];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(moveBackward:) with:sender];
@@ -2588,7 +2589,7 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)moveBackwardAndModifySelection:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        [self _alterCurrentSelection:WebSelectByExtending direction:WebSelectBackward granularity:WebSelectByCharacter];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(moveBackwardAndModifySelection:) with:sender];
@@ -2615,7 +2616,7 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)moveForward:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        [self _alterCurrentSelection:WebSelectByMoving direction:WebSelectForward granularity:WebSelectByCharacter];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(moveForward:) with:sender];
@@ -2624,7 +2625,7 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)moveForwardAndModifySelection:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        [self _alterCurrentSelection:WebSelectByExtending direction:WebSelectForward granularity:WebSelectByCharacter];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(moveForwardAndModifySelection:) with:sender];
@@ -2741,7 +2742,7 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)moveWordBackward:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        [self _alterCurrentSelection:WebSelectByMoving direction:WebSelectBackward granularity:WebSelectByWord];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(moveWordBackward:) with:sender];
@@ -2750,7 +2751,7 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)moveWordBackwardAndModifySelection:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        [self _alterCurrentSelection:WebSelectByExtending direction:WebSelectBackward granularity:WebSelectByWord];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(moveWordBackwardAndModifySelection:) with:sender];
@@ -2759,7 +2760,7 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)moveWordForward:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        [self _alterCurrentSelection:WebSelectByMoving direction:WebSelectForward granularity:WebSelectByWord];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(moveWordForward:) with:sender];
@@ -2768,7 +2769,7 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)moveWordForwardAndModifySelection:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        [self _alterCurrentSelection:WebSelectByExtending direction:WebSelectForward granularity:WebSelectByWord];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(moveWordForwardAndModifySelection:) with:sender];
@@ -2830,8 +2831,9 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 
 - (void)scrollLineDown:(id)sender
 {
-    if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+    WebFrameView *frameView = [[self mainFrame] frameView];
+    if (frameView) {
+        [frameView scrollLineDown:sender];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(scrollLineDown:) with:sender];
@@ -2839,13 +2841,34 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 
 - (void)scrollLineUp:(id)sender
 {
-    if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+    WebFrameView *frameView = [[self mainFrame] frameView];
+    if (frameView) {
+        [frameView scrollLineUp:sender];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(scrollLineUp:) with:sender];
 }
 
+- (void)scrollPageDown:(id)sender
+{
+    WebFrameView *frameView = [[self mainFrame] frameView];
+    if (frameView) {
+        [frameView scrollPageDown:sender];
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(scrollPageDown:) with:sender];
+}
+
+- (void)scrollPageUp:(id)sender
+{
+    WebFrameView *frameView = [[self mainFrame] frameView];
+    if (frameView) {
+        [frameView scrollPageUp:sender];
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(scrollPageUp:) with:sender];
+}
+
 
     /* Selections */
 
@@ -2945,7 +2968,10 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)delete:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        id <WebDocumentView> view = [[[self mainFrame] frameView] documentView];
+        if ([view isKindOfClass:[WebHTMLView class]]) {
+            [(WebHTMLView *)view delete:nil];
+        }
         return;
     }
     [[self nextResponder] tryToPerform:@selector(delete:) with:sender];
@@ -2954,7 +2980,13 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)pasteAsPlainText:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        id <WebDocumentView> view = [[[self mainFrame] frameView] documentView];
+        if ([view isKindOfClass:[WebHTMLView class]]) {
+            NSString *text = [[NSPasteboard generalPasteboard] stringForType:NSStringPboardType];
+            if ([[self _editingDelegateForwarder] webView:self shouldInsertText:text replacingDOMRange:[self selectedDOMRange] givenAction:WebViewInsertActionPasted]) {
+                [[self _bridgeForCurrentSelection] replaceSelectionWithText:text];
+            }
+        }
         return;
     }
     [[self nextResponder] tryToPerform:@selector(pasteAsPlainText:) with:sender];
@@ -3065,7 +3097,12 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)insertTab:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        id <WebDocumentView> view = [[[self mainFrame] frameView] documentView];
+        if ([view isKindOfClass:[WebHTMLView class]]) {
+            if ([[self _editingDelegateForwarder] webView:self shouldInsertText:@"\t" replacingDOMRange:[self selectedDOMRange] givenAction:WebViewInsertActionPasted]) {
+                [[self _bridgeForCurrentSelection] replaceSelectionWithText:@"\t"];
+            }
+        }
         return;
     }
     [[self nextResponder] tryToPerform:@selector(insertTab:) with:sender];
@@ -3073,19 +3110,17 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 
 - (void)insertBacktab:(id)sender
 {
-    if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
-        return;
-    }
+    // Doing nothing matches normal NSTextView behavior. If we ever use WebView for a field-editor-type purpose
+    // we might add code here.
     [[self nextResponder] tryToPerform:@selector(insertBacktab:) with:sender];
 }
 
 - (void)insertNewline:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        WebBridge *bridge = [self _bridgeForCurrentSelection];
         // Perhaps we should make this delegate call sensitive to the real DOM operation we actually do.
         if ([[self _editingDelegateForwarder] webView:self shouldInsertText:@"\n" replacingDOMRange:[self selectedDOMRange] givenAction:WebViewInsertActionTyped]) {
+            WebBridge *bridge = [self _bridgeForCurrentSelection];
             [bridge replaceSelectionWithNewline];
             [bridge ensureCaretVisible];
         }
@@ -3157,8 +3192,8 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)deleteBackward:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        WebBridge *bridge = [self _bridgeForCurrentSelection];
         if ([[self _editingDelegateForwarder] webView:self shouldDeleteDOMRange:[self selectedDOMRange]]) {
+            WebBridge *bridge = [self _bridgeForCurrentSelection];
             [bridge deleteKeyPressed];
             [bridge ensureCaretVisible];
         }
@@ -3179,7 +3214,8 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)deleteWordForward:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        [self moveWordForwardAndModifySelection:sender];
+        [self delete:sender];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(deleteWordForward:) with:sender];
@@ -3188,7 +3224,8 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)deleteWordBackward:(id)sender
 {
     if ([self _currentSelectionIsEditable]) {
-        ERROR("unimplemented");
+        [self moveWordBackwardAndModifySelection:sender];
+        [self delete:sender];
         return;
     }
     [[self nextResponder] tryToPerform:@selector(deleteWordBackward:) with:sender];
@@ -3301,8 +3338,8 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
 - (void)insertText:(NSString *)text
 {
     if ([self _currentSelectionIsEditable]) {
-        WebBridge *bridge = [self _bridgeForCurrentSelection];
         if ([[self _editingDelegateForwarder] webView:self shouldInsertText:text replacingDOMRange:[self selectedDOMRange] givenAction:WebViewInsertActionTyped]) {
+            WebBridge *bridge = [self _bridgeForCurrentSelection];
             [bridge replaceSelectionWithText:text];
             [bridge ensureCaretVisible];
         }

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list