Commit 27ced7b3 authored by rniwa@webkit.org's avatar 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.

Source/WebKit/mac: 

* WebCoreSupport/WebEditorClient.mm:
(WebEditorClient::registerUndoOrRedoStep):

Source/WebKit2: 

* UIProcess/API/mac/PageClientImpl.mm:
(WebKit::PageClientImpl::registerEditCommand):


git-svn-id: http://svn.webkit.org/repository/webkit/trunk@150034 268f45cc-cd09-0410-ab3c-d52691b4dbfc
parent b4afe65d
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
......
......@@ -544,9 +544,11 @@ void WebEditorClient::registerUndoOrRedoStep(PassRefPtr<UndoStep> step, bool isR
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()
......
......@@ -286,9 +286,11 @@ void PageClientImpl::registerEditCommand(PassRefPtr<WebEditCommandProxy> prpComm
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()
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment