diff --git a/editor/libeditor/html/nsHTMLCSSUtils.cpp b/editor/libeditor/html/nsHTMLCSSUtils.cpp
index 7a2c9e803d0d..19039bbf5d17 100644
--- a/editor/libeditor/html/nsHTMLCSSUtils.cpp
+++ b/editor/libeditor/html/nsHTMLCSSUtils.cpp
@@ -63,13 +63,8 @@ void ProcessBValue(const nsAString * aInputString, nsAString & aOutputString,
const char * aDefaultValueString,
const char * aPrependString, const char* aAppendString)
{
- if (aInputString) {
- if (aInputString->Equals(NS_LITERAL_STRING("-moz-editor-invert-value"))) {
+ if (aInputString && aInputString->Equals(NS_LITERAL_STRING("-moz-editor-invert-value"))) {
aOutputString.Assign(NS_LITERAL_STRING("normal"));
- }
- else {
- aOutputString.Assign(NS_LITERAL_STRING("bold"));
- }
}
else {
aOutputString.Assign(NS_LITERAL_STRING("bold"));
@@ -81,10 +76,11 @@ void ProcessDefaultValue(const nsAString * aInputString, nsAString & aOutputStri
const char * aDefaultValueString,
const char * aPrependString, const char* aAppendString)
{
- aOutputString.Truncate();
if (aDefaultValueString) {
aOutputString.Assign(NS_ConvertASCIItoUCS2(aDefaultValueString));
}
+ else
+ aOutputString.Truncate();
}
static
@@ -92,10 +88,11 @@ void ProcessSameValue(const nsAString * aInputString, nsAString & aOutputString,
const char * aDefaultValueString,
const char * aPrependString, const char* aAppendString)
{
- aOutputString.Truncate();
if (aInputString) {
aOutputString.Assign(*aInputString);
}
+ else
+ aOutputString.Truncate();
}
static
@@ -348,6 +345,8 @@ nsHTMLCSSUtils::IsCSSEditableProperty(nsIDOMNode * aNode,
nsCOMPtr tagName;
content->GetTag(getter_AddRefs(tagName));
+ // brade: should the above use nsEditor::GetTag(aNode)?
+ // brade: shouldn't some of the above go below the next block?
// html inline styles B I TT U STRIKE and COLOR/FACE on FONT
if (nsEditProperty::b == aProperty
@@ -375,6 +374,8 @@ nsHTMLCSSUtils::IsCSSEditableProperty(nsIDOMNode * aNode,
|| nsEditProperty::th == tagName
|| nsEditProperty::table == tagName
|| nsEditProperty::hr == tagName
+ // brade: for the above, why not use nsHTMLEditUtils::SupportsAlignAttr
+ // brade: but it also checks for tbody, tfoot, thead
// Let's add the following elements here even if ALIGN has not
// the same meaning for them
|| nsEditProperty::legend == tagName
@@ -484,6 +485,18 @@ nsHTMLCSSUtils::SetCSSProperty(nsIDOMElement *aElement, nsIAtom * aProperty, con
return result;
}
+nsresult
+nsHTMLCSSUtils::SetCSSPropertyPixels(nsIDOMElement *aElement,
+ nsIAtom *aProperty,
+ PRInt32 aIntValue,
+ PRBool aSuppressTransaction)
+{
+ nsAutoString s;
+ s.AppendInt(aIntValue);
+ return SetCSSProperty(aElement, aProperty, s + NS_LITERAL_STRING("px"),
+ aSuppressTransaction);
+}
+
// the lowest level above the transaction; removes the value aValue from the list of values
// specified for the CSS property aProperty, or totally remove the declaration if this
// property accepts only one value
@@ -504,7 +517,6 @@ nsHTMLCSSUtils::RemoveCSSProperty(nsIDOMElement *aElement, nsIAtom * aProperty,
// The transaction system (if any) has taken ownwership of txn
NS_IF_RELEASE(txn);
return result;
- return NS_OK;
}
nsresult
@@ -515,7 +527,7 @@ nsHTMLCSSUtils::CreateCSSPropertyTxn(nsIDOMElement *aElement,
PRBool aRemoveProperty)
{
nsresult result = NS_ERROR_NULL_POINTER;
- if (nsnull != aElement)
+ if (aElement)
{
result = TransactionFactory::GetNewTransaction(ChangeCSSInlineStyleTxn::GetCID(), (EditTxn **)aTxn);
if (NS_SUCCEEDED(result)) {
@@ -574,7 +586,7 @@ nsHTMLCSSUtils::GetCSSInlinePropertyBase(nsIDOMNode *aNode, nsIAtom *aProperty,
case SPECIFIED_STYLE_TYPE:
if (element) {
nsCOMPtr cssDecl;
- PRUint32 length = 0;
+ PRUint32 length;
res = GetInlineStyles(element, getter_AddRefs(cssDecl), &length);
if (NS_FAILED(res)) return res;
nsAutoString value, propString;
@@ -603,10 +615,9 @@ nsHTMLCSSUtils::GetDefaultViewCSS(nsIDOMNode *aNode, nsIDOMViewCSS **aViewCSS)
res = node->GetOwnerDocument(getter_AddRefs(doc));
if (NS_FAILED(res)) return res;
if (doc) {
- nsCOMPtr documentView;
+ nsCOMPtr documentView = do_QueryInterface(doc);
nsCOMPtr abstractView;
// from the document, get the abtractView
- documentView = do_QueryInterface(doc);
res = documentView->GetDefaultView(getter_AddRefs(abstractView));
if (NS_FAILED(res)) return res;
// from the abstractView, get the CSS view
@@ -626,9 +637,8 @@ NS_NewHTMLCSSUtils(nsHTMLCSSUtils** aInstancePtrResult)
*aInstancePtrResult = rules;
return NS_OK;
}
- else {
- *aInstancePtrResult = nsnull;
- }
+
+ *aInstancePtrResult = nsnull;
return NS_ERROR_OUT_OF_MEMORY;
}
@@ -909,6 +919,7 @@ nsHTMLCSSUtils::GenerateCSSDeclarationsFromHTMLStyle(nsIDOMNode * aNode,
}
if (!node) return;
+ // brade: use nsEditor::GetTag instead??
nsCOMPtr content = do_QueryInterface(node);
nsCOMPtr tagName;
content->GetTag(getter_AddRefs(tagName));
@@ -1051,7 +1062,6 @@ nsHTMLCSSUtils::RemoveCSSEquivalentToHTMLStyle(nsIDOMNode * aNode,
for (index = 0; index < count; index++) {
nsAutoString valueString;
cssValueArray.StringAt(index, valueString);
- nsCOMPtr theElement = do_QueryInterface(aNode);
res = RemoveCSSProperty(theElement, (nsIAtom *)cssPropertyArray.ElementAt(index), valueString,
aSuppressTransaction);
if (NS_FAILED(res)) return res;
@@ -1091,32 +1101,31 @@ nsHTMLCSSUtils::GetCSSEquivalentToHTMLInlineStyleSet(nsIDOMNode * aNode,
nsAString & aValueString,
PRUint8 aStyleType)
{
+ aValueString.Truncate();
nsCOMPtr theElement;
nsresult res = GetElementContainerOrSelf(aNode, getter_AddRefs(theElement));
if (NS_FAILED(res)) return res;
- nsCOMPtr theNode = do_QueryInterface(theElement);
- aValueString.Truncate();
- if (theElement && IsCSSEditableProperty(theNode, aHTMLProperty, aAttribute)) {
+ if (theElement && IsCSSEditableProperty(theElement, aHTMLProperty, aAttribute)) {
// Yes, the requested HTML style has a CSS equivalence in this implementation
// Retrieve the default ViewCSS if we are asked for computed styles
nsCOMPtr viewCSS = nsnull;
if (COMPUTED_STYLE_TYPE == aStyleType) {
- res = GetDefaultViewCSS(theNode, getter_AddRefs(viewCSS));
+ res = GetDefaultViewCSS(theElement, getter_AddRefs(viewCSS));
if (NS_FAILED(res)) return res;
}
nsVoidArray cssPropertyArray;
nsStringArray cssValueArray;
// get the CSS equivalence with last param PR_TRUE indicating we want only the
// "gettable" properties
- GenerateCSSDeclarationsFromHTMLStyle(theNode, aHTMLProperty, aAttribute, nsnull,
+ GenerateCSSDeclarationsFromHTMLStyle(theElement, aHTMLProperty, aAttribute, nsnull,
cssPropertyArray, cssValueArray, PR_TRUE);
PRInt32 count = cssPropertyArray.Count();
PRInt32 index;
for (index = 0; index < count; index++) {
nsAutoString valueString;
// retrieve the specified/computed value of the property
- res = GetCSSInlinePropertyBase(theNode, (nsIAtom *)cssPropertyArray.ElementAt(index),
+ res = GetCSSInlinePropertyBase(theElement, (nsIAtom *)cssPropertyArray.ElementAt(index),
valueString, viewCSS, aStyleType);
if (NS_FAILED(res)) return res;
// append the value to aValueString (possibly with a leading whitespace)
@@ -1145,6 +1154,7 @@ nsHTMLCSSUtils::IsCSSEquivalentToHTMLInlineStyleSet(nsIDOMNode * aNode,
nsAutoString htmlValueString(valueString);
aIsSet = PR_FALSE;
nsCOMPtr node = aNode;
+ NS_NAMED_LITERAL_STRING(boldStr, "bold");
do {
valueString.Assign(htmlValueString);
// get the value of the CSS equivalent styles
@@ -1156,7 +1166,7 @@ nsHTMLCSSUtils::IsCSSEquivalentToHTMLInlineStyleSet(nsIDOMNode * aNode,
if (valueString.IsEmpty()) return NS_OK;
if (nsEditProperty::b == aHTMLProperty) {
- if (valueString.Equals(NS_LITERAL_STRING("bold"))) {
+ if (valueString.Equals(boldStr)) {
aIsSet = PR_TRUE;
}
else if (valueString.Equals(NS_LITERAL_STRING("normal"))) {
@@ -1164,7 +1174,7 @@ nsHTMLCSSUtils::IsCSSEquivalentToHTMLInlineStyleSet(nsIDOMNode * aNode,
}
else if (valueString.Equals(NS_LITERAL_STRING("bolder"))) {
aIsSet = PR_TRUE;
- valueString.Assign(NS_LITERAL_STRING("bold"));
+ valueString.Assign(boldStr);
}
else {
PRInt32 weight = 0;
@@ -1173,7 +1183,7 @@ nsHTMLCSSUtils::IsCSSEquivalentToHTMLInlineStyleSet(nsIDOMNode * aNode,
weight = value.ToInteger(&errorCode, 10);
if (400 < weight) {
aIsSet = PR_TRUE;
- valueString.Assign(NS_LITERAL_STRING("bold"));
+ valueString.Assign(boldStr);
}
else {
aIsSet = PR_FALSE;
@@ -1286,12 +1296,7 @@ nsHTMLCSSUtils::IsCSSEquivalentToHTMLInlineStyleSet(nsIDOMNode * aNode,
res = node->GetParentNode(getter_AddRefs(tmp));
if (NS_FAILED(res)) return res;
nsCOMPtr element = do_QueryInterface(tmp);
- if (element) {
- node = tmp;
- }
- else {
- node = nsnull;
- }
+ node = element; // set to null if it's not a dom element
}
} while ((nsEditProperty::u == aHTMLProperty || nsEditProperty::strike == aHTMLProperty) &&
!aIsSet && node);
@@ -1413,7 +1418,7 @@ nsHTMLCSSUtils::GetElementContainerOrSelf(nsIDOMNode * aNode, nsIDOMElement ** a
{
NS_ENSURE_TRUE(aNode, NS_ERROR_NULL_POINTER);
- nsCOMPtr node=aNode, parentNode=aNode;
+ nsCOMPtr node=aNode, parentNode;
PRUint16 type;
nsresult res;
res = node->GetNodeType(&type);
@@ -1442,7 +1447,7 @@ nsHTMLCSSUtils::SetCSSProperty(nsIDOMElement * aElement,
const nsAString & aValue)
{
nsCOMPtr cssDecl;
- PRUint32 length = 0;
+ PRUint32 length;
nsresult res = GetInlineStyles(aElement, getter_AddRefs(cssDecl), &length);
if (NS_FAILED(res)) return res;
@@ -1450,12 +1455,23 @@ nsHTMLCSSUtils::SetCSSProperty(nsIDOMElement * aElement,
aValue,
nsString());
}
+
+nsresult
+nsHTMLCSSUtils::SetCSSPropertyPixels(nsIDOMElement * aElement,
+ const nsAString & aProperty,
+ PRInt32 aIntValue)
+{
+ nsAutoString s;
+ s.AppendInt(aIntValue);
+ return SetCSSProperty(aElement, aProperty, s + NS_LITERAL_STRING("px"));
+}
+
nsresult
nsHTMLCSSUtils::RemoveCSSProperty(nsIDOMElement * aElement,
const nsAString & aProperty)
{
nsCOMPtr cssDecl;
- PRUint32 length = 0;
+ PRUint32 length;
nsresult res = GetInlineStyles(aElement, getter_AddRefs(cssDecl), &length);
if (NS_FAILED(res)) return res;
diff --git a/editor/libeditor/html/nsHTMLCSSUtils.h b/editor/libeditor/html/nsHTMLCSSUtils.h
index 5691db2b3e0d..8782d6f63b11 100644
--- a/editor/libeditor/html/nsHTMLCSSUtils.h
+++ b/editor/libeditor/html/nsHTMLCSSUtils.h
@@ -123,6 +123,8 @@ public:
nsresult SetCSSProperty(nsIDOMElement * aElement, nsIAtom * aProperty,
const nsAString & aValue,
PRBool aSuppressTransaction);
+ nsresult SetCSSPropertyPixels(nsIDOMElement *aElement, nsIAtom *aProperty,
+ PRInt32 aIntValue, PRBool aSuppressTxn);
nsresult RemoveCSSProperty(nsIDOMElement * aElement, nsIAtom * aProperty,
const nsAString & aPropertyValue, PRBool aSuppressTransaction);
@@ -136,6 +138,9 @@ public:
nsresult SetCSSProperty(nsIDOMElement * aElement,
const nsAString & aProperty,
const nsAString & aValue);
+ nsresult SetCSSPropertyPixels(nsIDOMElement * aElement,
+ const nsAString & aProperty,
+ PRInt32 aIntValue);
nsresult RemoveCSSProperty(nsIDOMElement * aElement,
const nsAString & aProperty);