[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