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

kocienda kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 08:33:55 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 7b9abad3ba0d851973dec1cc10b69d4ac44ea2ac
Author: kocienda <kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Fri Apr 9 23:30:18 2004 +0000

    WebCore:
    
            Reviewed by Darin
    
            Added support for methods added to flesh out the WebKit
            editing API.
    
            * khtml/khtml_part.h: Removed pasteMarkupString and deleteSelection functions.
            All this work is now done in WebCoreBridge.
            * kwq/WebCoreBridge.h:
            * kwq/WebCoreBridge.mm:
            (-[WebCoreBridge isSelectionEditable]): Added a FIXME.
            (-[WebCoreBridge setDrawsBackground:]): Moved this since CVS merged this in the
            middle of editing code.
            (-[WebCoreBridge replaceSelectionWithNode:]): New method.
            (-[WebCoreBridge replaceSelectionWithText:]): Replaces insertText:
            (-[WebCoreBridge replaceSelectionWithMarkupString:]): New method.
            (-[WebCoreBridge replaceSelectionWithWebArchive:]): New method.
            (-[WebCoreBridge replaceSelectionWithNewline]): Replaces insertNewline:
            (-[WebCoreBridge deleteSelection]): New method.
            (-[WebCoreBridge applyStyle:toElementsInDOMRange:]): New method.
    
    WebKit:
    
            Reviewed by Darin
    
            Stubbed in the entire WebKit editing API, improving some
            methods already present in minor ways, and adding those
            methods not yet present.
    
            * WebCoreSupport.subproj/WebBridge.m:
            (-[WebBridge editingKeyDown:]):
            * WebView.subproj/WebDefaultEditingDelegate.m:
            (-[WebDefaultEditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:stillSelecting:]):
            * WebView.subproj/WebHTMLView.m:
            (-[WebHTMLView _pasteMarkupString:]):
            * WebView.subproj/WebView.m:
            (-[WebView _alterCurrentSelection:direction:granularity:]):
            (-[WebView _currentSelectionIsEditable]):
            (-[WebView computedStyleForElement:pseudoElement:]):
            (-[WebView _editingKeyDown:]):
            (-[WebView setEditable:]):
            (-[WebView isEditable]):
            (-[WebView setTypingStyle:]):
            (-[WebView typingStyle]):
            (-[WebView setSmartInsertDeleteEnabled:]):
            (-[WebView smartInsertDeleteEnabled]):
            (-[WebView setContinuousSpellCheckingEnabled:]):
            (-[WebView isContinuousSpellCheckingEnabled]):
            (-[WebView spellCheckerDocumentTag]):
            (-[WebView undoManager]):
            (-[WebView insertNode:replacingDOMRange:]):
            (-[WebView insertText:replacingDOMRange:]):
            (-[WebView insertMarkupString:replacingDOMRange:]):
            (-[WebView insertWebArchive:replacingDOMRange:]):
            (-[WebView deleteDOMRange:]):
            (-[WebView applyStyle:toElementsInDOMRange:]):
            (-[WebView centerSelectionInVisibleArea:]):
            (-[WebView moveBackward:]):
            (-[WebView moveBackwardAndModifySelection:]):
            (-[WebView moveDown:]):
            (-[WebView moveDownAndModifySelection:]):
            (-[WebView moveForward:]):
            (-[WebView moveForwardAndModifySelection:]):
            (-[WebView moveLeft:]):
            (-[WebView moveLeftAndModifySelection:]):
            (-[WebView moveRight:]):
            (-[WebView moveRightAndModifySelection:]):
            (-[WebView moveToBeginningOfDocument:]):
            (-[WebView moveToBeginningOfLine:]):
            (-[WebView moveToBeginningOfParagraph:]):
            (-[WebView moveToEndOfDocument:]):
            (-[WebView moveToEndOfLine:]):
            (-[WebView moveToEndOfParagraph:]):
            (-[WebView moveUp:]):
            (-[WebView moveUpAndModifySelection:]):
            (-[WebView moveWordBackward:]):
            (-[WebView moveWordBackwardAndModifySelection:]):
            (-[WebView moveWordForward:]):
            (-[WebView moveWordForwardAndModifySelection:]):
            (-[WebView moveWordLeft:]):
            (-[WebView moveWordLeftAndModifySelection:]):
            (-[WebView moveWordRight:]):
            (-[WebView moveWordRightAndModifySelection:]):
            (-[WebView pageDown:]):
            (-[WebView pageUp:]):
            (-[WebView scrollLineDown:]):
            (-[WebView scrollLineUp:]):
            (-[WebView scrollPageDown:]):
            (-[WebView scrollPageUp:]):
            (-[WebView selectAll:]):
            (-[WebView selectParagraph:]):
            (-[WebView selectLine:]):
            (-[WebView selectWord:]):
            (-[WebView copy:]):
            (-[WebView cut:]):
            (-[WebView paste:]):
            (-[WebView copyFont:]):
            (-[WebView pasteFont:]):
            (-[WebView delete:]):
            (-[WebView pasteAsPlainText:]):
            (-[WebView pasteAsRichText:]):
            (-[WebView changeFont:]):
            (-[WebView changeAttributes:]):
            (-[WebView changeDocumentBackgroundColor:]):
            (-[WebView changeColor:]):
            (-[WebView alignCenter:]):
            (-[WebView alignJustified:]):
            (-[WebView alignLeft:]):
            (-[WebView alignRight:]):
            (-[WebView indent:]):
            (-[WebView insertTab:]):
            (-[WebView insertBacktab:]):
            (-[WebView insertNewline:]):
            (-[WebView insertParagraphSeparator:]):
            (-[WebView changeCaseOfLetter:]):
            (-[WebView uppercaseWord:]):
            (-[WebView lowercaseWord:]):
            (-[WebView capitalizeWord:]):
            (-[WebView deleteForward:]):
            (-[WebView deleteBackward:]):
            (-[WebView deleteBackwardByDecomposingPreviousCharacter:]):
            (-[WebView deleteWordForward:]):
            (-[WebView deleteWordBackward:]):
            (-[WebView deleteToBeginningOfLine:]):
            (-[WebView deleteToEndOfLine:]):
            (-[WebView deleteToBeginningOfParagraph:]):
            (-[WebView deleteToEndOfParagraph:]):
            (-[WebView complete:]):
            (-[WebView checkSpelling:]):
            (-[WebView showGuessPanel:]):
            (-[WebView performFindPanelAction:]):
            (-[WebView startSpeaking:]):
            (-[WebView stopSpeaking:]):
            (-[WebView insertText:]):
            * WebView.subproj/WebViewPrivate.h:
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@6350 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 5e2dff4..e37fcdc 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,25 @@
+2004-04-09  Ken Kocienda  <kocienda at apple.com>
+
+        Reviewed by Darin
+
+        Added support for methods added to flesh out the WebKit 
+        editing API.
+
+        * khtml/khtml_part.h: Removed pasteMarkupString and deleteSelection functions.
+        All this work is now done in WebCoreBridge.
+        * kwq/WebCoreBridge.h:
+        * kwq/WebCoreBridge.mm:
+        (-[WebCoreBridge isSelectionEditable]): Added a FIXME.
+        (-[WebCoreBridge setDrawsBackground:]): Moved this since CVS merged this in the
+        middle of editing code.
+        (-[WebCoreBridge replaceSelectionWithNode:]): New method.
+        (-[WebCoreBridge replaceSelectionWithText:]): Replaces insertText:
+        (-[WebCoreBridge replaceSelectionWithMarkupString:]): New method.
+        (-[WebCoreBridge replaceSelectionWithWebArchive:]): New method.
+        (-[WebCoreBridge replaceSelectionWithNewline]): Replaces insertNewline:
+        (-[WebCoreBridge deleteSelection]): New method.
+        (-[WebCoreBridge applyStyle:toElementsInDOMRange:]): New method.
+
 2004-04-09  Darin Adler  <darin at apple.com>
 
         Reviewed by Ken.
