https://bugs.webkit.org/show_bug.cgi?id=116050
Reviewed by Enrica Casucci.
Always group undo items to work around a bug in NSUndoManager that manifests
when we call removeAllActionsWithTarget.
Source/WebKit/mac:
* WebCoreSupport/WebEditorClient.mm:
(WebEditorClient::registerUndoOrRedoStep):
Source/WebKit2:
* UIProcess/API/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::registerEditCommand):
git-svn-id: https://svn.webkit.org/repository/webkit/trunk@150034
268f45cc-cd09-0410-ab3c-
d52691b4dbfc
+2013-05-13 Ryosuke Niwa <rniwa@webkit.org>
+
+ Sometimes NSUndoManager can get into an inconsistent state
+ https://bugs.webkit.org/show_bug.cgi?id=116050
+
+ Reviewed by Enrica Casucci.
+
+ Always group undo items to work around a bug in NSUndoManager that manifests
+ when we call removeAllActionsWithTarget.
+
+ * WebCoreSupport/WebEditorClient.mm:
+ (WebEditorClient::registerUndoOrRedoStep):
+
2013-05-13 Zalan Bujtas <zalan@apple.com>
WebProcess consuming very high CPU on linkedin.com
NSUndoManager *undoManager = [m_webView undoManager];
NSString *actionName = undoNameForEditAction(step->editingAction());
WebUndoStep *webEntry = [WebUndoStep stepWithUndoStep:step];
+ [undoManager beginUndoGrouping];
[undoManager registerUndoWithTarget:m_undoTarget.get() selector:(isRedo ? @selector(redoEditing:) : @selector(undoEditing:)) object:webEntry];
if (actionName)
[undoManager setActionName:actionName];
+ [undoManager endUndoGrouping];
m_haveUndoRedoOperations = YES;
}
+2013-05-13 Ryosuke Niwa <rniwa@webkit.org>
+
+ Sometimes NSUndoManager can get into an inconsistent state
+ https://bugs.webkit.org/show_bug.cgi?id=116050
+
+ Reviewed by Enrica Casucci.
+
+ Always group undo items to work around a bug in NSUndoManager that manifests
+ when we call removeAllActionsWithTarget.
+
+ * UIProcess/API/mac/PageClientImpl.mm:
+ (WebKit::PageClientImpl::registerEditCommand):
+
2013-05-13 Anders Carlsson <andersca@apple.com>
[WK2] Crash in WebKit::StorageAreaMap::didSetItem()
String actionName = WebEditCommandProxy::nameForEditAction(command->editAction());
NSUndoManager *undoManager = [m_wkView undoManager];
+ [undoManager beginUndoGrouping];
[undoManager registerUndoWithTarget:m_undoTarget.get() selector:((undoOrRedo == WebPageProxy::Undo) ? @selector(undoEditing:) : @selector(redoEditing:)) object:commandObjC.get()];
if (!actionName.isEmpty())
[undoManager setActionName:(NSString *)actionName];
+ [undoManager endUndoGrouping];
}
void PageClientImpl::clearAllEditCommands()