A better fix for 49953 so mail composer doesn't have to unregister the pref command. r=duccaroz. Better initialization for default text and background color and related fixes to Composer color prefs relating to 47704. r=sfraser

This commit is contained in:
cmanske%netscape.com 2000-08-24 00:28:20 +00:00
Родитель ed15b7fd09
Коммит ad53c5a9b1
4 изменённых файлов: 83 добавлений и 72 удалений

Просмотреть файл

@ -44,7 +44,6 @@ function SetupHTMLEditorCommands()
gHTMLEditorCommandManager.registerCommand("cmd_spelling", nsSpellingCommand); gHTMLEditorCommandManager.registerCommand("cmd_spelling", nsSpellingCommand);
gHTMLEditorCommandManager.registerCommand("cmd_insertChars", nsInsertCharsCommand); gHTMLEditorCommandManager.registerCommand("cmd_insertChars", nsInsertCharsCommand);
gHTMLEditorCommandManager.registerCommand("cmd_preferences", nsPreferencesCommand);
gHTMLEditorCommandManager.registerCommand("cmd_listProperties", nsListPropertiesCommand); gHTMLEditorCommandManager.registerCommand("cmd_listProperties", nsListPropertiesCommand);
gHTMLEditorCommandManager.registerCommand("cmd_pageProperties", nsPagePropertiesCommand); gHTMLEditorCommandManager.registerCommand("cmd_pageProperties", nsPagePropertiesCommand);
@ -144,6 +143,7 @@ function SetupComposerWindowCommands()
commandManager.registerCommand("cmd_preview", nsPreviewCommand); commandManager.registerCommand("cmd_preview", nsPreviewCommand);
commandManager.registerCommand("cmd_quit", nsQuitCommand); commandManager.registerCommand("cmd_quit", nsQuitCommand);
commandManager.registerCommand("cmd_close", nsCloseCommand); commandManager.registerCommand("cmd_close", nsCloseCommand);
commandManager.registerCommand("cmd_preferences", nsPreferencesCommand);
// Edit Mode commands // Edit Mode commands
commandManager.registerCommand("cmd_NormalMode", nsNormalModeCommand); commandManager.registerCommand("cmd_NormalMode", nsNormalModeCommand);
@ -311,10 +311,10 @@ var nsSaveAsCharsetCommand =
window.ok = false; window.ok = false;
if (window.openDialog("chrome://editor/content/EditorSaveAsCharset.xul","_blank", "chrome,close,titlebar,modal")) if (window.openDialog("chrome://editor/content/EditorSaveAsCharset.xul","_blank", "chrome,close,titlebar,modal"))
{ {
if( window.ok ) window.ok = window.editorShell.saveDocument(true, false);
return window.editorShell.saveDocument(true, false);
} }
return false; window._content.focus();
return window.ok;
} }
}; };
@ -432,6 +432,7 @@ var nsOpenRemoteCommand =
and loading into existing browser option is removed and loading into existing browser option is removed
*/ */
window.openDialog( "chrome://navigator/content/openLocation.xul", "_blank", "chrome,modal", 0); window.openDialog( "chrome://navigator/content/openLocation.xul", "_blank", "chrome,modal", 0);
window._content.focus();
} }
}; };
@ -562,6 +563,7 @@ var nsSpellingCommand =
} }
catch(ex) { catch(ex) {
dump("*** Exception error: SpellChecker Dialog Closing\n"); dump("*** Exception error: SpellChecker Dialog Closing\n");
window._content.focus();
return; return;
} }
} }
@ -580,6 +582,7 @@ var nsImageCommand =
doCommand: function(aCommand) doCommand: function(aCommand)
{ {
window.openDialog("chrome://editor/content/EdImageProps.xul","_blank", "chrome,close,titlebar,modal"); window.openDialog("chrome://editor/content/EdImageProps.xul","_blank", "chrome,close,titlebar,modal");
window._content.focus();
} }
}; };
@ -602,6 +605,7 @@ var nsHLineCommand =
if (hLine) { if (hLine) {
// We only open the dialog for an existing HRule // We only open the dialog for an existing HRule
window.openDialog("chrome://editor/content/EdHLineProps.xul", "_blank", "chrome,close,titlebar,modal"); window.openDialog("chrome://editor/content/EdHLineProps.xul", "_blank", "chrome,close,titlebar,modal");
window._content.focus();
} else { } else {
hLine = window.editorShell.CreateElementWithDefaults(tagName); hLine = window.editorShell.CreateElementWithDefaults(tagName);
@ -666,6 +670,7 @@ var nsLinkCommand =
doCommand: function(aCommand) doCommand: function(aCommand)
{ {
window.openDialog("chrome://editor/content/EdLinkProps.xul","_blank", "chrome,close,titlebar,modal"); window.openDialog("chrome://editor/content/EdLinkProps.xul","_blank", "chrome,close,titlebar,modal");
window._content.focus();
} }
}; };
@ -679,6 +684,7 @@ var nsAnchorCommand =
doCommand: function(aCommand) doCommand: function(aCommand)
{ {
window.openDialog("chrome://editor/content/EdNamedAnchorProps.xul", "_blank", "chrome,close,titlebar,modal", ""); window.openDialog("chrome://editor/content/EdNamedAnchorProps.xul", "_blank", "chrome,close,titlebar,modal", "");
window._content.focus();
} }
}; };
@ -692,6 +698,7 @@ var nsInsertHTMLCommand =
doCommand: function(aCommand) doCommand: function(aCommand)
{ {
window.openDialog("chrome://editor/content/EdInsSrc.xul","_blank", "chrome,close,titlebar,modal,resizable", ""); window.openDialog("chrome://editor/content/EdInsSrc.xul","_blank", "chrome,close,titlebar,modal,resizable", "");
window._content.focus();
} }
}; };
@ -744,6 +751,7 @@ var nsListPropertiesCommand =
doCommand: function(aCommand) doCommand: function(aCommand)
{ {
window.openDialog("chrome://editor/content/EdListProps.xul","_blank", "chrome,close,titlebar,modal"); window.openDialog("chrome://editor/content/EdListProps.xul","_blank", "chrome,close,titlebar,modal");
window._content.focus();
} }
}; };
@ -822,7 +830,10 @@ var nsObjectPropertiesCommand =
function doAdvancedProperties(element) function doAdvancedProperties(element)
{ {
if (element) if (element)
{
window.openDialog("chrome://editor/content/EdAdvancedEdit.xul", "_blank", "chrome,close,titlebar,modal,resizable=yes", "", element); window.openDialog("chrome://editor/content/EdAdvancedEdit.xul", "_blank", "chrome,close,titlebar,modal,resizable=yes", "", element);
window._content.focus();
}
} }
var nsAdvancedPropertiesCommand = var nsAdvancedPropertiesCommand =
@ -849,6 +860,7 @@ var nsColorPropertiesCommand =
doCommand: function(aCommand) doCommand: function(aCommand)
{ {
window.openDialog("chrome://editor/content/EdColorProps.xul","_blank", "chrome,close,titlebar,modal", ""); window.openDialog("chrome://editor/content/EdColorProps.xul","_blank", "chrome,close,titlebar,modal", "");
window._content.focus();
} }
}; };

Просмотреть файл

@ -178,6 +178,9 @@ function EditorStartup(editorType, editorElement)
// add a listener to be called when document is really done loading // add a listener to be called when document is really done loading
editorShell.RegisterDocumentStateListener( DocumentStateListener ); editorShell.RegisterDocumentStateListener( DocumentStateListener );
// set up our global prefs object
GetPrefsService();
// Startup also used by other editor users, such as Message Composer // Startup also used by other editor users, such as Message Composer
EditorSharedStartup(); EditorSharedStartup();
@ -186,9 +189,6 @@ function EditorStartup(editorType, editorElement)
// such as file-related commands, HTML Source editing, Edit Modes... // such as file-related commands, HTML Source editing, Edit Modes...
SetupComposerWindowCommands(); SetupComposerWindowCommands();
// set up our global prefs object
GetPrefsService();
// Get url for editor content and load it. // Get url for editor content and load it.
// the editor gets instantiated by the editor shell when the URL has finished loading. // the editor gets instantiated by the editor shell when the URL has finished loading.
var url = document.getElementById("args").getAttribute("value"); var url = document.getElementById("args").getAttribute("value");
@ -231,6 +231,43 @@ function EditorSharedStartup()
// hide UI that we don't have components for // hide UI that we don't have components for
RemoveInapplicableUIElements(); RemoveInapplicableUIElements();
// Use global prefs if exists, else get service for other editor users
var prefs = gPrefs ? gPrefs : GetPrefsService();
// If not set before, set text and background colors from browser prefs
if (gDefaultTextColor == "" || gDefaultBackgroundColor == "")
{
var useWinColors = false;
if (gIsWindows)
{
// What a pain! In Windows, there's a pref to use system colors
// instead of pref colors
try { useWinColors = prefs.GetBoolPref("browser.display.wfe.use_windows_colors"); } catch (e) {}
// dump("Using Windows colors = "+useWinColors+"\n");
}
if (useWinColors)
{
// TODO: Get system text and windows colors HOW!
// Alternative: Can we get the actual text and background colors used by layout?
}
else
{
if (gDefaultTextColor == "")
try { gDefaultTextColor = prefs.CopyCharPref("browser.display.foreground_color"); } catch (e) {}
if (gDefaultBackgroundColor == "")
try { gDefaultBackgroundColor = prefs.CopyCharPref("browser.display.background_color"); } catch (e) {}
}
// Last resort is to assume black for text, white for background
if (gDefaultTextColor == "")
gDefaultTextColor = "#000000";
if (gDefaultBackgroundColor == "")
gDefaultBackgroundColor = "#FFFFFF";
}
dump(" *** EditorSharedStartup: gDefaultTextColor="+gDefaultTextColor+", gDefaultBackgroundColor="+gDefaultBackgroundColor+"\n");
} }
function _EditorNotImplemented() function _EditorNotImplemented()
@ -307,6 +344,8 @@ function editorSendPage()
} }
else if (CheckAndSaveDocument(GetString("SendPageReason"))) else if (CheckAndSaveDocument(GetString("SendPageReason")))
editorSendPage(); editorSendPage();
window._content.focus();
} }
/* /*
@ -421,7 +460,7 @@ function EditorNewPlaintext()
function EditorCanClose() function EditorCanClose()
{ {
// Returns FALSE only if user cancels save action // Returns FALSE only if user cancels save action
dump("Calling EditorCanClose\n"); //dump("Calling EditorCanClose\n");
var canClose = CheckAndSaveDocument(GetString("BeforeClosing")); var canClose = CheckAndSaveDocument(GetString("BeforeClosing"));
@ -473,7 +512,6 @@ function EditorSetDocumentCharacterSet(aCharset)
if((! editorShell.documentModified) && if((! editorShell.documentModified) &&
editorShell.editorDocument.location != "about:blank") editorShell.editorDocument.location != "about:blank")
{ {
dump(aCharset);
editorShell.LoadUrl(editorShell.editorDocument.location); editorShell.LoadUrl(editorShell.editorDocument.location);
} }
} }
@ -618,7 +656,6 @@ function EditorSetFontSize(size)
{ {
editorShell.RemoveTextProperty("font", "size"); editorShell.RemoveTextProperty("font", "size");
} else { } else {
dump("Setting font size\n");
// Temp: convert from new CSS size strings to old HTML size strings // Temp: convert from new CSS size strings to old HTML size strings
switch (size) switch (size)
{ {
@ -845,7 +882,6 @@ function GetParentTable(element)
// but will accept a parent table cell or link if inside one // but will accept a parent table cell or link if inside one
function GetSelectedElementOrParentCellOrLink() function GetSelectedElementOrParentCellOrLink()
{ {
//dump("GetSelectedElementOrParentCell\n");
var element = editorShell.GetSelectedElement(""); var element = editorShell.GetSelectedElement("");
if (!element) if (!element)
element = editorShell.GetElementOrParentByTagName("href",null); element = editorShell.GetElementOrParentByTagName("href",null);
@ -999,7 +1035,6 @@ function SetDisplayMode(mode)
if (gFormatToolbarHidden != "true") if (gFormatToolbarHidden != "true")
{ {
// dump("Switching back to visible toolbar. gFormatToolbarHidden = "+gFormatToolbarHidden+"\n");
gFormatToolbar.setAttribute("hidden", gFormatToolbarHidden); gFormatToolbar.setAttribute("hidden", gFormatToolbarHidden);
} }
@ -1061,11 +1096,7 @@ function EditorToggleParagraphMarks()
try { try {
editorShell.DisplayParagraphMarks(checked == "true"); editorShell.DisplayParagraphMarks(checked == "true");
} }
catch(e) catch(e) { return; }
{
dump("Failed to load style sheet for paragraph marks\n");
return;
}
} }
} }
@ -1261,6 +1292,8 @@ function getUnicharPref(aPrefName, aDefVal)
function EditorInitFormatMenu() function EditorInitFormatMenu()
{ {
InitObjectPropertiesMenuitem("objectProperties"); InitObjectPropertiesMenuitem("objectProperties");
// Change text on the "Remove styles" and "Remove links"
// for better wording when
} }
function InitObjectPropertiesMenuitem(id) function InitObjectPropertiesMenuitem(id)
@ -1311,7 +1344,6 @@ function InitObjectPropertiesMenuitem(id)
} }
menuItem.setAttribute("value", menuStr); menuItem.setAttribute("value", menuStr);
menuItem.setAttribute("accesskey",GetString("ObjectPropertiesAccessKey")); menuItem.setAttribute("accesskey",GetString("ObjectPropertiesAccessKey"));
//dump("**** Accesskey for Properties menuitem="+menuItem.getAttribute("accesskey"));
} }
} }
@ -1319,7 +1351,6 @@ function InitParagraphMenu()
{ {
var mixedObj = new Object(); var mixedObj = new Object();
var state = editorShell.GetParagraphState(mixedObj); var state = editorShell.GetParagraphState(mixedObj);
//dump("InitParagraphMenu: state="+state+"\n");
var IDSuffix; var IDSuffix;
// PROBLEM: When we get blockquote, it masks other styles contained by it // PROBLEM: When we get blockquote, it masks other styles contained by it
@ -1338,7 +1369,6 @@ function InitListMenu()
{ {
var mixedObj = new Object(); var mixedObj = new Object();
var state = editorShell.GetListState(mixedObj); var state = editorShell.GetListState(mixedObj);
//dump("InitListMenu: state="+state+"\n");
var IDSuffix = "noList"; var IDSuffix = "noList";
if (state.length > 0) if (state.length > 0)
@ -1469,14 +1499,8 @@ function EditorSetDefaultPrefs()
var use_custom_colors = false; var use_custom_colors = false;
try { try {
use_custom_colors = gPrefs.GetBoolPref("editor.use_custom_colors"); use_custom_colors = gPrefs.GetBoolPref("editor.use_custom_colors");
dump("pref use_custom_colors:" + use_custom_colors + "\n");
} }
catch (ex) { catch (ex) {}
dump("problem getting use_custom_colors as bool, hmmm, still confused about its identity?!\n");
}
// We store these for access by toolbar color swatches
gDefaultTextColor = gDefaultBackgroundColor = "";
if ( use_custom_colors ) if ( use_custom_colors )
{ {
@ -1484,62 +1508,37 @@ function EditorSetDefaultPrefs()
var bodyelement = GetBodyElement(); var bodyelement = GetBodyElement();
// try to get the default color values. ignore them if we don't have them. // try to get the default color values. ignore them if we don't have them.
var link_color = active_link_color = followed_link_color = ""; var text_color = link_color = active_link_color = followed_link_color = background_color = "";
try { gDefaultTextColor = gPrefs.CopyCharPref("editor.text_color"); } catch (e) {} try { text_color = gPrefs.CopyCharPref("editor.text_color"); } catch (e) {}
try { link_color = gPrefs.CopyCharPref("editor.link_color"); } catch (e) {} try { link_color = gPrefs.CopyCharPref("editor.link_color"); } catch (e) {}
try { active_link_color = gPrefs.CopyCharPref("editor.active_link_color"); } catch (e) {} try { active_link_color = gPrefs.CopyCharPref("editor.active_link_color"); } catch (e) {}
try { followed_link_color = gPrefs.CopyCharPref("editor.followed_link_color"); } catch (e) {} try { followed_link_color = gPrefs.CopyCharPref("editor.followed_link_color"); } catch (e) {}
try { gDefaultBackgroundColor = gPrefs.CopyCharPref("editor.background_color"); } catch(e) {} try { background_color = gPrefs.CopyCharPref("editor.background_color"); } catch(e) {}
// add the color attributes to the body tag. // add the color attributes to the body tag.
// FIXME: use the check boxes for each color somehow.. // and use them for the default text and background colors if not empty
if (gDefaultTextColor != "") if (text_color != "")
AddAttrToElem(domdoc, "text", gDefaultTextColor, bodyelement); {
AddAttrToElem(domdoc, "text", text_color, bodyelement);
gDefaultTextColor = text_color;
}
if (link_color != "") if (link_color != "")
AddAttrToElem(domdoc, "link", link_color, bodyelement); AddAttrToElem(domdoc, "link", link_color, bodyelement);
if (active_link_color != "") if (active_link_color != "")
AddAttrToElem(domdoc, "alink", active_link_color, bodyelement); AddAttrToElem(domdoc, "alink", active_link_color, bodyelement);
if (followed_link_color != "") if (followed_link_color != "")
AddAttrToElem(domdoc, "vlink", followed_link_color, bodyelement); AddAttrToElem(domdoc, "vlink", followed_link_color, bodyelement);
if (gDefaultBackgroundColor != "")
AddAttrToElem(domdoc, "bgcolor", gDefaultBackgroundColor, bodyelement); if (background_color != "")
{
AddAttrToElem(domdoc, "bgcolor", background_color, bodyelement);
gDefaultBackgroundColor = background_color
}
dump(" *** SetDefaultPrefs: gDefaultTextColor="+gDefaultTextColor+", gDefaultBackgroundColor="+gDefaultBackgroundColor+"\n");
} }
dump("* gDefaultTextColor="+gDefaultTextColor+", gDefaultBackgroundColor="+gDefaultBackgroundColor+", IsWindows="+gIsWindows+"\n");
// If not found above, set text and background colors from browser prefs
if (gDefaultTextColor == "" || gDefaultBackgroundColor == "")
{
var useWinColors = false;
if (gIsWindows)
{
// What a pain! In Windows, there's a pref to use system colors
// instead of pref colors
try { useWinColors = gPrefs.GetBoolPref("browser.display.wfe.use_windows_colors"); } catch (e) {}
dump("Using Windows colors = "+useWinColors+"\n");
}
if (useWinColors)
{
// TODO: Get system text and windows colors HOW!
// Alternative: Can we get the actual text and background colors used by layout?
}
else
{
if (gDefaultTextColor == "")
try { gDefaultTextColor = gPrefs.CopyCharPref("browser.display.foreground_color"); } catch (e) {}
if (gDefaultBackgroundColor == "")
try { gDefaultBackgroundColor = gPrefs.CopyCharPref("browser.display.background_color"); } catch (e) {}
}
// Last resort is to assume black for text, white for background
if (gDefaultTextColor == "")
gDefaultTextColor = "#000000";
if (gDefaultBackgroundColor == "")
gDefaultBackgroundColor = "#FFFFFF";
}
// auto-save??? // auto-save???
} }

Просмотреть файл

@ -69,7 +69,7 @@ function useNavigatorColors()
} }
document.getElementById( "aLinkLabel" ).setAttribute( "disabled", "true" ); document.getElementById( "aLinkLabel" ).setAttribute( "disabled", "true" );
document.getElementById( "aLinkMenu" ).setAttribute( "disabled", "true" ); document.getElementById( "aLinkMenu" ).setAttribute( "disabled", "true" );
document.getElementById( "useDefaults" ).setAttribute( "disabled", "true" ); document.getElementById( "useCustomColors" ).setAttribute( "disabled", "true" );
getColorFromWellAndSetValue("textMenu", "normaltext", false); getColorFromWellAndSetValue("textMenu", "normaltext", false);
getColorFromWellAndSetValue("linkMenu", "linktext", false); getColorFromWellAndSetValue("linkMenu", "linktext", false);
getColorFromWellAndSetValue("aLinkMenu", "activelinktext", false); getColorFromWellAndSetValue("aLinkMenu", "activelinktext", false);
@ -90,7 +90,7 @@ function useCustomColors()
} }
document.getElementById( "aLinkLabel" ).removeAttribute( "disabled" ); document.getElementById( "aLinkLabel" ).removeAttribute( "disabled" );
document.getElementById( "aLinkMenu" ).removeAttribute( "disabled" ); document.getElementById( "aLinkMenu" ).removeAttribute( "disabled" );
document.getElementById( "useDefaults" ).removeAttribute( "disabled" ); document.getElementById( "useCustomColors" ).removeAttribute( "disabled" );
} }
function useDefaultColors() function useDefaultColors()

Просмотреть файл

@ -57,7 +57,7 @@
<box> <box>
<box orient="vertical"> <box orient="vertical">
<radiogroup id="useCustomColors" orient="vertical" autostretch="never" <radiogroup id="useCustomColors" orient="vertical" autostretch="never"
pref="true" preftype="int" prefstring="editor.use_custom_default_colors" pref="true" preftype="bool" prefstring="editor.use_custom_colors"
prefattribute="data"> prefattribute="data">
<radio group="useCustomColors" data="0" value="&useNavigator.label;" accesskey="&useNavigator.accesskey;" oncommand="useNavigatorColors();"/> <radio group="useCustomColors" data="0" value="&useNavigator.label;" accesskey="&useNavigator.accesskey;" oncommand="useNavigatorColors();"/>
<radio group="useCustomColors" data="1" value="&useCustomColors.label;" accesskey="&useCustomColors.accesskey;" oncommand="useCustomColors()"/> <radio group="useCustomColors" data="1" value="&useCustomColors.label;" accesskey="&useCustomColors.accesskey;" oncommand="useCustomColors()"/>