diff --git a/WebCore/khtml/khtml_part.cpp b/WebCore/khtml/khtml_part.cpp
index bb118ef..ecc1f54 100644
--- a/WebCore/khtml/khtml_part.cpp
+++ b/WebCore/khtml/khtml_part.cpp
@@ -2501,12 +2501,6 @@ void KHTMLPart::clearSelection()
     notifySelectionChanged();
 }
 
-void KHTMLPart::deleteSelection()
-{
-    EditCommand cmd(DeleteSelectionCommand(d->m_doc));
-    cmd.apply();
-}
-
 void KHTMLPart::invalidateSelection()
 {
     clearCaretRectIfNeeded();
@@ -5157,12 +5151,6 @@ void KHTMLPart::reappliedEditing(EditCommand &cmd)
     d->m_lastEditCommand = EditCommand::emptyCommand();
 }
 
-void KHTMLPart::pasteMarkupString(const QString &markupString)
-{
-    EditCommand cmd(PasteMarkupCommand(d->m_doc, DOMString(markupString)));
-    cmd.apply();
-}
-
 #if !APPLE_CHANGES
 
 bool KHTMLPart::checkLinkSecurity(const KURL &linkURL,const QString &message, const QString &button)
diff --git a/WebCore/khtml/khtml_part.h b/WebCore/khtml/khtml_part.h
index 667400c..76cad99 100644
--- a/WebCore/khtml/khtml_part.h
+++ b/WebCore/khtml/khtml_part.h
@@ -589,11 +589,6 @@ public:
   void clearSelection();
 
   /**
-      * Deletes the nodes of the current selection.
-   */
-  void deleteSelection();
-  
-  /**
    * Invalidates the current selection.
    */
   void invalidateSelection();
