Title: [175832] trunk/Source/WebKit/mac
- Revision
- 175832
- Author
- bda...@apple.com
- Date
- 2014-11-10 14:36:21 -0800 (Mon, 10 Nov 2014)
Log Message
WK1: Support default actions for editable text
https://bugs.webkit.org/show_bug.cgi?id=138580
-and corresponding-
rdar://problem/18877497
Reviewed by Tim Horton.
New menu type, and new action type for paste.
* WebView/WebActionMenuController.mm:
(-[WebActionMenuController isMenuForTextContent]):
(-[WebActionMenuController willOpenMenu:withEvent:]):
(-[WebActionMenuController _defaultMenuItemsForEditableText:]):
(-[WebActionMenuController _paste:]):
(-[WebActionMenuController _createActionMenuItemForTag:withHitTestResult:]):
(-[WebActionMenuController _defaultMenuItemsForHitTestResult:]):
* WebView/WebUIDelegatePrivate.h:
Modified Paths
Diff
Modified: trunk/Source/WebKit/mac/ChangeLog (175831 => 175832)
--- trunk/Source/WebKit/mac/ChangeLog 2014-11-10 22:12:01 UTC (rev 175831)
+++ trunk/Source/WebKit/mac/ChangeLog 2014-11-10 22:36:21 UTC (rev 175832)
@@ -1,5 +1,25 @@
2014-11-10 Beth Dakin <bda...@apple.com>
+ WK1: Support default actions for editable text
+ https://bugs.webkit.org/show_bug.cgi?id=138580
+ -and corresponding-
+ rdar://problem/18877497
+
+ Reviewed by Tim Horton.
+
+ New menu type, and new action type for paste.
+
+ * WebView/WebActionMenuController.mm:
+ (-[WebActionMenuController isMenuForTextContent]):
+ (-[WebActionMenuController willOpenMenu:withEvent:]):
+ (-[WebActionMenuController _defaultMenuItemsForEditableText:]):
+ (-[WebActionMenuController _paste:]):
+ (-[WebActionMenuController _createActionMenuItemForTag:withHitTestResult:]):
+ (-[WebActionMenuController _defaultMenuItemsForHitTestResult:]):
+ * WebView/WebUIDelegatePrivate.h:
+
+2014-11-10 Beth Dakin <bda...@apple.com>
+
WK1: Text is getting selected even when an action menu fails to invoke
https://bugs.webkit.org/show_bug.cgi?id=138576
-and corresponding-
Modified: trunk/Source/WebKit/mac/WebView/WebActionMenuController.mm (175831 => 175832)
--- trunk/Source/WebKit/mac/WebView/WebActionMenuController.mm 2014-11-10 22:12:01 UTC (rev 175831)
+++ trunk/Source/WebKit/mac/WebView/WebActionMenuController.mm 2014-11-10 22:36:21 UTC (rev 175832)
@@ -126,12 +126,17 @@
[actionMenu addItem:item];
}
+- (BOOL)isMenuForTextContent
+{
+ return _type == WebActionMenuReadOnlyText || _type == WebActionMenuEditableText;
+}
+
- (void)willOpenMenu:(NSMenu *)menu withEvent:(NSEvent *)event
{
if (menu != _webView.actionMenu)
return;
- if (_type != WebActionMenuReadOnlyText) {
+ if (![self isMenuForTextContent]) {
[[_webView _selectedOrMainFrame] _clearSelection];
return;
}
@@ -259,6 +264,15 @@
return @[ copyTextItem.get(), lookupTextItem.get() ];
}
+- (NSArray *)_defaultMenuItemsForEditableText:(WebElementDictionary *)hitTestResult
+{
+ RetainPtr<NSMenuItem> copyTextItem = [self _createActionMenuItemForTag:WebActionMenuItemTagCopyText withHitTestResult:hitTestResult];
+ RetainPtr<NSMenuItem> lookupTextItem = [self _createActionMenuItemForTag:WebActionMenuItemTagLookupText withHitTestResult:hitTestResult];
+ RetainPtr<NSMenuItem> pasteItem = [self _createActionMenuItemForTag:WebActionMenuItemTagPaste withHitTestResult:hitTestResult];
+
+ return @[ copyTextItem.get(), lookupTextItem.get(), pasteItem.get() ];
+}
+
- (void)_copySelection:(id)sender
{
[_webView _executeCoreCommandByName:@"copy" value:nil];
@@ -283,6 +297,11 @@
WKShowWordDefinitionWindow(popupInfo.attributedString.get(), textBaselineOrigin, popupInfo.options.get());
}
+- (void)_paste:(id)sender
+{
+ [_webView _executeCoreCommandByName:@"paste" value:nil];
+}
+
- (void)_selectLookupText
{
NSDictionary *options = nil;
@@ -391,6 +410,12 @@
image = [NSImage imageNamed:@"NSActionMenuLookup"];
break;
+ case WebActionMenuItemTagPaste:
+ selector = @selector(_paste:);
+ title = @"Paste";
+ image = [NSImage imageNamed:@"NSActionMenuPaste"];
+ break;
+
default:
ASSERT_NOT_REACHED();
return nil;
@@ -419,6 +444,11 @@
Node* node = _hitTestResult.innerNode();
if (node && node->isTextNode()) {
+ if (_hitTestResult.isContentEditable()) {
+ _type = WebActionMenuEditableText;
+ return [self _defaultMenuItemsForEditableText:hitTestResult];
+ }
+
_type = WebActionMenuReadOnlyText;
return [self _defaultMenuItemsForText:hitTestResult];
}
Modified: trunk/Source/WebKit/mac/WebView/WebUIDelegatePrivate.h (175831 => 175832)
--- trunk/Source/WebKit/mac/WebView/WebUIDelegatePrivate.h 2014-11-10 22:12:01 UTC (rev 175831)
+++ trunk/Source/WebKit/mac/WebView/WebUIDelegatePrivate.h 2014-11-10 22:36:21 UTC (rev 175832)
@@ -118,13 +118,15 @@
WebActionMenuItemTagPreviewLink,
WebActionMenuItemTagAddLinkToSafariReadingList,
WebActionMenuItemTagCopyText,
- WebActionMenuItemTagLookupText
+ WebActionMenuItemTagLookupText,
+ WebActionMenuItemTagPaste
};
typedef enum {
WebActionMenuNone = 0,
WebActionMenuLink,
- WebActionMenuReadOnlyText
+ WebActionMenuReadOnlyText,
+ WebActionMenuEditableText
} WebActionMenuType;
// Message Sources.
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes