From 1c0cd514aadeec9e01a2256f6c936e1a35e5a961 Mon Sep 17 00:00:00 2001 From: "glazman%netscape.com" Date: Tue, 13 Aug 2002 10:07:16 +0000 Subject: [PATCH] ui.* prefs were not accepting #rrggbb colors; sr=161290, r=brade, sr=bzbarsky --- widget/src/xpwidgets/nsXPLookAndFeel.cpp | 19 +++++++++++++++++-- 1 file changed, 17 insertions(+), 2 deletions(-) diff --git a/widget/src/xpwidgets/nsXPLookAndFeel.cpp b/widget/src/xpwidgets/nsXPLookAndFeel.cpp index 70c05bbacf5f..ccd38620537f 100644 --- a/widget/src/xpwidgets/nsXPLookAndFeel.cpp +++ b/widget/src/xpwidgets/nsXPLookAndFeel.cpp @@ -243,7 +243,14 @@ static int PR_CALLBACK colorPrefChanged (const char *newpref, void *data) rv = prefService->CopyCharPref(newpref, getter_Copies(colorStr)); if (NS_SUCCEEDED(rv) && colorStr[0]) { nscolor thecolor; - if (NS_SUCCEEDED(NS_ColorNameToRGB(NS_ConvertASCIItoUCS2(colorStr), + if (colorStr[0] == '#') { + if (NS_SUCCEEDED(NS_HexToRGB(NS_ConvertASCIItoUCS2(Substring(colorStr, 1, colorStr.Length() - 1)), + &thecolor))) { + PRInt32 id = NS_PTR_TO_INT32(data); + CACHE_COLOR(id, thecolor); + } + } + else if (NS_SUCCEEDED(NS_ColorNameToRGB(NS_ConvertASCIItoUCS2(colorStr), &thecolor))) { PRInt32 id = NS_PTR_TO_INT32(data); CACHE_COLOR(id, thecolor); @@ -294,7 +301,15 @@ nsXPLookAndFeel::InitColorFromPref(PRInt32 i, nsIPref* aPrefService) { nsAutoString colorNSStr; colorNSStr.AssignWithConversion(colorStr); nscolor thecolor; - if (NS_SUCCEEDED(NS_ColorNameToRGB(colorNSStr, &thecolor))) + if (colorNSStr[0] == '#') { + nsAutoString hexString; + colorNSStr.Right(hexString, colorNSStr.Length() - 1); + if (NS_SUCCEEDED(NS_HexToRGB(hexString, &thecolor))) { + CACHE_COLOR(i, thecolor); + PL_strfree(colorStr); + } + } + else if (NS_SUCCEEDED(NS_ColorNameToRGB(colorNSStr, &thecolor))) { CACHE_COLOR(i, thecolor); PL_strfree(colorStr);