@@ -654,11 +649,6 @@ public:
   void reappliedEditing(khtml::EditCommand &);
 
   /**
-   * Pastes a markup string (such as an HTML string) at the current caret position.
-   */
-  void pasteMarkupString(const QString &markupString);
-
-  /**
    * Convenience method to show the document's view.
    *
    * Equivalent to widget()->show() or view()->show() .
diff --git a/WebCore/kwq/WebCoreBridge.h b/WebCore/kwq/WebCoreBridge.h
index 60fa140..37cf707 100644
--- a/WebCore/kwq/WebCoreBridge.h
+++ b/WebCore/kwq/WebCoreBridge.h
@@ -51,11 +51,13 @@ typedef khtml::RenderPart KHTMLRenderPart;
 
 #endif
 
+ at class DOMCSSStyleDeclaration;
 @class DOMDocument;
 @class DOMElement;
 @class DOMHTMLImageElement;
 @class DOMNode;
 @class DOMRange;
+ at class WebArchive;
 @class WebCoreSettings;
 
 @protocol WebCoreDOMTreeCopier;
@@ -229,9 +231,6 @@ typedef enum {
 - (BOOL)isSelectionEditable;
 - (BOOL)moveCaretToPoint:(NSPoint)point;
 
-- (void)pasteMarkupString:(NSString *)markupString;
-
-- (void)deleteSelection;
 - (BOOL)haveSelection;
 
 - (NSAttributedString *)selectedAttributedString;
@@ -284,9 +283,14 @@ typedef enum {
 - (void)redoEditing:(id)arg;
 - (DOMRange *)rangeByAlteringCurrentSelection:(WebSelectionAlteration)alteration direction:(WebSelectionDirection)direction granularity:(WebSelectionGranularity)granularity;
 - (void)alterCurrentSelection:(WebSelectionAlteration)alteration direction:(WebSelectionDirection)direction granularity:(WebSelectionGranularity)granularity;
-- (void)insertText:(NSString *)text;
-- (void)insertNewline;
+- (void)replaceSelectionWithText:(NSString *)text;
+- (void)replaceSelectionWithNode:(DOMNode *)node;
+- (void)replaceSelectionWithMarkupString:(NSString *)markupString;
+- (void)replaceSelectionWithWebArchive:(WebArchive *)archive;
+- (void)replaceSelectionWithNewline;
+- (void)deleteSelection;
 - (void)deleteKeyPressed;
+- (void)applyStyle:(DOMCSSStyleDeclaration *)style toElementsInDOMRange:(DOMRange *)range;
 
 @end
 
diff --git a/WebCore/kwq/WebCoreBridge.mm b/WebCore/kwq/WebCoreBridge.mm
index 271cd14..f3ddbad 100644
--- a/WebCore/kwq/WebCoreBridge.mm
+++ b/WebCore/kwq/WebCoreBridge.mm
@@ -75,6 +75,7 @@
 #import "WebCoreSettings.h"
 
 #import <AppKit/NSView.h>
+#import <WebKit/WebArchive.h>
 
 using DOM::AtomicString;
 using DOM::DocumentImpl;
@@ -91,8 +92,10 @@ using DOM::NodeImpl;
 using DOM::Range;
 
 using khtml::Decoder;
+using khtml::DeleteSelectionCommand;
 using khtml::EditCommand;
 using khtml::EditCommandImpl;
+using khtml::PasteMarkupCommand;
 using khtml::parseURL;
 using khtml::RenderCanvas;
 using khtml::RenderImage;
@@ -384,6 +387,7 @@ static bool initializedKJS = FALSE;
 
 - (BOOL)isSelectionEditable
 {
+    // EDIT FIXME: This needs to consider the entire selected range
 	NodeImpl *startNode = _part->selection().startNode();
 	return startNode ? startNode->isContentEditable() : NO;
 }
@@ -417,16 +421,6 @@ static bool initializedKJS = FALSE;
     return YES;
 }
 
-- (void)pasteMarkupString:(NSString *)markupString
-{
-    _part->pasteMarkupString(QString::fromNSString(markupString));
-}
-
-- (void)deleteSelection
-{
-    _part->deleteSelection();
-}
-
 - (BOOL)haveSelection
 {
     return _part->selection().state() == KHTMLSelection::RANGE;
@@ -1291,6 +1285,12 @@ static HTMLFormElementImpl *formElementFromDOMElement(DOMElement *element)
     return _part->xmlDocImpl()->getOrCreateAccObjectCache()->accObject(root);
 }
 
+- (void)setDrawsBackground:(BOOL)drawsBackground
+{
+    if (_part && _part->view())
+        _part->view()->setTransparent(!drawsBackground);
+}
+
 - (void)undoEditing:(id)arg
 {
     ASSERT([arg isKindOfClass:[KWQEditCommand class]]);
@@ -1353,7 +1353,12 @@ static HTMLFormElementImpl *formElementFromDOMElement(DOMElement *element)
     return [DOMRange _rangeWithImpl:_part->selection().toRange().handle()];
 }
 
-- (void)insertText:(NSString *)text
+- (void)replaceSelectionWithNode:(DOMNode *)node
+{
+    ERROR("unimplemented");
+}
+
+- (void)replaceSelectionWithText:(NSString *)text
 {
     if (!_part || !_part->xmlDocImpl())
         return;
@@ -1362,7 +1367,21 @@ static HTMLFormElementImpl *formElementFromDOMElement(DOMElement *element)
     TypingCommand::insertText(_part->xmlDocImpl(), s);
 }
 
-- (void)insertNewline
+- (void)replaceSelectionWithMarkupString:(NSString *)markupString
+{
+    if (!_part || !_part->xmlDocImpl() || !markupString)
+        return;
+    
+    PasteMarkupCommand cmd(_part->xmlDocImpl(), markupString);
+    cmd.apply();
+}
+
+- (void)replaceSelectionWithWebArchive:(WebArchive *)archive
+{
+    ERROR("unimplemented");
+}
+
+- (void)replaceSelectionWithNewline
 {
     if (!_part || !_part->xmlDocImpl())
         return;
@@ -1370,6 +1389,19 @@ static HTMLFormElementImpl *formElementFromDOMElement(DOMElement *element)
     TypingCommand::insertNewline(_part->xmlDocImpl());
 }
 
+- (void)deleteSelection
+{
+    if (!_part || !_part->xmlDocImpl())
+        return;
+    
+    KHTMLSelection selection(_part->selection());
+    if (selection.state() != KHTMLSelection::RANGE)
+        return;
+    
+    DeleteSelectionCommand cmd(_part->xmlDocImpl());
+    cmd.apply();
+}
+
 - (void)deleteKeyPressed
 {
     if (!_part || !_part->xmlDocImpl())
@@ -1378,10 +1410,9 @@ static HTMLFormElementImpl *formElementFromDOMElement(DOMElement *element)
     TypingCommand::deleteKeyPressed(_part->xmlDocImpl());
 }
 
-- (void)setDrawsBackground:(BOOL)drawsBackground
+- (void)applyStyle:(DOMCSSStyleDeclaration *)style toElementsInDOMRange:(DOMRange *)range
 {
-    if (_part && _part->view())
-        _part->view()->setTransparent(!drawsBackground);
+    ERROR("unimplemented");
 }
 
 @end
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 36ab52b..8f964c7 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,118 @@
+2004-04-09  Ken Kocienda  <kocienda at apple.com>
+
+        Reviewed by Darin
+
+        Stubbed in the entire WebKit editing API, improving some
+        methods already present in minor ways, and adding those 
+        methods not yet present.
+
+        * WebCoreSupport.subproj/WebBridge.m:
+        (-[WebBridge editingKeyDown:]):
+        * WebView.subproj/WebDefaultEditingDelegate.m:
+        (-[WebDefaultEditingDelegate webView:shouldChangeSelectedDOMRange:toDOMRange:stillSelecting:]):
+        * WebView.subproj/WebHTMLView.m:
+        (-[WebHTMLView _pasteMarkupString:]):
+        * WebView.subproj/WebView.m:
+        (-[WebView _alterCurrentSelection:direction:granularity:]):
+        (-[WebView _currentSelectionIsEditable]):
+        (-[WebView computedStyleForElement:pseudoElement:]):
+        (-[WebView _editingKeyDown:]):
+        (-[WebView setEditable:]):
+        (-[WebView isEditable]):
+        (-[WebView setTypingStyle:]):
+        (-[WebView typingStyle]):
+        (-[WebView setSmartInsertDeleteEnabled:]):
+        (-[WebView smartInsertDeleteEnabled]):
+        (-[WebView setContinuousSpellCheckingEnabled:]):
+        (-[WebView isContinuousSpellCheckingEnabled]):
+        (-[WebView spellCheckerDocumentTag]):
+        (-[WebView undoManager]):
+        (-[WebView insertNode:replacingDOMRange:]):
+        (-[WebView insertText:replacingDOMRange:]):
+        (-[WebView insertMarkupString:replacingDOMRange:]):
+        (-[WebView insertWebArchive:replacingDOMRange:]):
+        (-[WebView deleteDOMRange:]):
+        (-[WebView applyStyle:toElementsInDOMRange:]):
+        (-[WebView centerSelectionInVisibleArea:]):
+        (-[WebView moveBackward:]):
+        (-[WebView moveBackwardAndModifySelection:]):
+        (-[WebView moveDown:]):
+        (-[WebView moveDownAndModifySelection:]):
+        (-[WebView moveForward:]):
+        (-[WebView moveForwardAndModifySelection:]):
+        (-[WebView moveLeft:]):
+        (-[WebView moveLeftAndModifySelection:]):
+        (-[WebView moveRight:]):
+        (-[WebView moveRightAndModifySelection:]):
+        (-[WebView moveToBeginningOfDocument:]):
+        (-[WebView moveToBeginningOfLine:]):
+        (-[WebView moveToBeginningOfParagraph:]):
+        (-[WebView moveToEndOfDocument:]):
+        (-[WebView moveToEndOfLine:]):
+        (-[WebView moveToEndOfParagraph:]):
+        (-[WebView moveUp:]):
+        (-[WebView moveUpAndModifySelection:]):
+        (-[WebView moveWordBackward:]):
+        (-[WebView moveWordBackwardAndModifySelection:]):
+        (-[WebView moveWordForward:]):
+        (-[WebView moveWordForwardAndModifySelection:]):
+        (-[WebView moveWordLeft:]):
+        (-[WebView moveWordLeftAndModifySelection:]):
+        (-[WebView moveWordRight:]):
+        (-[WebView moveWordRightAndModifySelection:]):
+        (-[WebView pageDown:]):
+        (-[WebView pageUp:]):
+        (-[WebView scrollLineDown:]):
+        (-[WebView scrollLineUp:]):
+        (-[WebView scrollPageDown:]):
+        (-[WebView scrollPageUp:]):
+        (-[WebView selectAll:]):
+        (-[WebView selectParagraph:]):
+        (-[WebView selectLine:]):
+        (-[WebView selectWord:]):
+        (-[WebView copy:]):
+        (-[WebView cut:]):
+        (-[WebView paste:]):
+        (-[WebView copyFont:]):
+        (-[WebView pasteFont:]):
+        (-[WebView delete:]):
+        (-[WebView pasteAsPlainText:]):
+        (-[WebView pasteAsRichText:]):
+        (-[WebView changeFont:]):
+        (-[WebView changeAttributes:]):
+        (-[WebView changeDocumentBackgroundColor:]):
+        (-[WebView changeColor:]):
+        (-[WebView alignCenter:]):
+        (-[WebView alignJustified:]):
+        (-[WebView alignLeft:]):
+        (-[WebView alignRight:]):
+        (-[WebView indent:]):
+        (-[WebView insertTab:]):
+        (-[WebView insertBacktab:]):
+        (-[WebView insertNewline:]):
+        (-[WebView insertParagraphSeparator:]):
+        (-[WebView changeCaseOfLetter:]):
+        (-[WebView uppercaseWord:]):
+        (-[WebView lowercaseWord:]):
+        (-[WebView capitalizeWord:]):
+        (-[WebView deleteForward:]):
+        (-[WebView deleteBackward:]):
+        (-[WebView deleteBackwardByDecomposingPreviousCharacter:]):
+        (-[WebView deleteWordForward:]):
+        (-[WebView deleteWordBackward:]):
+        (-[WebView deleteToBeginningOfLine:]):
+        (-[WebView deleteToEndOfLine:]):
+        (-[WebView deleteToBeginningOfParagraph:]):
+        (-[WebView deleteToEndOfParagraph:]):
+        (-[WebView complete:]):
+        (-[WebView checkSpelling:]):
+        (-[WebView showGuessPanel:]):
+        (-[WebView performFindPanelAction:]):
+        (-[WebView startSpeaking:]):
+        (-[WebView stopSpeaking:]):
+        (-[WebView insertText:]):
+        * WebView.subproj/WebViewPrivate.h:
+
 2004-04-09  Darin Adler  <darin at apple.com>
 
         Reviewed by Ken.
diff --git a/WebKit/WebCoreSupport.subproj/WebBridge.m b/WebKit/WebCoreSupport.subproj/WebBridge.m
index 4f200f4..1fe7c56 100644
--- a/WebKit/WebCoreSupport.subproj/WebBridge.m
+++ b/WebKit/WebCoreSupport.subproj/WebBridge.m
@@ -1186,7 +1186,7 @@ static id <WebFormDelegate> formDelegate(WebBridge *self)
 
 - (void)editingKeyDown:(NSEvent *)event
 {
-    [[_frame webView] editingKeyDown:event];
+    [[_frame webView] _editingKeyDown:event];
 }
 
 - (void)issueUndoCommand
diff --git a/WebKit/WebView.subproj/WebDefaultEditingDelegate.m b/WebKit/WebView.subproj/WebDefaultEditingDelegate.m
index 9b11691..c01de0f 100644
--- a/WebKit/WebView.subproj/WebDefaultEditingDelegate.m
+++ b/WebKit/WebView.subproj/WebDefaultEditingDelegate.m
@@ -47,7 +47,7 @@ static WebDefaultEditingDelegate *sharedDelegate = nil;
     return YES;
 }
 
-- (BOOL)webView:(WebView *)webView shouldChangeSelectedDOMRange:(DOMRange *)currentRange toDOMRange:(DOMRange *)proposedRange
+- (BOOL)webView:(WebView *)webView shouldChangeSelectedDOMRange:(DOMRange *)currentRange toDOMRange:(DOMRange *)proposedRange stillSelecting:(BOOL)flag
 {
     return YES;
 }
diff --git a/WebKit/WebView.subproj/WebHTMLView.m b/WebKit/WebView.subproj/WebHTMLView.m
index e57c263..4a8305f 100644
--- a/WebKit/WebView.subproj/WebHTMLView.m
+++ b/WebKit/WebView.subproj/WebHTMLView.m
@@ -582,7 +582,7 @@ static WebHTMLView *lastHitView = nil;
 - (void)_pasteMarkupString:(NSString *)markupString
 {
     if ([markupString length] > 0) {
-        [[self _bridge] pasteMarkupString:markupString];
+        [[self _bridge] replaceSelectionWithMarkupString:markupString];
     }
 }
 
diff --git a/WebKit/WebView.subproj/WebView.m b/WebKit/WebView.subproj/WebView.m
index 91ccb3f..a67cde7 100644
--- a/WebKit/WebView.subproj/WebView.m
+++ b/WebKit/WebView.subproj/WebView.m
@@ -5,6 +5,7 @@
 
 #import <WebKit/WebViewInternal.h>
 
+#import <WebKit/DOM.h>
 #import <WebKit/WebAssertions.h>
 #import <WebKit/WebBackForwardList.h>
 #import <WebKit/WebBaseNetscapePluginView.h>
@@ -2028,15 +2029,26 @@ static WebFrame *incrementFrame(WebFrame *curr, BOOL forward, BOOL wrapFlag)
 
 @end
 
+//==========================================================================================
+// Editing
 
-/*!
-    @implementation WebView (WebEditingExtras)
-*/
- at implementation WebView (WebEditingExtras)
+ at interface WebView (WebViewEditingInternal)
+
+- (void)_alterCurrentSelection:(WebSelectionAlteration)alteration direction:(WebSelectionDirection)direction granularity:(WebSelectionGranularity)granularity;
+- (WebBridge *)_bridgeForCurrentSelection;
+- (BOOL)_currentSelectionIsEditable;
+
+ at end
 
