[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:40:54 UTC 2009


The following commit has been merged in the debian/unstable branch:
commit 7662cd9382c994ac8b6426631b57993466f3c4b3
Author: kocienda <kocienda at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Thu May 20 22:52:19 2004 +0000

    WebCore:
    
            Reviewed by Hyatt
    
            Provide the methods to glue the WebView's editing delegate so that these methods work:
    
            <rdar://problem/3655316>: "Editing:�webViewShouldBeginEditing:inDOMRange:�ethod�nimplemented�WebKit�diting�PI)"
            <rdar://problem/3655317>: "Editing:�webViewShouldEndEditing:inDOMRange:�ethod�nimplemented�WebKit�diting�PI)"
    
            While I was in the neighborhood and working on understanding focus shifts, I fixed this bug as well:
    
            <rdar://problem/3645154>: "contentEditable div receives focus and blur twice when focus changes to new element"
    
            * khtml/khtml_part.cpp:
            (KHTMLPart::invalidateSelection): Do not move focus in this function. That is just a mistake. This function
            is all about redraw.
            (KHTMLPart::selectionLayoutChanged): New function. Factor out the redraw parts of notifySelectionChanged so
            that invalidateSelection can call it.
            (KHTMLPart::notifySelectionChanged): Call selectionLayoutChanged now that the redraw parts have been
            factored out.
            (KHTMLPart::shouldBeginEditing): New function that calls through to the KWQKHTMLPart in an APPLE_CHANGES
            block. This is part of the code path that will eventually The WebView's delegate to ask the
            shouldBeginEditing question.
            (KHTMLPart::shouldEndEditing): Ditto, except the question is about shouldEndEditing.
            * khtml/khtml_part.h:
            * khtml/khtmlview.cpp:
            (KHTMLView::dispatchMouseEvent): Now looks at the boolean value returned from DocumentImpl::setFocusNode
            (described below). If the focus shift was blocked, swallow the mouse event.
            * khtml/xml/dom_docimpl.cpp:
            (DocumentImpl::relinquishesEditingFocus): Part of the WebView's delegation call chain described above.
            (DocumentImpl::acceptsEditingFocus): Ditto.
            (DocumentImpl::setFocusNode): Many improvements. Now handles WebView delegation and switching focus
            in the handlers called as a result of the DOM events that this function calls. Also now returns a
            boolean to say whether the attempt to set focus was blocked by a handler or by the WebView's delegate.
            * khtml/xml/dom_docimpl.h:
            * kwq/KWQKHTMLPart.h:
            * kwq/KWQKHTMLPart.mm:
            (KWQKHTMLPart::shouldBeginEditing): More WebView's delegation glue.
            (KWQKHTMLPart::shouldEndEditing): Ditto.
            * kwq/WebCoreBridge.h:
    
    WebKit:
    
            Reviewed by Hyatt
    
            Provide the methods to glue the WebView's editing delegate so that these methods work:
    
            <rdar://problem/3655316>: "Editing:�webViewShouldBeginEditing:inDOMRange:�ethod�nimplemented�WebKit�diting�PI)"
            <rdar://problem/3655317>: "Editing:�webViewShouldEndEditing:inDOMRange:�ethod�nimplemented�WebKit�diting�PI)"
    
            * WebCoreSupport.subproj/WebBridge.m:
            (-[WebBridge shouldBeginEditing:]): New method used to glue delegate to focus shifts.
            (-[WebBridge shouldEndEditing:]): Ditto.
            * WebView.subproj/WebView.m:
            (-[WebView _shouldBeginEditingInDOMRange:]): Ditto.
            (-[WebView _shouldEndEditingInDOMRange:]): Ditto.
            * WebView.subproj/WebViewPrivate.h: Ditto.
    
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@6651 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 0f52ea8..538eba5 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,44 @@
+2004-05-20  Ken Kocienda  <kocienda at apple.com>
+
+        Reviewed by Hyatt
+
+        Provide the methods to glue the WebView's editing delegate so that these methods work:
+        
+        <rdar://problem/3655316>: "Editing:Ê-webViewShouldBeginEditing:inDOMRange:ÊmethodÊunimplementedÊ(WebKitÊeditingÊAPI)"
+        <rdar://problem/3655317>: "Editing:Ê-webViewShouldEndEditing:inDOMRange:ÊmethodÊunimplementedÊ(WebKitÊeditingÊAPI)"
+
+        While I was in the neighborhood and working on understanding focus shifts, I fixed this bug as well:
+        
+        <rdar://problem/3645154>: "contentEditable div receives focus and blur twice when focus changes to new element"
+
+        * khtml/khtml_part.cpp:
+        (KHTMLPart::invalidateSelection): Do not move focus in this function. That is just a mistake. This function
+        is all about redraw.
+        (KHTMLPart::selectionLayoutChanged): New function. Factor out the redraw parts of notifySelectionChanged so
+        that invalidateSelection can call it.
+        (KHTMLPart::notifySelectionChanged): Call selectionLayoutChanged now that the redraw parts have been
+        factored out.
+        (KHTMLPart::shouldBeginEditing): New function that calls through to the KWQKHTMLPart in an APPLE_CHANGES
+        block. This is part of the code path that will eventually The WebView's delegate to ask the
+        shouldBeginEditing question. 
+        (KHTMLPart::shouldEndEditing): Ditto, except the question is about shouldEndEditing.
+        * khtml/khtml_part.h:
+        * khtml/khtmlview.cpp:
+        (KHTMLView::dispatchMouseEvent): Now looks at the boolean value returned from DocumentImpl::setFocusNode 
+        (described below). If the focus shift was blocked, swallow the mouse event.
+        * khtml/xml/dom_docimpl.cpp:
+        (DocumentImpl::relinquishesEditingFocus): Part of the WebView's delegation call chain described above.
+        (DocumentImpl::acceptsEditingFocus): Ditto.
+        (DocumentImpl::setFocusNode): Many improvements. Now handles WebView delegation and switching focus
+        in the handlers called as a result of the DOM events that this function calls. Also now returns a 
+        boolean to say whether the attempt to set focus was blocked by a handler or by the WebView's delegate.
+        * khtml/xml/dom_docimpl.h:
+        * kwq/KWQKHTMLPart.h:
+        * kwq/KWQKHTMLPart.mm:
+        (KWQKHTMLPart::shouldBeginEditing): More WebView's delegation glue.
+        (KWQKHTMLPart::shouldEndEditing): Ditto.
+        * kwq/WebCoreBridge.h:
+
 2004-05-20  Richard Williamson   <rjw at apple.com>
 
         Reviewed by NOBODY (OOPS!).
diff --git a/WebCore/khtml/khtml_part.cpp b/WebCore/khtml/khtml_part.cpp
index a100278..c8b95be 100644
--- a/WebCore/khtml/khtml_part.cpp
+++ b/WebCore/khtml/khtml_part.cpp
@@ -2293,9 +2293,8 @@ void KHTMLPart::clearSelection()
 void KHTMLPart::invalidateSelection()
 {
     clearCaretRectIfNeeded();
-    setFocusNodeIfNeeded(d->m_selection);
     d->m_selection.setNeedsLayout();
-    notifySelectionChanged(false);
+    selectionLayoutChanged();
 }
 
 void KHTMLPart::setSelectionVisible(bool flag)
@@ -2353,7 +2352,7 @@ void KHTMLPart::setFocusNodeIfNeeded(const Selection &s)
     }
 }
 
