From 03e7911d124bbb61d97a20c930d6fc4bffe393cf Mon Sep 17 00:00:00 2001 From: "cmanske%netscape.com" Date: Tue, 21 Sep 1999 01:36:30 +0000 Subject: [PATCH] Editor bug fixes. List Properties dialog work. Fixed menu access keys in DTD file. Fixed using selection->Clear() cases git-svn-id: svn://10.0.0.236/trunk@48474 18797224-902f-48f8-a5cc-f745e15eee43 --- mozilla/editor/base/EditTable.cpp | 3 +- mozilla/editor/base/nsEditorShell.cpp | 2 - mozilla/editor/base/nsHTMLEditor.cpp | 51 +-- mozilla/editor/composer/src/nsEditorShell.cpp | 2 - .../editor/libeditor/html/nsHTMLEditor.cpp | 51 +-- .../ui/composer/content/EditorAppShell.xul | 2 + .../ui/composer/content/EditorCommands.js | 10 +- .../ui/composer/content/editor.properties | 24 +- .../ui/composer/content/editorOverlay.xul | 35 +- .../composer/locale/en-US/editorOverlay.dtd | 346 +++++++++--------- .../ui/dialogs/content/EdDialogCommon.js | 24 +- .../editor/ui/dialogs/content/EdHLineProps.js | 13 +- .../ui/dialogs/content/EdHLineProps.xul | 8 +- .../editor/ui/dialogs/content/EdListProps.js | 151 ++++++-- .../editor/ui/dialogs/content/EdListProps.xul | 45 +-- .../editor/ui/dialogs/content/EdMessage.js | 9 +- .../locale/en-US/EditorListProperties.dtd | 10 +- .../editor/ui/dialogs/skin/EditorDialog.css | 17 +- 18 files changed, 449 insertions(+), 354 deletions(-) diff --git a/mozilla/editor/base/EditTable.cpp b/mozilla/editor/base/EditTable.cpp index 043504de59d..1097c889c84 100644 --- a/mozilla/editor/base/EditTable.cpp +++ b/mozilla/editor/base/EditTable.cpp @@ -132,7 +132,6 @@ nsHTMLEditor::InsertTableRow(PRInt32 aNumber, PRBool aAfter) { nsAutoEditBatch beginBatching(this); //TODO: FINISH ME! - selection->ClearSelection(); } return res; } @@ -181,6 +180,8 @@ nsHTMLEditor::DeleteTableCell(PRInt32 aNumber) { nsAutoEditBatch beginBatching(this); + // We clear the selection to avoid problems when nodes in the selection are deleted, + // Be sure to set it correctly later (in SetCaretAfterTableEdit)! selection->ClearSelection(); PRInt32 i; for (i = 0; i < aNumber; i++) diff --git a/mozilla/editor/base/nsEditorShell.cpp b/mozilla/editor/base/nsEditorShell.cpp index d50d2801824..1545e9cfc44 100644 --- a/mozilla/editor/base/nsEditorShell.cpp +++ b/mozilla/editor/base/nsEditorShell.cpp @@ -795,11 +795,9 @@ nsEditorShell::PrepareDocumentForEditing(nsIURI *aUrl) } #endif -#if DEBUG_cmanske //TODO: TEMPORARY -- THIS IS NOT THE RIGHT THING TO DO! nsAutoString styleURL("chrome://editor/content/EditorContent.css"); ApplyStyleSheet(styleURL.GetUnicode()); -#endif // Force initial focus to the content window -- HOW? // mWebShellWin->SetFocus(); diff --git a/mozilla/editor/base/nsHTMLEditor.cpp b/mozilla/editor/base/nsHTMLEditor.cpp index 7bc327db76f..05a39c4b072 100644 --- a/mozilla/editor/base/nsHTMLEditor.cpp +++ b/mozilla/editor/base/nsHTMLEditor.cpp @@ -1206,10 +1206,6 @@ nsHTMLEditor::InsertElement(nsIDOMElement* aElement, PRBool aDeleteSelection) if (!aElement) return NS_ERROR_NULL_POINTER; - nsAutoEditBatch beginBatching(this); - // For most elements, set caret after inserting - //PRBool setCaretAfterElement = PR_TRUE; - nsCOMPtrselection; res = GetSelection(getter_AddRefs(selection)); if (!NS_SUCCEEDED(res) || !selection) @@ -1222,48 +1218,33 @@ nsHTMLEditor::InsertElement(nsIDOMElement* aElement, PRBool aDeleteSelection) res = mRules->WillDoAction(selection, &ruleInfo, &cancel); if (cancel || (NS_FAILED(res))) return res; - // Clear current selection. - // Should put caret at anchor point? + nsAutoEditBatch beginBatching(this); + + if (aDeleteSelection) + { + nsCOMPtr tempNode; + PRInt32 tempOffset; + nsresult result = DeleteSelectionAndPrepareToCreateNode(tempNode,tempOffset); + if (!NS_SUCCEEDED(result)) + return result; + } + + // If deleting, selection will be collapsed. + // so if not, we collapse it if (!aDeleteSelection) { - PRBool collapseAfter = PR_TRUE; // Named Anchor is a special case, // We collapse to insert element BEFORE the selection // For all other tags, we insert AFTER the selection nsCOMPtr node = do_QueryInterface(aElement); if (IsNamedAnchorNode(node)) - collapseAfter = PR_FALSE; - - if (collapseAfter) { - // Default behavior is to collapse to the end of the selection - selection->ClearSelection(); + selection->CollapseToStart(); } else { - // Collapse to the start of the selection, - // We must explore the first range and find - // its parent and starting offset of selection - // TODO: Move this logic to a new method nsIDOMSelection::CollapseToStart()??? - nsCOMPtr firstRange; - res = selection->GetRangeAt(0, getter_AddRefs(firstRange)); - // XXX: ERROR_HANDLING can firstRange legally be null? - if (NS_SUCCEEDED(res) && firstRange) - { - nsCOMPtr parent; - // XXX: ERROR_HANDLING bad XPCOM usage, should check for null parent separately - res = firstRange->GetCommonParent(getter_AddRefs(parent)); - if (NS_SUCCEEDED(res) && parent) - { - PRInt32 startOffset; - firstRange->GetStartOffset(&startOffset); - selection->Collapse(parent, startOffset); - } else { - // Very unlikely, but collapse to the end if we failed above - selection->ClearSelection(); - } - } + selection->CollapseToEnd(); } } - + nsCOMPtr parentSelectedNode; PRInt32 offsetForInsert; res = selection->GetAnchorNode(getter_AddRefs(parentSelectedNode)); diff --git a/mozilla/editor/composer/src/nsEditorShell.cpp b/mozilla/editor/composer/src/nsEditorShell.cpp index d50d2801824..1545e9cfc44 100644 --- a/mozilla/editor/composer/src/nsEditorShell.cpp +++ b/mozilla/editor/composer/src/nsEditorShell.cpp @@ -795,11 +795,9 @@ nsEditorShell::PrepareDocumentForEditing(nsIURI *aUrl) } #endif -#if DEBUG_cmanske //TODO: TEMPORARY -- THIS IS NOT THE RIGHT THING TO DO! nsAutoString styleURL("chrome://editor/content/EditorContent.css"); ApplyStyleSheet(styleURL.GetUnicode()); -#endif // Force initial focus to the content window -- HOW? // mWebShellWin->SetFocus(); diff --git a/mozilla/editor/libeditor/html/nsHTMLEditor.cpp b/mozilla/editor/libeditor/html/nsHTMLEditor.cpp index 7bc327db76f..05a39c4b072 100644 --- a/mozilla/editor/libeditor/html/nsHTMLEditor.cpp +++ b/mozilla/editor/libeditor/html/nsHTMLEditor.cpp @@ -1206,10 +1206,6 @@ nsHTMLEditor::InsertElement(nsIDOMElement* aElement, PRBool aDeleteSelection) if (!aElement) return NS_ERROR_NULL_POINTER; - nsAutoEditBatch beginBatching(this); - // For most elements, set caret after inserting - //PRBool setCaretAfterElement = PR_TRUE; - nsCOMPtrselection; res = GetSelection(getter_AddRefs(selection)); if (!NS_SUCCEEDED(res) || !selection) @@ -1222,48 +1218,33 @@ nsHTMLEditor::InsertElement(nsIDOMElement* aElement, PRBool aDeleteSelection) res = mRules->WillDoAction(selection, &ruleInfo, &cancel); if (cancel || (NS_FAILED(res))) return res; - // Clear current selection. - // Should put caret at anchor point? + nsAutoEditBatch beginBatching(this); + + if (aDeleteSelection) + { + nsCOMPtr tempNode; + PRInt32 tempOffset; + nsresult result = DeleteSelectionAndPrepareToCreateNode(tempNode,tempOffset); + if (!NS_SUCCEEDED(result)) + return result; + } + + // If deleting, selection will be collapsed. + // so if not, we collapse it if (!aDeleteSelection) { - PRBool collapseAfter = PR_TRUE; // Named Anchor is a special case, // We collapse to insert element BEFORE the selection // For all other tags, we insert AFTER the selection nsCOMPtr node = do_QueryInterface(aElement); if (IsNamedAnchorNode(node)) - collapseAfter = PR_FALSE; - - if (collapseAfter) { - // Default behavior is to collapse to the end of the selection - selection->ClearSelection(); + selection->CollapseToStart(); } else { - // Collapse to the start of the selection, - // We must explore the first range and find - // its parent and starting offset of selection - // TODO: Move this logic to a new method nsIDOMSelection::CollapseToStart()??? - nsCOMPtr firstRange; - res = selection->GetRangeAt(0, getter_AddRefs(firstRange)); - // XXX: ERROR_HANDLING can firstRange legally be null? - if (NS_SUCCEEDED(res) && firstRange) - { - nsCOMPtr parent; - // XXX: ERROR_HANDLING bad XPCOM usage, should check for null parent separately - res = firstRange->GetCommonParent(getter_AddRefs(parent)); - if (NS_SUCCEEDED(res) && parent) - { - PRInt32 startOffset; - firstRange->GetStartOffset(&startOffset); - selection->Collapse(parent, startOffset); - } else { - // Very unlikely, but collapse to the end if we failed above - selection->ClearSelection(); - } - } + selection->CollapseToEnd(); } } - + nsCOMPtr parentSelectedNode; PRInt32 offsetForInsert; res = selection->GetAnchorNode(getter_AddRefs(parentSelectedNode)); diff --git a/mozilla/editor/ui/composer/content/EditorAppShell.xul b/mozilla/editor/ui/composer/content/EditorAppShell.xul index d4492e518c8..5f6c470b50d 100644 --- a/mozilla/editor/ui/composer/content/EditorAppShell.xul +++ b/mozilla/editor/ui/composer/content/EditorAppShell.xul @@ -89,6 +89,8 @@ + + diff --git a/mozilla/editor/ui/composer/content/EditorCommands.js b/mozilla/editor/ui/composer/content/EditorCommands.js index 320e9d484c0..5504866e3f0 100644 --- a/mozilla/editor/ui/composer/content/EditorCommands.js +++ b/mozilla/editor/ui/composer/content/EditorCommands.js @@ -402,6 +402,12 @@ function EditorSetParagraphFormat(paraFormat) contentWindow.focus(); } +function EditorListProperties() +{ + window.openDialog("chrome://editor/content/EdListProps.xul","_blank", "chrome,close,titlebar,modal"); + contentWindow.focus(); +} + function EditorSetListStyle(listType) { // Write me! Replace EditorInsertList when working? @@ -638,7 +644,7 @@ function EditorInsertHLine() dump("failed to get HLine prefs\n"); } } - editorShell.InsertElement(hLine, false); + editorShell.InsertElement(hLine, true); } } contentWindow.focus(); @@ -652,7 +658,7 @@ function EditorInsertNamedAnchor() function EditorIndent(indent) { - dump("indenting\n"); + dump(indent+"\n"); editorShell.Indent(indent); contentWindow.focus(); } diff --git a/mozilla/editor/ui/composer/content/editor.properties b/mozilla/editor/ui/composer/content/editor.properties index b6f4a9efb75..1b8f0d84c6d 100644 --- a/mozilla/editor/ui/composer/content/editor.properties +++ b/mozilla/editor/ui/composer/content/editor.properties @@ -5,6 +5,8 @@ Save=Save DontSave=Don't Save More=More Fewer=Fewer +None=None +none=none OpenHTMLFile=Open HTML File SelectImageFile=Select Image File SaveDocument=Save Document @@ -23,11 +25,25 @@ SaveFileFailed=Saving file failed! DocumentTitle=Document Title NeedDocTitle=Document does not have a title. AttributesFor=Current attributes for: -MissingImageError=Please enter or choose an image\nof type gif, jpg or png. -EmptyHREFError=You must enter or choose\na location (URL) to create a new link. +MissingImageError=Please enter or choose an image
of type gif, jpg or png. +EmptyHREFError=You must enter or choose
a location (URL) to create a new link. EmptyLinkTextError=You must enter some text for this link. ValidateNumber1=The number you entered ( -ValidateNumber2=) is outside of allowed range.\nPlease enter a number between +ValidateNumber2=) is outside of allowed range.
Please enter a number between ValidateNumber3=and MissingAnchorNameError=You must enter a name for this anchor. -DuplicateAnchorNameError=already exists in this page.\nPlease enter a different name. +DuplicateAnchorNameError=already exists in this page.
Please enter a different name. +BulletStyle=Bullet Style: +SolidCircle=Solid circle +OpenCircle=Open circle +OpenSquare=Open square +NumberStyle=Number Style: +Automatic=Automatic +Style_1=1,2,3... +Style_I=I,II,III... +Style_i=i,ii,iii... +Style_A=A,B,C... +Style_a=a,b,c... + + + diff --git a/mozilla/editor/ui/composer/content/editorOverlay.xul b/mozilla/editor/ui/composer/content/editorOverlay.xul index 71cf0d88281..2279cee0525 100644 --- a/mozilla/editor/ui/composer/content/editorOverlay.xul +++ b/mozilla/editor/ui/composer/content/editorOverlay.xul @@ -148,7 +148,7 @@ - + @@ -193,7 +193,7 @@ - +
@@ -357,7 +357,7 @@ - + @@ -473,21 +473,23 @@ - + + + + - - @@ -501,15 +503,16 @@ - + - - - - + + + + + diff --git a/mozilla/editor/ui/composer/locale/en-US/editorOverlay.dtd b/mozilla/editor/ui/composer/locale/en-US/editorOverlay.dtd index b6520775bff..5d00221cd5a 100644 --- a/mozilla/editor/ui/composer/locale/en-US/editorOverlay.dtd +++ b/mozilla/editor/ui/composer/locale/en-US/editorOverlay.dtd @@ -24,164 +24,304 @@ + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + @@ -197,24 +337,55 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -284,172 +455,5 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/mozilla/editor/ui/dialogs/content/EdDialogCommon.js b/mozilla/editor/ui/dialogs/content/EdDialogCommon.js index 4fe2167d9a3..e1d618829c1 100644 --- a/mozilla/editor/ui/dialogs/content/EdDialogCommon.js +++ b/mozilla/editor/ui/dialogs/content/EdDialogCommon.js @@ -63,6 +63,7 @@ function StringExists(string) function ClearList(list) { + list.selectedIndex = -1; for( i = (list.length-1); i >= 0; i-- ) { list.remove(i); } @@ -99,8 +100,14 @@ function ReplaceStringInList(list, index, string) } } +function AppendStringToListByID(list, stringID) +{ + AppendStringToList(list, editorShell.GetString(stringID)); +} + function AppendStringToList(list, string) { + dump("**** Append String = "+string+"\n"); // THIS DOESN'T WORK! Result is a XULElement -- namespace problem //optionNode1 = document.createElement("option"); @@ -117,6 +124,11 @@ function AppendStringToList(list, string) } } +/* + It would be better to add method to Select object, but what is its name? + SELECT and HTMLSELECT don't work! +*/ + // "value" may be a number or string type function ValidateNumberString(value, minValue, maxValue) @@ -133,7 +145,7 @@ function ValidateNumberString(value, minValue, maxValue) return number + ""; } } - message = GetString("ValidateNumber1")+number+GetString("ValidateNumber2")+" "+minValue+" "+GetString("ValidateNumber3")+" "+maxValue; + message = editorShell.GetString("ValidateNumber1")+number+editorShell.GetString("ValidateNumber2")+" "+minValue+" "+editorShell.GetString("ValidateNumber3")+" "+maxValue; ShowInputErrorMessage(message); // Return an empty string to indicate error @@ -143,7 +155,8 @@ function ValidateNumberString(value, minValue, maxValue) function ShowInputErrorMessage(message) { - window.openDialog("chrome://editor/content/EdMessage.xul", "MsgDlg", "chrome,close,titlebar,modal", "", message, "Input Error"); + dump("ShowInputErrorMessage:"+message+"[end]\n"); + window.openDialog("chrome://editor/content/EdMessage.xul", "_blank", "chrome,close,titlebar,modal", "", message, "Input Error"); } function GetString(name) @@ -174,12 +187,9 @@ String.prototype.trimString = function() { return this.replace(/(^\s+)|(\s+$)/g, '') } -function IsWhitespace(character) +function IsWhitespace(string) { - var result = character.match(/\s/); - if (result == null) - return false; - return true; + return /^\s/.test(string); } function TruncateStringAtWordEnd(string, maxLength, addEllipses) diff --git a/mozilla/editor/ui/dialogs/content/EdHLineProps.js b/mozilla/editor/ui/dialogs/content/EdHLineProps.js index 08d6a8ec452..c7274521f66 100644 --- a/mozilla/editor/ui/dialogs/content/EdHLineProps.js +++ b/mozilla/editor/ui/dialogs/content/EdHLineProps.js @@ -194,12 +194,11 @@ function ValidateData() function onOK() { - // Since we only edit existing HLines, - // ValidateData will set the new attributes - // so there's nothing else to do - var res = ValidateData(); - // Copy attributes from the globalElement to the document element - if (res) + if (ValidateData()) + { + // Copy attributes from the globalElement to the document element editorShell.CloneAttributes(hLineElement, globalElement); - return (ValidateData(true)); + return true; + } + return false; } diff --git a/mozilla/editor/ui/dialogs/content/EdHLineProps.xul b/mozilla/editor/ui/dialogs/content/EdHLineProps.xul index 83e8151f3b7..ccaad94d7ca 100644 --- a/mozilla/editor/ui/dialogs/content/EdHLineProps.xul +++ b/mozilla/editor/ui/dialogs/content/EdHLineProps.xul @@ -68,7 +68,6 @@ onkeypress="forceInteger('width')" /> - @@ -86,9 +84,9 @@
&alignmentFieldset.label; - - - + + +
diff --git a/mozilla/editor/ui/dialogs/content/EdListProps.js b/mozilla/editor/ui/dialogs/content/EdListProps.js index 30b516e54c7..ba57ee75575 100644 --- a/mozilla/editor/ui/dialogs/content/EdListProps.js +++ b/mozilla/editor/ui/dialogs/content/EdListProps.js @@ -24,6 +24,14 @@ //Cancel() is in EdDialogCommon.js var insertNew = true; var tagname = "TAG NAME" +var ListStyleList; +var BulletStyleList; +var BulletStyleLabel; +var StartingNumberInput; +var StartingNumberLabel; +var BulletStyleIndex = 0; +var NumberStyleIndex = 0; +var ListStyle = ""; // dialog initialization code function Startup() @@ -33,46 +41,131 @@ function Startup() doSetOKCancel(onOK, null); - // Create dialog object to store controls for easy access - dialog = new Object; - // GET EACH CONTROL -- E.G.: - //dialog.editBox = document.getElementById("editBox"); + ListStyleList = document.getElementById("ListStyle"); + BulletStyleList = document.getElementById("BulletStyle"); + BulletStyleLabel = document.getElementById("BulletStyleLabel"); + StartingNumberInput = document.getElementById("StartingNumber"); + StartingNumberLabel = document.getElementById("StartingNumberLabel"); - initDialog(); - - // SET FOCUS TO FIRST CONTROL - //dialog.editBox.focus(); + InitDialog(); + ListStyleList.focus(); } -function InitDialog() { - // Get a single selected element of the desired type - element = editorShell.GetSelectedElement(tagName); - - if (element) { - // We found an element and don't need to insert one - insertNew = false; - dump("Found existing image\n"); - } else { - insertNew = true; - // We don't have an element selected, - // so create one with default attributes - dump("Element not selected - calling createElementWithDefaults\n"); - element = appCore.createElementWithDefaults(tagName); - } - +function InitDialog() +{ + //TODO: Get the current list style and set in ListStyle variable + ListStyle = "ul"; + BuildBulletStyleList(); +/* if(!element) { dump("Failed to get selected element or create a new one!\n"); window.close(); } +*/ +} + +function BuildBulletStyleList() +{ + // Put methods on the object if I can figure out its name! + // (SELECT and HTMLSelect don't work!) + //BulletStyleList.clear(); + + ClearList(BulletStyleList); + var label = ""; + var selectedIndex = -1; + + if (ListStyle == "ul") + { + BulletStyleList.removeAttribute("disabled"); + BulletStyleLabel.removeAttribute("disabled"); + StartingNumberInput.setAttribute("disabled", "true"); + StartingNumberLabel.setAttribute("disabled", "true"); + label = GetString("BulletStyle"); + + AppendStringToListByID(BulletStyleList,"SolidCircle"); + AppendStringToListByID(BulletStyleList,"OpenCircle"); + AppendStringToListByID(BulletStyleList,"OpenSquare"); + + BulletStyleList.selectedIndex = BulletStyleIndex; + ListStyleList.selectedIndex = 1; + } else if (ListStyle == "ol") + { + BulletStyleList.removeAttribute("disabled"); + BulletStyleLabel.removeAttribute("disabled"); + StartingNumberInput.removeAttribute("disabled"); + StartingNumberLabel.removeAttribute("disabled"); + label = GetString("NumberStyle"); + + AppendStringToListByID(BulletStyleList,"Style_1"); + AppendStringToListByID(BulletStyleList,"Style_I"); + AppendStringToListByID(BulletStyleList,"Style_i"); + AppendStringToListByID(BulletStyleList,"Style_A"); + AppendStringToListByID(BulletStyleList,"Style_a"); + + BulletStyleList.selectedIndex = NumberStyleIndex; + ListStyleList.selectedIndex = 2; + } else { + BulletStyleList.setAttribute("disabled", "true"); + BulletStyleLabel.setAttribute("disabled", "true"); + StartingNumberInput.setAttribute("disabled", "true"); + StartingNumberLabel.setAttribute("disabled", "true"); + + if (ListStyle == "dl") + ListStyleList.selectedIndex = 3; + else + ListStyleList.selectedIndex = 0; + } + + if (label) + { + if (BulletStyleLabel.hasChildNodes()) + BulletStyleLabel.removeChild(BulletStyleLabel.firstChild); + + var textNode = document.createTextNode(label); + BulletStyleLabel.appendChild(textNode); + } +} + +function SelectListStyle() +{ + switch (ListStyleList.selectedIndex) + { + case 1: + ListStyle = "ul"; + break; + case 2: + ListStyle = "ol"; + break; + case 3: + ListStyle = "dl"; + break; + default: + ListStyle = ""; + } + BuildBulletStyleList(); +} + +// Save the selected index +function SelectBulleStyle() +{ + if (ListStyle == "ul") + BulletStyleIndex = BulletStyleList.selectedIndex; + else if (ListStyle == "ol") + NumberStyleIndex = BulletStyleList.selectedIndex; +} + +function ValidateData() +{ + return true; } function onOK() { -// Set attribute example: -// imageElement.setAttribute("src",dialog.srcInput.value); - if (insertNew) { - editorShell.InsertElement(element, false); + if (ValidateData()) + { + // Set the list attributes + return true; } - return true; // do close the window + return false; } diff --git a/mozilla/editor/ui/dialogs/content/EdListProps.xul b/mozilla/editor/ui/dialogs/content/EdListProps.xul index 8bc0e9f334f..66f43996c75 100644 --- a/mozilla/editor/ui/dialogs/content/EdListProps.xul +++ b/mozilla/editor/ui/dialogs/content/EdListProps.xul @@ -28,8 +28,7 @@ - - + - - +