-- (void)editingKeyDown:(NSEvent *)event
+ at implementation WebView (WebViewEditingInternal)
+
+- (void)_alterCurrentSelection:(WebSelectionAlteration)alteration direction:(WebSelectionDirection)direction granularity:(WebSelectionGranularity)granularity
 {
-    [self interpretKeyEvents:[NSArray arrayWithObject:event]];
+    WebBridge *bridge = [self _bridgeForCurrentSelection];
+    DOMRange *proposedRange = [bridge rangeByAlteringCurrentSelection:alteration direction:direction granularity:granularity];
+    if ([[self _editingDelegateForwarder] webView:self shouldChangeSelectedDOMRange:[self selectedDOMRange] toDOMRange:proposedRange stillSelecting:NO]) {
+        [bridge alterCurrentSelection:alteration direction:direction granularity:granularity];
+    }
 }
 
 - (WebBridge *)_bridgeForCurrentSelection
@@ -2045,6 +2057,30 @@ static WebFrame *incrementFrame(WebFrame *curr, BOOL forward, BOOL wrapFlag)
     return [[self mainFrame] _bridge];
 }
 
+- (BOOL)_currentSelectionIsEditable
+{
+    return [[self _bridgeForCurrentSelection] isSelectionEditable];
+}
+
+ at end
+
+ at implementation WebView (WebViewCSS)
+
+- (DOMCSSStyleDeclaration *)computedStyleForElement:(DOMElement *)element pseudoElement:(NSString *)pseudoElement
+{
+    ERROR("unimplemented");
+    return nil;
+}
+
+ at end
+
+ at implementation WebView (WebViewEditing)
+
+- (void)_editingKeyDown:(NSEvent *)event
+{
+    [self interpretKeyEvents:[NSArray arrayWithObject:event]];
+}
+
 - (void)setSelectedDOMRange:(DOMRange *)range
 {
     [[self _bridgeForCurrentSelection] setSelectedDOMRange:range];
@@ -2055,56 +2091,62 @@ static WebFrame *incrementFrame(WebFrame *curr, BOOL forward, BOOL wrapFlag)
     return [[self _bridgeForCurrentSelection] selectedDOMRange];
 }
 
-- (void)insertText:(NSString *)string
+- (void)setEditable:(BOOL)flag
 {
-    [self insertText:string replacingDOMRange:[self selectedDOMRange]];
+    _private->editable = flag;
 }
 
-- (void)_alterCurrentSelection:(WebSelectionAlteration)alteration direction:(WebSelectionDirection)direction granularity:(WebSelectionGranularity)granularity
+- (BOOL)isEditable
 {
-    WebBridge *bridge = [self _bridgeForCurrentSelection];
-    DOMRange *proposedRange = [bridge rangeByAlteringCurrentSelection:alteration direction:direction granularity:granularity];
-    if ([[self _editingDelegateForwarder] webView:self shouldChangeSelectedDOMRange:[self selectedDOMRange] toDOMRange:proposedRange]) {
-        [bridge alterCurrentSelection:alteration direction:direction granularity:granularity];
-    }
+    return _private->editable;
 }
 
-- (void)selectWord:(id)sender
+- (void)setTypingStyle:(DOMCSSStyleDeclaration *)style
 {
+    ERROR("unimplemented");
 }
 
-- (void)moveRight:(id)sender
+- (DOMCSSStyleDeclaration *)typingStyle
 {
-    [self _alterCurrentSelection:WebSelectByMoving direction:WebSelectRight granularity:WebSelectByCharacter];
+    ERROR("unimplemented");
+    return nil;
 }
 
