diff --git a/editor/libeditor/html/nsHTMLEditRules.cpp b/editor/libeditor/html/nsHTMLEditRules.cpp index 97e2921ef4c..afecfb6f6f1 100644 --- a/editor/libeditor/html/nsHTMLEditRules.cpp +++ b/editor/libeditor/html/nsHTMLEditRules.cpp @@ -6526,6 +6526,23 @@ nsHTMLEditRules::ReturnInListItem(nsISelection *aSelection, if (NS_FAILED(res)) return res; if (bIsEmptyNode) { + nsCOMPtr nodeAtom = nsEditor::GetTag(aListItem); + if (nodeAtom == nsEditProperty::dd || nodeAtom == nsEditProperty::dt) + { + nsCOMPtr list; + PRInt32 itemOffset; + res = nsEditor::GetNodeLocation(aListItem, address_of(list), &itemOffset); + if (NS_FAILED(res)) return res; + + nsAutoString listTag((nodeAtom == nsEditProperty::dt) ? NS_LITERAL_STRING("dd") : NS_LITERAL_STRING("dt")); + nsCOMPtr newListItem; + res = mHTMLEditor->CreateNode(listTag, list, itemOffset+1, getter_AddRefs(newListItem)); + if (NS_FAILED(res)) return res; + res = mEditor->DeleteNode(aListItem); + if (NS_FAILED(res)) return res; + return aSelection->Collapse(newListItem, 0); + } + nsCOMPtr brNode; res = mHTMLEditor->CopyLastEditableChildStyles(prevItem, aListItem, getter_AddRefs(brNode)); if (NS_FAILED(res)) return res; diff --git a/editor/libeditor/html/nsHTMLEditor.cpp b/editor/libeditor/html/nsHTMLEditor.cpp index 0d9608577f9..52ed4948cad 100644 --- a/editor/libeditor/html/nsHTMLEditor.cpp +++ b/editor/libeditor/html/nsHTMLEditor.cpp @@ -592,6 +592,8 @@ nsHTMLEditor::NodeIsBlockStatic(nsIDOMNode *aNode, PRBool *aIsBlock) tagAtom==nsEditProperty::th || tagAtom==nsEditProperty::td || tagAtom==nsEditProperty::li || + tagAtom==nsEditProperty::dt || + tagAtom==nsEditProperty::dd || tagAtom==nsEditProperty::pre) { *aIsBlock = PR_TRUE;