Bug 412920 - "[contenteditable] editable elements cannot be edited anymore after page refresh" [p=chris@pearce.org.nz (Chris Pearce [cpearce]) / peterv@propagandism.org (Peter Van der Beken) r+sr=jst a=blocking1.9+]

git-svn-id: svn://10.0.0.236/trunk@246059 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
reed%reedloden.com
2008-02-20 09:54:52 +00:00
parent 9daf01cdef
commit d4d3aa8fc5
4 changed files with 26 additions and 14 deletions

View File

@@ -3902,6 +3902,21 @@ NotifyEditableStateChange(nsINode *aNode, nsIDocument *aDocument,
}
}
void
nsHTMLDocument::TearingDownEditor(nsIEditor *aEditor)
{
if (IsEditingOn()) {
mEditingState = eTearingDown;
nsCOMPtr<nsIEditorStyleSheets> editorss = do_QueryInterface(aEditor);
if (editorss) {
editorss->RemoveOverrideStyleSheet(NS_LITERAL_STRING("resource://gre/res/contenteditable.css"));
if (mEditingState == eDesignMode)
editorss->RemoveOverrideStyleSheet(NS_LITERAL_STRING("resource://gre/res/designmode.css"));
}
}
}
nsresult
nsHTMLDocument::TurnEditingOff()
{
@@ -3916,10 +3931,6 @@ nsHTMLDocument::TurnEditingOff()
return NS_ERROR_FAILURE;
nsresult rv;
nsCOMPtr<nsIEditorDocShell> editorDocShell =
do_QueryInterface(docshell, &rv);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIEditingSession> editSession = do_GetInterface(docshell, &rv);
NS_ENSURE_SUCCESS(rv, rv);
@@ -3927,15 +3938,6 @@ nsHTMLDocument::TurnEditingOff()
rv = editSession->TearDownEditorOnWindow(window);
NS_ENSURE_SUCCESS(rv, rv);
nsCOMPtr<nsIEditor> editor;
editorDocShell->GetEditor(getter_AddRefs(editor));
nsCOMPtr<nsIEditorStyleSheets> editorss = do_QueryInterface(editor);
if (editorss) {
editorss->RemoveOverrideStyleSheet(NS_LITERAL_STRING("resource://gre/res/contenteditable.css"));
if (mEditingState == eDesignMode)
editorss->RemoveOverrideStyleSheet(NS_LITERAL_STRING("resource://gre/res/designmode.css"));
}
mEditingState = eOff;
return NS_OK;
@@ -3954,7 +3956,7 @@ static PRBool HasPresShell(nsPIDOMWindow *aWindow)
nsresult
nsHTMLDocument::EditingStateChanged()
{
if (mEditingState == eSettingUp) {
if (mEditingState == eSettingUp || mEditingState == eTearingDown) {
// XXX We shouldn't recurse.
return NS_OK;
}