-- (void)moveRightAndModifySelection:(id)sender
+- (void)setSmartInsertDeleteEnabled:(BOOL)flag
 {
-    [self _alterCurrentSelection:WebSelectByExtending direction:WebSelectRight granularity:WebSelectByCharacter];
+    ERROR("unimplemented");
 }
 
-- (void)moveLeft:(id)sender
+- (BOOL)smartInsertDeleteEnabled
 {
-    [self _alterCurrentSelection:WebSelectByMoving direction:WebSelectLeft granularity:WebSelectByCharacter];
+    ERROR("unimplemented");
+    return NO;
 }
 
-- (void)moveLeftAndModifySelection:(id)sender
+- (void)setContinuousSpellCheckingEnabled:(BOOL)flag
 {
-    [self _alterCurrentSelection:WebSelectByExtending direction:WebSelectLeft granularity:WebSelectByCharacter];
+    ERROR("unimplemented");
 }
 
-- (void)deleteBackward:(id)sender
+- (BOOL)isContinuousSpellCheckingEnabled
 {
-    [[self _bridgeForCurrentSelection] deleteKeyPressed];
+    ERROR("unimplemented");
+    return NO;
 }
 
-- (void)insertNewline:(id)sender
+- (int)spellCheckerDocumentTag
 {
-    [[self _bridgeForCurrentSelection] insertNewline];
+    ERROR("unimplemented");
+    return 0;
 }
 
-- (void)insertParagraphSeparator:(id)sender
+- (NSUndoManager *)undoManager
 {
+    NSUndoManager *undoManager = [[self _editingDelegateForwarder] undoManagerForWebView:self];
+    if (undoManager) {
+        return undoManager;
+    }
+    return [super undoManager];
 }
 
 - (void)setEditingDelegate:(id)delegate
@@ -2119,23 +2161,816 @@ static WebFrame *incrementFrame(WebFrame *curr, BOOL forward, BOOL wrapFlag)
     return _private->editingDelegate;
 }
 
-- (NSUndoManager *)undoManager
+ at end
+
+ at implementation WebView (WebViewUndoableEditing)
+
+- (void)insertNode:(DOMNode *)node replacingDOMRange:(DOMRange *)range
 {
-    NSUndoManager *undoManager = [[self _editingDelegateForwarder] undoManagerForWebView:self];
-    if (undoManager) {
-        return undoManager;
-    }
-    return [super undoManager];
+    if (!range)
+        return;
+        
+    WebBridge *bridge = [self _bridgeForCurrentSelection];
+    [bridge setSelectedDOMRange:range];
+    [bridge replaceSelectionWithNode:node];
+}    
+
+- (void)insertText:(NSString *)text replacingDOMRange:(DOMRange *)range
+{
+    if (!range)
+        return;
+
+    WebBridge *bridge = [self _bridgeForCurrentSelection];
+    [bridge setSelectedDOMRange:range];
+    [bridge replaceSelectionWithText:text];
+}
+
+- (void)insertMarkupString:(NSString *)markupString replacingDOMRange:(DOMRange *)range
+{
+    if (!range)
+        return;
+
+    WebBridge *bridge = [self _bridgeForCurrentSelection];
+    [bridge setSelectedDOMRange:range];
+    [bridge replaceSelectionWithMarkupString:markupString];
+}
+
+- (void)insertWebArchive:(WebArchive *)webArchive replacingDOMRange:(DOMRange *)range
+{
+    if (!range)
+        return;
+
+    WebBridge *bridge = [self _bridgeForCurrentSelection];
+    [bridge setSelectedDOMRange:range];
+    [bridge replaceSelectionWithWebArchive:webArchive];
+}
+
+- (void)deleteDOMRange:(DOMRange *)range
+{
+    if (!range)
+        return;
+
+    WebBridge *bridge = [self _bridgeForCurrentSelection];
+    [bridge setSelectedDOMRange:range];
+    [bridge deleteSelection];
+}
+    
+- (void)applyStyle:(DOMCSSStyleDeclaration *)style toElementsInDOMRange:(DOMRange *)range
+{
+    if (!range)
+        return;
+
+    WebBridge *bridge = [self _bridgeForCurrentSelection];
+    [bridge setSelectedDOMRange:range];
+    [bridge applyStyle:style toElementsInDOMRange:range];
 }
 
 @end
 
- at implementation WebView (WebViewUndoableEditing)
 