-void KHTMLPart::notifySelectionChanged(bool closeTyping)
+void KHTMLPart::selectionLayoutChanged()
 {
     // kill any caret blink timer now running
     if (d->m_caretBlinkTimer >= 0) {
@@ -2371,13 +2370,18 @@ void KHTMLPart::notifySelectionChanged(bool closeTyping)
 
     if (d->m_doc)
         d->m_doc->updateSelection();
-    
-    if (closeTyping)
-        TypingCommand::closeTyping(lastEditCommand());
-    
+
     // Always clear the x position used for vertical arrow navigation.
     // It will be restored by the vertical arrow navigation code if necessary.
     d->m_xPosForVerticalArrowNavigation = NoXPosForVerticalArrowNavigation;
+}
+
+void KHTMLPart::notifySelectionChanged(bool closeTyping)
+{
+    selectionLayoutChanged();
+    
+    if (closeTyping)
+        TypingCommand::closeTyping(lastEditCommand());
     
     emitSelectionChanged();
     
@@ -4873,6 +4877,24 @@ void KHTMLPart::selectAll()
   setSelection(selection);
 }
 
+bool KHTMLPart::shouldBeginEditing(const Range &range) const
+{
+#if APPLE_CHANGES
+    return KWQ(this)->shouldBeginEditing(range);
+#else
+    return true;
+#endif
+}
+
+bool KHTMLPart::shouldEndEditing(const Range &range) const
+{
+#if APPLE_CHANGES
+    return KWQ(this)->shouldEndEditing(range);
+#else
+    return true;
+#endif
+}
+
 bool KHTMLPart::isContentEditable() const 
 {
 #if APPLE_CHANGES
diff --git a/WebCore/khtml/khtml_part.h b/WebCore/khtml/khtml_part.h
index 3dc270e..e974f8d 100644
--- a/WebCore/khtml/khtml_part.h
+++ b/WebCore/khtml/khtml_part.h
@@ -46,21 +46,22 @@ class KJavaAppletContext;
 
 namespace DOM
 {
+  class DocumentImpl;
+  class EventListener;
+  class HTMLAnchorElementImpl;
   class HTMLDocument;
   class HTMLDocumentImpl;
-  class DocumentImpl;
-  class HTMLTitleElementImpl;
   class HTMLElementImpl;
+  class HTMLEventListener;
+  class HTMLFormElementImpl;
   class HTMLFrameElementImpl;
   class HTMLIFrameElementImpl;
-  class HTMLObjectElementImpl;
-  class HTMLFormElementImpl;
-  class HTMLAnchorElementImpl;
   class HTMLMetaElementImpl;
-  class NodeImpl;
+  class HTMLObjectElementImpl;
+  class HTMLTitleElementImpl;
   class Node;
-  class HTMLEventListener;
-  class EventListener;
+  class NodeImpl;
+  class Range;
   class Selection;
 }
 
@@ -624,6 +625,16 @@ public:
   void selectAll();
 
   /**
+   * Returns whether editing should end in the given range
+   */
+  bool shouldBeginEditing(const DOM::Range &) const;
+
+  /**
+   * Returns whether editing should end in the given range
+   */
+  bool shouldEndEditing(const DOM::Range &) const;
+
+  /**
    * Returns the contentEditable "override" value for the part
    */
   bool isContentEditable() const;
@@ -1095,6 +1106,11 @@ private:
   /**
    * @internal
    */
+  void selectionLayoutChanged();
+
+  /**
+   * @internal
+   */
   void notifySelectionChanged(bool closeTyping=true);
 
   /**
diff --git a/WebCore/khtml/khtmlview.cpp b/WebCore/khtml/khtmlview.cpp
index 36bf68b..9b81001 100644
--- a/WebCore/khtml/khtmlview.cpp
+++ b/WebCore/khtml/khtmlview.cpp
@@ -1731,9 +1731,9 @@ bool KHTMLView::dispatchMouseEvent(int eventId, DOM::NodeImpl *targetNode, bool
 	    DOM::NodeImpl* nodeImpl = targetNode;
 	    for ( ; nodeImpl && !nodeImpl->isFocusable(); nodeImpl = nodeImpl->parentNode());
             if (nodeImpl && nodeImpl->isMouseFocusable())
-                m_part->xmlDocImpl()->setFocusNode(nodeImpl);
+                swallowEvent = !m_part->xmlDocImpl()->setFocusNode(nodeImpl);
             else if (!nodeImpl || !nodeImpl->focused())
-                m_part->xmlDocImpl()->setFocusNode(0);
+                swallowEvent = !m_part->xmlDocImpl()->setFocusNode(0);
         }
     }
 
diff --git a/WebCore/khtml/xml/dom_docimpl.cpp b/WebCore/khtml/xml/dom_docimpl.cpp
index 6fd8519..2320469 100644
--- a/WebCore/khtml/xml/dom_docimpl.cpp
+++ b/WebCore/khtml/xml/dom_docimpl.cpp
@@ -2275,57 +2275,125 @@ void DocumentImpl::setHoverNode(NodeImpl* newHoverNode)
     }    
 }
 
-void DocumentImpl::setFocusNode(NodeImpl *newFocusNode)
+#if APPLE_CHANGES
+
+bool DocumentImpl::relinquishesEditingFocus(NodeImpl *node)
+{
+    assert(node);
+    assert(node->isContentEditable());
+
+    if (!part())
+        return true;
+    
+    NodeImpl *rootImpl = node->rootEditableBlock();
+    Node root(rootImpl);
+    Range range(root, 0, root, rootImpl->childNodeCount());
+    return part()->shouldEndEditing(range);
+}
+
+bool DocumentImpl::acceptsEditingFocus(NodeImpl *node)
+{
+    assert(node);
+    assert(node->isContentEditable());
+
+    if (!part())
+        return true;
+
+    NodeImpl *rootImpl = node->rootEditableBlock();
+    Node root(rootImpl);
+    Range range(root, 0, root, rootImpl->childNodeCount());
+    return part()->shouldBeginEditing(range);
+}
+
+#endif
+
+bool DocumentImpl::setFocusNode(NodeImpl *newFocusNode)
 {    
     // Make sure newFocusNode is actually in this document
     if (newFocusNode && (newFocusNode->getDocument() != this))
-        return;
+        return true;
 
-    if (m_focusNode != newFocusNode) {
-        NodeImpl *oldFocusNode = m_focusNode;
-        // Set focus on the new node
-        m_focusNode = newFocusNode;
-        // Remove focus from the existing focus node (if any)
-        if (oldFocusNode) {
-            // This goes hand in hand with the Qt focus setting below.
-            if (!m_focusNode && getDocument()->view()) {
-                getDocument()->view()->setFocus();
-            }
+    if (m_focusNode == newFocusNode)
+        return true;
 
-            if (oldFocusNode->active())
-                oldFocusNode->setActive(false);
+#if APPLE_CHANGES
+    if (m_focusNode && m_focusNode->isContentEditable() && !relinquishesEditingFocus(m_focusNode))
+        return false;
+#endif     
+       
+    bool focusChangeBlocked = false;
+    NodeImpl *oldFocusNode = m_focusNode;
+    m_focusNode = 0;
 
-            oldFocusNode->setFocus(false);
-	    oldFocusNode->dispatchHTMLEvent(EventImpl::BLUR_EVENT,false,false);
-	    oldFocusNode->dispatchUIEvent(EventImpl::DOMFOCUSOUT_EVENT);
-            if ((oldFocusNode == this) && oldFocusNode->hasOneRef()) {
-                oldFocusNode->deref(); // deletes this
-                return;
-            }
-	    else {
-                oldFocusNode->deref();
-            }
+    // Remove focus from the existing focus node (if any)
+    if (oldFocusNode) {
+        // This goes hand in hand with the Qt focus setting below.
+        if (!newFocusNode && getDocument()->view()) {
+            getDocument()->view()->setFocus();
         }
 
-        if (m_focusNode) {
-            m_focusNode->ref();
-            m_focusNode->dispatchHTMLEvent(EventImpl::FOCUS_EVENT,false,false);
-            if (m_focusNode != newFocusNode) return;
-            m_focusNode->dispatchUIEvent(EventImpl::DOMFOCUSIN_EVENT);
-            if (m_focusNode != newFocusNode) return;
-            m_focusNode->setFocus();
-            // eww, I suck. set the qt focus correctly
-            // ### find a better place in the code for this
-            if (getDocument()->view()) {
-                if (!m_focusNode->renderer() || !m_focusNode->renderer()->isWidget())
-                    getDocument()->view()->setFocus();
-                else if (static_cast<RenderWidget*>(m_focusNode->renderer())->widget())
-                    static_cast<RenderWidget*>(m_focusNode->renderer())->widget()->setFocus();
-            }
+        if (oldFocusNode->active())
+            oldFocusNode->setActive(false);
+
+        oldFocusNode->setFocus(false);
+        oldFocusNode->dispatchHTMLEvent(EventImpl::BLUR_EVENT, false, false);
+        if (m_focusNode != 0) {
+            // handler shifted focus
+            focusChangeBlocked = true;
+            newFocusNode = 0;
+        }
+        oldFocusNode->dispatchUIEvent(EventImpl::DOMFOCUSOUT_EVENT);
+        if (m_focusNode != 0) {
+            // handler shifted focus
+            focusChangeBlocked = true;
+            newFocusNode = 0;
+        }
+        if ((oldFocusNode == this) && oldFocusNode->hasOneRef()) {
+            oldFocusNode->deref(); // deletes this
+            return true;
+        }
+        else {
+            oldFocusNode->deref();
         }
+    }
 
-        updateRendering();
+    if (newFocusNode) {
+#if APPLE_CHANGES            
+        if (newFocusNode->isContentEditable() && !acceptsEditingFocus(newFocusNode)) {
+            // delegate blocks focus change
+            focusChangeBlocked = true;
+            goto SetFocusNodeDone;
+        }
+#endif
+        // Set focus on the new node
+        m_focusNode = newFocusNode;
+        m_focusNode->ref();
+        m_focusNode->dispatchHTMLEvent(EventImpl::FOCUS_EVENT, false, false);
+        if (m_focusNode != newFocusNode) {
+            // handler shifted focus
+            focusChangeBlocked = true;
+            goto SetFocusNodeDone;
+        }
+        m_focusNode->dispatchUIEvent(EventImpl::DOMFOCUSIN_EVENT);
+        if (m_focusNode != newFocusNode) { 
+            // handler shifted focus
+            focusChangeBlocked = true;
+            goto SetFocusNodeDone;
+        }
+        m_focusNode->setFocus();
+        // eww, I suck. set the qt focus correctly
+        // ### find a better place in the code for this
+        if (getDocument()->view()) {
+            if (!m_focusNode->renderer() || !m_focusNode->renderer()->isWidget())
+                getDocument()->view()->setFocus();
+            else if (static_cast<RenderWidget*>(m_focusNode->renderer())->widget())
+                static_cast<RenderWidget*>(m_focusNode->renderer())->widget()->setFocus();
+        }
     }
+
+SetFocusNodeDone:
+    updateRendering();
+    return !focusChangeBlocked;
 }
 
 void DocumentImpl::setCSSTarget(NodeImpl* n)
diff --git a/WebCore/khtml/xml/dom_docimpl.h b/WebCore/khtml/xml/dom_docimpl.h
index 46cdad9..5473727 100644
--- a/WebCore/khtml/xml/dom_docimpl.h
+++ b/WebCore/khtml/xml/dom_docimpl.h
@@ -400,7 +400,7 @@ public:
     QStringList availableStyleSheets() const;
 
     NodeImpl *focusNode() const { return m_focusNode; }
-    void setFocusNode(NodeImpl *newFocusNode);
+    bool setFocusNode(NodeImpl *newFocusNode);
 
     NodeImpl *hoverNode() const { return m_hoverNode; }
     void setHoverNode(NodeImpl *newHoverNode);
@@ -655,6 +655,9 @@ public:
     khtml::Decoder *decoder() const { return m_decoder; }
 
 private:
+    bool relinquishesEditingFocus(NodeImpl *node);
+    bool acceptsEditingFocus(NodeImpl *node);
+
     mutable DOMString m_domain;
     bool m_inPageCache;
     khtml::RenderObject *m_savedRenderer;
diff --git a/WebCore/kwq/KWQKHTMLPart.h b/WebCore/kwq/KWQKHTMLPart.h
index b8a2930..f9c081a 100644
--- a/WebCore/kwq/KWQKHTMLPart.h
+++ b/WebCore/kwq/KWQKHTMLPart.h
@@ -284,6 +284,8 @@ public:
     void postDidChangeSelectionNotification();
     void postDidChangeNotification();
     bool isContentEditable() const;
+    bool shouldBeginEditing(const DOM::Range &) const;
+    bool shouldEndEditing(const DOM::Range &) const;
 
     KJS::Bindings::RootObject *bindingRootObject();
     
diff --git a/WebCore/kwq/KWQKHTMLPart.mm b/WebCore/kwq/KWQKHTMLPart.mm
index 947fe28..f3b23ec 100644
--- a/WebCore/kwq/KWQKHTMLPart.mm
+++ b/WebCore/kwq/KWQKHTMLPart.mm
@@ -2987,3 +2987,15 @@ bool KWQKHTMLPart::isContentEditable() const
 {
     return [_bridge isEditable];
 }
+
+bool KWQKHTMLPart::shouldBeginEditing(const Range &range) const
+{
+    ASSERT(!range.isNull());
+    return [_bridge shouldBeginEditing:[DOMRange _rangeWithImpl:range.handle()]];
+}
+
+bool KWQKHTMLPart::shouldEndEditing(const Range &range) const
+{
+    ASSERT(!range.isNull());
+    return [_bridge shouldEndEditing:[DOMRange _rangeWithImpl:range.handle()]];
+}
diff --git a/WebCore/kwq/WebCoreBridge.h b/WebCore/kwq/WebCoreBridge.h
index a237a3c..a2f5ca9 100644
--- a/WebCore/kwq/WebCoreBridge.h
+++ b/WebCore/kwq/WebCoreBridge.h
@@ -448,6 +448,8 @@ typedef enum {
 - (BOOL)interceptEditingKeyEvent:(NSEvent *)event;
 - (void)setIsSelected:(BOOL)isSelected forView:(NSView *)view;
 - (BOOL)isEditable;
+- (BOOL)shouldBeginEditing:(DOMRange *)range;
+- (BOOL)shouldEndEditing:(DOMRange *)range;
 
 - (NSString *)overrideMediaType;
 
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 049420d..28ebe1c 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,20 @@
+2004-05-20  Ken Kocienda  <kocienda at apple.com>
+
+        Reviewed by Hyatt
+
+        Provide the methods to glue the WebView's editing delegate so that these methods work:
+        
+        <rdar://problem/3655316>: "Editing:Ê-webViewShouldBeginEditing:inDOMRange:ÊmethodÊunimplementedÊ(WebKitÊeditingÊAPI)"
+        <rdar://problem/3655317>: "Editing:Ê-webViewShouldEndEditing:inDOMRange:ÊmethodÊunimplementedÊ(WebKitÊeditingÊAPI)"
+
+        * WebCoreSupport.subproj/WebBridge.m:
+        (-[WebBridge shouldBeginEditing:]): New method used to glue delegate to focus shifts.
+        (-[WebBridge shouldEndEditing:]): Ditto.
+        * WebView.subproj/WebView.m:
+        (-[WebView _shouldBeginEditingInDOMRange:]): Ditto.
+        (-[WebView _shouldEndEditingInDOMRange:]): Ditto.
+        * WebView.subproj/WebViewPrivate.h: Ditto.
+
 2004-05-20  Richard Williamson   <rjw at apple.com>
 
 		Fixed typo in header comment.
diff --git a/WebKit/WebCoreSupport.subproj/WebBridge.m b/WebKit/WebCoreSupport.subproj/WebBridge.m
index 70da412..e4d53d6 100644
--- a/WebKit/WebCoreSupport.subproj/WebBridge.m
+++ b/WebKit/WebCoreSupport.subproj/WebBridge.m
@@ -1284,6 +1284,16 @@ static id <WebFormDelegate> formDelegate(WebBridge *self)
     return [[_frame webView] isEditable];
 }
 
+- (BOOL)shouldBeginEditing:(DOMRange *)range
+{
+    return [[_frame webView] _shouldBeginEditingInDOMRange:range];
+}
+
+- (BOOL)shouldEndEditing:(DOMRange *)range
+{
+    return [[_frame webView] _shouldEndEditingInDOMRange:range];
+}
+
 - (void)windowObjectCleared
 {
     WebView *wv = [_frame webView];
diff --git a/WebKit/WebView.subproj/WebView.m b/WebKit/WebView.subproj/WebView.m
index e0825d4..38e9838 100644
--- a/WebKit/WebView.subproj/WebView.m
+++ b/WebKit/WebView.subproj/WebView.m
@@ -2398,6 +2398,16 @@ static NSFont *_fontFromStyle(DOMCSSStyleDeclaration *style)
     return YES;
 }
 
+- (BOOL)_shouldBeginEditingInDOMRange:(DOMRange *)range
+{
+    return [[self _editingDelegateForwarder] webViewShouldBeginEditing:self inDOMRange:range];
+}
+
+- (BOOL)_shouldEndEditingInDOMRange:(DOMRange *)range
+{
+    return [[self _editingDelegateForwarder] webViewShouldEndEditing:self inDOMRange:range];
+}
+
 - (void)setSelectedDOMRange:(DOMRange *)range affinity:(NSSelectionAffinity)selectionAffinity
 {
     [[self _bridgeForCurrentSelection] setSelectedDOMRange:range affinity:selectionAffinity];
diff --git a/WebKit/WebView.subproj/WebViewPrivate.h b/WebKit/WebView.subproj/WebViewPrivate.h
index f12bd5e..39be761 100644
--- a/WebKit/WebView.subproj/WebViewPrivate.h
+++ b/WebKit/WebView.subproj/WebViewPrivate.h
@@ -312,6 +312,8 @@ Could be worth adding to the API.
 @interface WebView (WebViewEditingExtras)
 - (BOOL)_interceptEditingKeyEvent:(NSEvent *)event;
 - (DOMDocument *)DOMDocument;
+- (BOOL)_shouldBeginEditingInDOMRange:(DOMRange *)range;
+- (BOOL)_shouldEndEditingInDOMRange:(DOMRange *)range;
 @end
 
 

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list