Reviewed by Adam.
Add ability to HitTestResult to ask if the inner non-shared node is
content editable.
* WebCore.exp: Export HitTestResult::isContentEditable()
* rendering/HitTestResult.cpp:
(WebCore::HitTestResult::isContentEditable):
* rendering/HitTestResult.h:
WebKit:
Reviewed by Adam.
Add WebElementIsContentEditableKey to the WebElementDictionary, and
use it!
* DefaultDelegates/WebDefaultContextMenuDelegate.m:
(-[WebDefaultUIDelegate
webView:contextMenuItemsForElement:defaultMenuItems:]): Use new
WebElementIsContentEditableKey.
* Misc/WebElementDictionary.m:
(+[WebElementDictionary initializeLookupTable]):
(-[WebElementDictionary _isContentEditable]): Call into
HitTestResult::isContentEditable()
* WebView/WebView.mm: Add new key.
* WebView/WebViewPrivate.h: Add new key.
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@17669
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2006-11-08 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Adam.
+
+ Add ability to HitTestResult to ask if the inner non-shared node is
+ content editable.
+
+ * WebCore.exp: Export HitTestResult::isContentEditable()
+ * rendering/HitTestResult.cpp:
+ (WebCore::HitTestResult::isContentEditable):
+ * rendering/HitTestResult.h:
+
2006-11-08 Anders Carlsson <acarlsson@apple.com>
Build fix.
__ZNK7WebCore13HitTestResult15spellingToolTipEv
__ZNK7WebCore13HitTestResult16absoluteImageURLEv
__ZNK7WebCore13HitTestResult16altDisplayStringEv
+__ZNK7WebCore13HitTestResult17isContentEditableEv
__ZNK7WebCore13HitTestResult18titleDisplayStringEv
__ZNK7WebCore13HitTestResult5imageEv
__ZNK7WebCore13HitTestResult5titleEv
return m_innerURLElement->textContent();
}
+bool HitTestResult::isContentEditable() const
+{
+ if (!m_innerNonSharedNode)
+ return false;
+
+ if (m_innerNonSharedNode->hasTagName(textareaTag) || m_innerNonSharedNode->hasTagName(isindexTag))
+ return true;
+
+ if (m_innerNonSharedNode->hasTagName(inputTag))
+ return static_cast<HTMLInputElement*>(m_innerNonSharedNode.get())->isTextField();
+
+ return m_innerNonSharedNode->isContentEditable();
+}
+
} // namespace WebCore
String titleDisplayString() const;
String textContent() const;
bool isLiveLink() const;
+ bool isContentEditable() const;
private:
RefPtr<Node> m_innerNode;
+2006-11-08 Beth Dakin <bdakin@apple.com>
+
+ Reviewed by Adam.
+
+ Add WebElementIsContentEditableKey to the WebElementDictionary, and
+ use it!
+
+ * DefaultDelegates/WebDefaultContextMenuDelegate.m:
+ (-[WebDefaultUIDelegate
+ webView:contextMenuItemsForElement:defaultMenuItems:]): Use new
+ WebElementIsContentEditableKey.
+ * Misc/WebElementDictionary.m:
+ (+[WebElementDictionary initializeLookupTable]):
+ (-[WebElementDictionary _isContentEditable]): Call into
+ HitTestResult::isContentEditable()
+ * WebView/WebView.mm: Add new key.
+ * WebView/WebViewPrivate.h: Add new key.
+
2006-11-08 Anders Carlsson <acarlsson@apple.com>
Reviewed by Oliver.
- (NSArray *)webView:(WebView *)wv contextMenuItemsForElement:(NSDictionary *)element defaultMenuItems:(NSArray *)defaultMenuItems
{
- BOOL contentEditible = NO;
- id domElement = [element objectForKey:WebElementDOMNodeKey];
- if ([wv isEditable] || [domElement isKindOfClass:[DOMHTMLTextAreaElement class]] || [domElement isKindOfClass:[DOMHTMLIsIndexElement class]])
- contentEditible = YES;
- else if ([domElement isKindOfClass:[DOMHTMLInputElement class]])
- contentEditible = [(DOMHTMLInputElement *)domElement _isTextField];
- else if ([domElement isKindOfClass:[DOMNode class]])
- contentEditible = [(DOMNode *)domElement isContentEditable];
-
+ BOOL contentEditible = [wv isEditable] || [[element objectForKey:WebElementIsContentEditableKey] boolValue];
NSView *documentView = [[[element objectForKey:WebElementFrameKey] frameView] documentView];
if ([documentView isKindOfClass:[WebHTMLView class]] && contentEditible) {
return [self editingContextMenuItemsForElement:element defaultMenuItems:defaultMenuItems];
addLookupKey(WebElementLinkTitleKey, @selector(_titleDisplayString));
addLookupKey(WebElementLinkLabelKey, @selector(_textContent));
addLookupKey(WebElementLinkIsLiveKey, @selector(_isLiveLink));
+ addLookupKey(WebElementIsContentEditableKey, @selector(_isContentEditable));
}
- (id)initWithHitTestResult:(const HitTestResult&)result
return [NSNumber numberWithBool:_result->isLiveLink()];
}
+- (NSNumber *)_isContentEditable
+{
+ return [NSNumber numberWithBool:_result->isContentEditable()];
+}
+
@end
NSString *WebElementSpellingToolTipKey = @"WebElementSpellingToolTip";
NSString *WebElementTitleKey = @"WebElementTitle";
NSString *WebElementLinkIsLiveKey = @"WebElementLinkIsLive";
+NSString *WebElementIsContentEditableKey = @"WebElementIsContentEditableKey";
NSString *WebViewProgressStartedNotification = @"WebProgressStartedNotification";
NSString *WebViewProgressEstimateChangedNotification = @"WebProgressEstimateChangedNotification";
// pending public WebElementDictionary keys
extern NSString *WebElementTitleKey; // NSString of the title of the element (used by Safari)
extern NSString *WebElementSpellingToolTipKey; // NSString of a tooltip representing misspelling or bad grammar (used internally)
+extern NSString *WebElementIsContentEditableKey; // NSNumber indicating whether the inner non-shared node is content editable (used internally)
// other WebElementDictionary keys
extern NSString *WebElementLinkIsLiveKey; // NSNumber of BOOL indictating whether the link is live or not