-- (void)insertText:(NSString *)text replacingDOMRange:(DOMRange *)range
+/*!
+    @implementation WebView (WebViewEditingActions)
+*/
+ at implementation WebView (WebViewEditingActions)
+
+- (void)centerSelectionInVisibleArea:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(centerSelectionInVisibleArea:) with:sender];
+}
+
+- (void)moveBackward:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveBackward:) with:sender];
+}
+
+- (void)moveBackwardAndModifySelection:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveBackwardAndModifySelection:) with:sender];
+}
+
+- (void)moveDown:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveDown:) with:sender];
+}
+
+- (void)moveDownAndModifySelection:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveDownAndModifySelection:) with:sender];
+}
+
+- (void)moveForward:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveForward:) with:sender];
+}
+
+- (void)moveForwardAndModifySelection:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveForwardAndModifySelection:) with:sender];
+}
+
+- (void)moveLeft:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        [self _alterCurrentSelection:WebSelectByMoving direction:WebSelectLeft granularity:WebSelectByCharacter];
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveLeft:) with:sender];
+}
+
+- (void)moveLeftAndModifySelection:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        [self _alterCurrentSelection:WebSelectByExtending direction:WebSelectLeft granularity:WebSelectByCharacter];
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveLeftAndModifySelection:) with:sender];
+}
+
+- (void)moveRight:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        [self _alterCurrentSelection:WebSelectByMoving direction:WebSelectRight granularity:WebSelectByCharacter];
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveRight:) with:sender];
+}
+
+- (void)moveRightAndModifySelection:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        [self _alterCurrentSelection:WebSelectByExtending direction:WebSelectRight granularity:WebSelectByCharacter];
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveRightAndModifySelection:) with:sender];
+}
+
+- (void)moveToBeginningOfDocument:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveToBeginningOfDocument:) with:sender];
+}
+
+- (void)moveToBeginningOfLine:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveToBeginningOfLine:) with:sender];
+}
+
+- (void)moveToBeginningOfParagraph:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveToBeginningOfParagraph:) with:sender];
+}
+
+- (void)moveToEndOfDocument:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveToEndOfDocument:) with:sender];
+}
+
+- (void)moveToEndOfLine:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveToEndOfLine:) with:sender];
+}
+
+- (void)moveToEndOfParagraph:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveToEndOfParagraph:) with:sender];
+}
+
+- (void)moveUp:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveUp:) with:sender];
+}
+
+- (void)moveUpAndModifySelection:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveUpAndModifySelection:) with:sender];
+}
+
+- (void)moveWordBackward:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveWordBackward:) with:sender];
+}
+
+- (void)moveWordBackwardAndModifySelection:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveWordBackwardAndModifySelection:) with:sender];
+}
+
+- (void)moveWordForward:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveWordForward:) with:sender];
+}
+
+- (void)moveWordForwardAndModifySelection:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveWordForwardAndModifySelection:) with:sender];
+}
+
+- (void)moveWordLeft:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveWordLeft:) with:sender];
+}
+
+- (void)moveWordLeftAndModifySelection:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveWordLeftAndModifySelection:) with:sender];
+}
+
+- (void)moveWordRight:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveWordRight:) with:sender];
+}
+
+- (void)moveWordRightAndModifySelection:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(moveWordRightAndModifySelection:) with:sender];
+}
+
+- (void)pageDown:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(pageDown:) with:sender];
+}
+
+- (void)pageUp:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(pageUp:) with:sender];
+}
+
+- (void)scrollLineDown:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(scrollLineDown:) with:sender];
+}
+
+- (void)scrollLineUp:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(scrollLineUp:) with:sender];
+}
+
+- (void)scrollPageDown:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(scrollPageDown:) with:sender];
+}
+
+- (void)scrollPageUp:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(scrollPageUp:) with:sender];
+}
+
+
+    /* Selections */
+
+- (void)selectAll:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(selectAll:) with:sender];
+}
+
+- (void)selectParagraph:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(selectParagraph:) with:sender];
+}
+
+- (void)selectLine:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(selectLine:) with:sender];
+}
+
+- (void)selectWord:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(selectWord:) with:sender];
+}
+
+
+    /* "Edit menu" actions */
+
+- (void)copy:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(copy:) with:sender];
+}
+
+- (void)cut:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(cut:) with:sender];
+}
+
+- (void)paste:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(paste:) with:sender];
+}
+
+- (void)copyFont:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(copyFont:) with:sender];
+}
+
+- (void)pasteFont:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(pasteFont:) with:sender];
+}
+
+- (void)delete:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(delete:) with:sender];
+}
+
+- (void)pasteAsPlainText:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(pasteAsPlainText:) with:sender];
+}
+
+- (void)pasteAsRichText:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(pasteAsRichText:) with:sender];
+}
+
+
+    /* Fonts */
+
+- (void)changeFont:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(changeFont:) with:sender];
+}
+
+- (void)changeAttributes:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(changeAttributes:) with:sender];
+}
+
+- (void)changeDocumentBackgroundColor:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(changeDocumentBackgroundColor:) with:sender];
+}
+
+
+    /* Colors */
+
+- (void)changeColor:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(changeColor:) with:sender];
+}
+
+
+	/* Alignment */
+
+- (void)alignCenter:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(alignCenter:) with:sender];
+}
+
+- (void)alignJustified:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(alignJustified:) with:sender];
+}
+
+- (void)alignLeft:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(alignLeft:) with:sender];
+}
+
+- (void)alignRight:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(alignRight:) with:sender];
+}
+
+
+    /* Insertions and Indentations */
+
+- (void)indent:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(indent:) with:sender];
+}
+
+- (void)insertTab:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(insertTab:) with:sender];
+}
+
+- (void)insertBacktab:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(insertBacktab:) with:sender];
+}
+
+- (void)insertNewline:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        [[self _bridgeForCurrentSelection] replaceSelectionWithNewline];
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(insertNewline:) with:sender];
+}
+
+- (void)insertParagraphSeparator:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(insertParagraphSeparator:) with:sender];
+}
+
+
+    /* Case changes */
+
+- (void)changeCaseOfLetter:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(changeCaseOfLetter:) with:sender];
+}
+
+- (void)uppercaseWord:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(uppercaseWord:) with:sender];
+}
+
+- (void)lowercaseWord:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(lowercaseWord:) with:sender];
+}
+
+- (void)capitalizeWord:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(capitalizeWord:) with:sender];
+}
+
+
+    /* Deletions */
+
+- (void)deleteForward:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(deleteForward:) with:sender];
+}
+
+- (void)deleteBackward:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        [[self _bridgeForCurrentSelection] deleteKeyPressed];
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(deleteBackward:) with:sender];
+}
+
+- (void)deleteBackwardByDecomposingPreviousCharacter:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(deleteBackwardByDecomposingPreviousCharacter:) with:sender];
+}
+
+- (void)deleteWordForward:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(deleteWordForward:) with:sender];
+}
+
+- (void)deleteWordBackward:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(deleteWordBackward:) with:sender];
+}
+
+- (void)deleteToBeginningOfLine:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(deleteToBeginningOfLine:) with:sender];
+}
+
+- (void)deleteToEndOfLine:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(deleteToEndOfLine:) with:sender];
+}
+
+- (void)deleteToBeginningOfParagraph:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(deleteToBeginningOfParagraph:) with:sender];
+}
+
+- (void)deleteToEndOfParagraph:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(deleteToEndOfParagraph:) with:sender];
+}
+
+
+    /* Completion */
+
+- (void)complete:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(complete:) with:sender];
+}
+
+
+    /* Spelling */
+
+- (void)checkSpelling:(id)sender
 {
-    // FIXME: handle switching selections
-    [[self _bridgeForCurrentSelection] insertText:text];
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(checkSpelling:) with:sender];
+}
+
+- (void)showGuessPanel:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(showGuessPanel:) with:sender];
+}
+
+
+    /* Finding */
+    
+- (void)performFindPanelAction:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(performFindPanelAction:) with:sender];
+}
+
+
+	/* Speech */
+
+- (void)startSpeaking:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(startSpeaking:) with:sender];
+}
+
+- (void)stopSpeaking:(id)sender
+{
+    if ([self _currentSelectionIsEditable]) {
+        ERROR("unimplemented");
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(stopSpeaking:) with:sender];
+}
+
+	/* Text input */
+
+- (void)insertText:(NSString *)text
+{
+    if ([self _currentSelectionIsEditable]) {
+        [[self _bridgeForCurrentSelection] replaceSelectionWithText:text];
+        return;
+    }
+    [[self nextResponder] tryToPerform:@selector(insertText:) with:text];
 }
 
 @end
diff --git a/WebKit/WebView.subproj/WebViewPrivate.h b/WebKit/WebView.subproj/WebViewPrivate.h
index 1902758..245c842 100644
--- a/WebKit/WebView.subproj/WebViewPrivate.h
+++ b/WebKit/WebView.subproj/WebViewPrivate.h
@@ -95,8 +95,8 @@ extern NSString *_WebMainFrameURLKey;
     void *observationInfo;
     
     NSArray *draggedTypes;
-    
     BOOL drawsBackground;
+    BOOL editable;
 }
 @end
 
@@ -310,13 +310,42 @@ Could be worth adding to the API.
 
 /* ------------------------------------------------------------------*/
 
-typedef enum
-{
+typedef enum {
 	WebViewInsertActionTyped,	
 	WebViewInsertActionPasted,	
 	WebViewInsertActionDropped,	
 } WebViewInsertAction;
 
+ at interface WebView (WebViewCSS)
+- (DOMCSSStyleDeclaration *)computedStyleForElement:(DOMElement *)element pseudoElement:(NSString *)pseudoElement;
+ at end
+
+ at interface WebView (WebViewEditing)
+- (void)setSelectedDOMRange:(DOMRange *)range;
+- (DOMRange *)selectedDOMRange;
+- (void)setEditable:(BOOL)flag;
+- (BOOL)isEditable;
+- (void)setTypingStyle:(DOMCSSStyleDeclaration *)style;
+- (DOMCSSStyleDeclaration *)typingStyle;
+- (void)setSmartInsertDeleteEnabled:(BOOL)flag;
+- (BOOL)smartInsertDeleteEnabled;
+- (void)setContinuousSpellCheckingEnabled:(BOOL)flag;
+- (BOOL)isContinuousSpellCheckingEnabled;
+- (int)spellCheckerDocumentTag;
+- (NSUndoManager *)undoManager;
+- (void)setEditingDelegate:(id)delegate;
+- (id)editingDelegate;
+ at end
+
+ at interface WebView (WebViewUndoableEditing)
+- (void)insertNode:(DOMNode *)node replacingDOMRange:(DOMRange *)range;    
+- (void)insertText:(NSString *)text replacingDOMRange:(DOMRange *)range;    
+- (void)insertMarkupString:(NSString *)markupString replacingDOMRange:(DOMRange *)range;
+- (void)insertWebArchive:(WebArchive *)webArchive replacingDOMRange:(DOMRange *)range;
+- (void)deleteDOMRange:(DOMRange *)range;    
+- (void)applyStyle:(DOMCSSStyleDeclaration *)style toElementsInDOMRange:(DOMRange *)range;
+ at end
+
 extern NSString * const WebViewDidBeginEditingNotification;
 extern NSString * const WebViewDidChangeNotification;
 extern NSString * const WebViewDidEndEditingNotification;
@@ -329,7 +358,7 @@ extern NSString * const WebViewDidChangeSelectionNotification;
 - (BOOL)webView:(WebView *)webView shouldInsertNode:(DOMNode *)node replacingDOMRange:(DOMRange *)range givenAction:(WebViewInsertAction)action;
 - (BOOL)webView:(WebView *)webView shouldInsertText:(NSString *)text replacingDOMRange:(DOMRange *)range givenAction:(WebViewInsertAction)action;
 - (BOOL)webView:(WebView *)webView shouldDeleteDOMRange:(DOMRange *)range;
-- (BOOL)webView:(WebView *)webView shouldChangeSelectedDOMRange:(DOMRange *)currentRange toDOMRange:(DOMRange *)proposedRange;
+- (BOOL)webView:(WebView *)webView shouldChangeSelectedDOMRange:(DOMRange *)currentRange toDOMRange:(DOMRange *)proposedRange stillSelecting:(BOOL)flag;
 - (BOOL)webView:(WebView *)webView shouldApplyStyle:(DOMCSSStyleDeclaration *)style toElementsInDOMRange:(DOMRange *)range;
 - (BOOL)webView:(WebView *)webView shouldChangeTypingStyle:(DOMCSSStyleDeclaration *)currentStyle toStyle:(DOMCSSStyleDeclaration *)proposedStyle;
 - (BOOL)webView:(WebView *)webView doCommandBySelector:(SEL)selector;
@@ -341,16 +370,8 @@ extern NSString * const WebViewDidChangeSelectionNotification;
 - (NSUndoManager *)undoManagerForWebView:(WebView *)webView;
 @end
 
- at interface WebView (WebEditingExtras)
-- (WebBridge *)_bridgeForCurrentSelection;
-- (void)setSelectedDOMRange:(DOMRange *)range;
-- (DOMRange *)selectedDOMRange;
-- (void)setEditingDelegate:(id)delegate;
-- (id)editingDelegate;
-- (void)editingKeyDown:(NSEvent *)event;
+ at interface WebView (WebViewEditingExtras)
+- (void)_editingKeyDown:(NSEvent *)event;
 @end
 
 
- at interface WebView (WebViewUndoableEditing)
-- (void)insertText:(NSString *)text replacingDOMRange:(DOMRange *)range;    
- at end

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list