From e3f61bf44f3e708956e047a6f771363a842b1d88 Mon Sep 17 00:00:00 2001 From: "hyatt%netscape.com" Date: Fri, 4 Jan 2002 00:28:01 +0000 Subject: [PATCH] Checking in 115757, enabling of Windows XP Theme Support under Classic skin.,r=bryner,sr=hewitt --- content/base/src/nsRuleNode.cpp | 18 +- content/html/style/src/nsCSSParser.cpp | 31 --- content/shared/public/nsCSSKeywordList.h | 20 +- content/shared/src/nsCSSProps.cpp | 20 +- content/shared/src/nsStyleStruct.cpp | 6 +- content/xbl/src/nsXBLService.cpp | 10 +- content/xbl/src/nsXBLService.h | 1 - gfx/public/nsITheme.h | 18 +- gfx/public/nsThemeConstants.h | 28 +-- gfx/src/windows/makefile.win | 4 +- gfx/src/windows/nsDeviceContextWin.cpp | 10 +- gfx/src/windows/nsDeviceContextWin.h | 3 +- gfx/src/windows/nsNativeThemeWin.cpp | 217 +++++------------- gfx/src/windows/nsNativeThemeWin.h | 19 +- layout/style/nsCSSKeywordList.h | 20 +- layout/style/nsCSSParser.cpp | 31 --- layout/style/nsCSSProps.cpp | 20 +- layout/style/nsRuleNode.cpp | 18 +- layout/style/nsStyleStruct.cpp | 6 +- layout/xul/base/src/nsBox.cpp | 4 +- layout/xul/base/src/nsTextBoxFrame.cpp | 28 +-- themes/classic/global/win/button.css | 2 +- themes/classic/global/win/checkbox.css | 1 + themes/classic/global/win/global.css | 11 +- themes/classic/global/win/scrollbars.css | 19 +- themes/classic/global/win/toolbar.css | 1 + themes/classic/global/win/toolbarbutton.css | 1 + .../resources/content/bindings/general.xml | 9 + .../resources/content/bindings/scrollbar.xml | 10 +- xpfe/global/resources/content/xul.css | 10 + 30 files changed, 217 insertions(+), 379 deletions(-) diff --git a/content/base/src/nsRuleNode.cpp b/content/base/src/nsRuleNode.cpp index c53375483559..023bbcf0da17 100644 --- a/content/base/src/nsRuleNode.cpp +++ b/content/base/src/nsRuleNode.cpp @@ -1833,23 +1833,7 @@ SetFont(nsIPresContext* aPresContext, nsIStyleContext* aContext, if (dc) { // GetSystemFont sets the font face but not necessarily the size aFont->mFont.size = defaultVariableFont.size; - // If our font type is theme, then check for appearance data and - // obtain our font based off our widget type. - if (sysID == eSystemFont_Theme) { - const nsStyleDisplay* display = (const nsStyleDisplay*) - aContext->GetStyleData(eStyleStruct_Display); - if (display->mAppearance) { - // Get our theme. - nsCOMPtr theme; - aPresContext->GetTheme(getter_AddRefs(theme)); - if (theme) { - nsCOMPtr deviceContext; - aPresContext->GetDeviceContext(getter_AddRefs(deviceContext)); - theme->GetWidgetFont(deviceContext, display->mAppearance, &aFont->mFont); - } - } - } - else if (NS_FAILED(dc->GetSystemFont(sysID, &aFont->mFont))) { + if (NS_FAILED(dc->GetSystemFont(sysID, &aFont->mFont))) { aFont->mFont.name = defaultVariableFont.name; } aFont->mSize = aFont->mFont.size; // this becomes our cascading size diff --git a/content/html/style/src/nsCSSParser.cpp b/content/html/style/src/nsCSSParser.cpp index e3ef71a4ca8a..600387f71e8e 100644 --- a/content/html/style/src/nsCSSParser.cpp +++ b/content/html/style/src/nsCSSParser.cpp @@ -3955,19 +3955,6 @@ PRBool CSSParserImpl::ParseAzimuth(PRInt32& aErrorCode, nsCSSValue& aValue) return PR_FALSE; } -static PRBool HasForegroundContent(PRUint8 aAppearance) -{ - return ((aAppearance == NS_THEME_BUTTON) || - (aAppearance == NS_THEME_TOOLBAR_BUTTON) || - (aAppearance == NS_THEME_TOOLBAR_DUAL_BUTTON) || - (aAppearance == NS_THEME_LISTBOX_LISTITEM) || - (aAppearance == NS_THEME_TREEVIEW_TREEITEM) || - (aAppearance == NS_THEME_TREEVIEW_HEADER_CELL) || - (aAppearance == NS_THEME_TAB) || - (aAppearance == NS_THEME_TOOLTIP) || - (aAppearance == NS_THEME_TEXTFIELD)); -} - PRBool CSSParserImpl::ParseAppearance(PRInt32& aErrorCode, nsICSSDeclaration* aDeclaration, PRInt32& aChangeHint) { @@ -3980,24 +3967,6 @@ PRBool CSSParserImpl::ParseAppearance(PRInt32& aErrorCode, nsICSSDeclaration* aD else return PR_FALSE; - if (appearance.GetIntValue() && HasForegroundContent(appearance.GetIntValue())) { - // When an appearance is specified, it can act as a shorthand that - // specifies color and font information as well. - // Add in font information. - PRInt32 index = SearchKeywordTable(eCSSKeyword_theme, nsCSSProps::kFontKTable); - if (index > 0) { - nsCSSValue val(nsCSSProps::kFontKTable[index], eCSSUnit_Enumerated); - AppendValue(aDeclaration, eCSSProperty_font_family, val, aChangeHint); - } - - // Add in color information. - index = SearchKeywordTable(eCSSKeyword_theme, nsCSSProps::kColorKTable); - if (index > 0) { - nsCSSValue val(nsCSSProps::kColorKTable[index], eCSSUnit_Integer); - AppendValue(aDeclaration, eCSSProperty_color, val, aChangeHint); - } - } - return PR_TRUE; } diff --git a/content/shared/public/nsCSSKeywordList.h b/content/shared/public/nsCSSKeywordList.h index f8c48563fbb7..c85971a48bee 100644 --- a/content/shared/public/nsCSSKeywordList.h +++ b/content/shared/public/nsCSSKeywordList.h @@ -421,8 +421,8 @@ CSS_KEY(dualbutton, dualbutton) CSS_KEY(dualbutton-dropdown, dualbutton_dropdown) CSS_KEY(separator, separator) CSS_KEY(statusbar, statusbar) -CSS_KEY(statusbarpane, statusbar_pane) -CSS_KEY(resizerpane, resizer_pane) +CSS_KEY(statusbarpanel, statusbarpanel) +CSS_KEY(resizerpanel, resizerpanel) CSS_KEY(resizer, resizer) CSS_KEY(listbox, listbox) CSS_KEY(listitem, listitem) @@ -441,12 +441,16 @@ CSS_KEY(tooltip, tooltip) CSS_KEY(spinner, spinner) CSS_KEY(spinner-upbutton, spinner_upbutton) CSS_KEY(spinner-downbutton, spinner_downbutton) -CSS_KEY(scrollbarbutton, scrollbarbutton) -CSS_KEY(scrollbartrack, scrollbartrack) -CSS_KEY(scrollbartrackstart, scrollbartrackstart) -CSS_KEY(scrollbartrackend, scrollbartrackend) -CSS_KEY(scrollbarthumb, scrollbarthumb) -CSS_KEY(scrollbargripper, scrollbargripper) +CSS_KEY(scrollbarbutton-up, scrollbarbutton_up) +CSS_KEY(scrollbarbutton-down, scrollbarbutton_down) +CSS_KEY(scrollbarbutton-left, scrollbarbutton_left) +CSS_KEY(scrollbarbutton-right, scrollbarbutton_right) +CSS_KEY(scrollbartrack-horizontal, scrollbartrack_horizontal) +CSS_KEY(scrollbartrack-vertical, scrollbartrack_vertical) +CSS_KEY(scrollbarthumb-horizontal, scrollbarthumb_horizontal) +CSS_KEY(scrollbarthumb-vertical, scrollbarthumb_vertical) +CSS_KEY(scrollbargripper-horizontal, scrollbargripper_horizontal) +CSS_KEY(scrollbargripper-vertical, scrollbargripper_vertical) CSS_KEY(textfield, textfield) CSS_KEY(caret, caret) CSS_KEY(menulist, menulist) diff --git a/content/shared/src/nsCSSProps.cpp b/content/shared/src/nsCSSProps.cpp index a3dd6418dd22..33c59fa373be 100644 --- a/content/shared/src/nsCSSProps.cpp +++ b/content/shared/src/nsCSSProps.cpp @@ -137,8 +137,8 @@ const PRInt32 nsCSSProps::kAppearanceKTable[] = { eCSSKeyword_dualbutton_dropdown, NS_THEME_TOOLBAR_DUAL_BUTTON_DROPDOWN, eCSSKeyword_separator, NS_THEME_TOOLBAR_SEPARATOR, eCSSKeyword_statusbar, NS_THEME_STATUSBAR, - eCSSKeyword_statusbar_pane, NS_THEME_STATUSBAR_PANE, - eCSSKeyword_resizer_pane, NS_THEME_STATUSBAR_RESIZER_PANE, + eCSSKeyword_statusbarpanel, NS_THEME_STATUSBAR_PANEL, + eCSSKeyword_resizerpanel, NS_THEME_STATUSBAR_RESIZER_PANEL, eCSSKeyword_resizer, NS_THEME_RESIZER, eCSSKeyword_listbox, NS_THEME_LISTBOX, eCSSKeyword_listitem, NS_THEME_LISTBOX_LISTITEM, @@ -158,12 +158,16 @@ const PRInt32 nsCSSProps::kAppearanceKTable[] = { eCSSKeyword_spinner_upbutton, NS_THEME_SPINNER_UP_BUTTON, eCSSKeyword_spinner_downbutton, NS_THEME_SPINNER_DOWN_BUTTON, eCSSKeyword_scrollbar, NS_THEME_SCROLLBAR, - eCSSKeyword_scrollbarbutton, NS_THEME_SCROLLBAR_BUTTON, - eCSSKeyword_scrollbartrack, NS_THEME_SCROLLBAR_TRACK, - eCSSKeyword_scrollbartrackstart, NS_THEME_SCROLLBAR_TRACK_START, - eCSSKeyword_scrollbartrackend, NS_THEME_SCROLLBAR_TRACK_END, - eCSSKeyword_scrollbarthumb, NS_THEME_SCROLLBAR_THUMB, - eCSSKeyword_scrollbargripper, NS_THEME_SCROLLBAR_GRIPPER, + eCSSKeyword_scrollbarbutton_up, NS_THEME_SCROLLBAR_BUTTON_UP, + eCSSKeyword_scrollbarbutton_down, NS_THEME_SCROLLBAR_BUTTON_DOWN, + eCSSKeyword_scrollbarbutton_left, NS_THEME_SCROLLBAR_BUTTON_LEFT, + eCSSKeyword_scrollbarbutton_right, NS_THEME_SCROLLBAR_BUTTON_RIGHT, + eCSSKeyword_scrollbartrack_horizontal, NS_THEME_SCROLLBAR_TRACK_HORIZONTAL, + eCSSKeyword_scrollbartrack_vertical, NS_THEME_SCROLLBAR_TRACK_VERTICAL, + eCSSKeyword_scrollbarthumb_horizontal, NS_THEME_SCROLLBAR_THUMB_HORIZONTAL, + eCSSKeyword_scrollbarthumb_vertical, NS_THEME_SCROLLBAR_THUMB_VERTICAL, + eCSSKeyword_scrollbargripper_horizontal, NS_THEME_SCROLLBAR_GRIPPER_HORIZONTAL, + eCSSKeyword_scrollbargripper_vertical, NS_THEME_SCROLLBAR_GRIPPER_VERTICAL, eCSSKeyword_textfield, NS_THEME_TEXTFIELD, eCSSKeyword_caret, NS_THEME_TEXTFIELD_CARET, eCSSKeyword_menulist, NS_THEME_DROPDOWN, diff --git a/content/shared/src/nsStyleStruct.cpp b/content/shared/src/nsStyleStruct.cpp index 6502d4e6d6e8..721e1f0f9f1f 100644 --- a/content/shared/src/nsStyleStruct.cpp +++ b/content/shared/src/nsStyleStruct.cpp @@ -1029,13 +1029,13 @@ PRInt32 nsStyleDisplay::CalcDifference(const nsStyleDisplay& aOther) const if ((mDisplay == aOther.mDisplay) && (mFloats == aOther.mFloats) && - (mOverflow == aOther.mOverflow) && - (mAppearance == aOther.mAppearance)) { + (mOverflow == aOther.mOverflow)) { if ((mBreakType == aOther.mBreakType) && (mBreakBefore == aOther.mBreakBefore) && (mBreakAfter == aOther.mBreakAfter) && (mClipFlags == aOther.mClipFlags) && - (mClip == aOther.mClip)) { + (mClip == aOther.mClip) && + (mAppearance == aOther.mAppearance)) { return NS_STYLE_HINT_NONE; } return NS_STYLE_HINT_REFLOW; diff --git a/content/xbl/src/nsXBLService.cpp b/content/xbl/src/nsXBLService.cpp index 00d29aa702e2..f9dd4b6c8933 100644 --- a/content/xbl/src/nsXBLService.cpp +++ b/content/xbl/src/nsXBLService.cpp @@ -75,6 +75,7 @@ #include "nsIXBLPrototypeBinding.h" #include "nsIXBLDocumentInfo.h" #include "nsXBLAtoms.h" +#include "nsXULAtoms.h" #include "nsIXBLPrototypeHandler.h" @@ -538,7 +539,6 @@ PRUint32 nsXBLService::gClassLRUListLength = 0; PRUint32 nsXBLService::gClassLRUListQuota = 64; nsIAtom* nsXBLService::kEventAtom = nsnull; -nsIAtom* nsXBLService::kScrollbarAtom = nsnull; nsIAtom* nsXBLService::kInputAtom = nsnull; // Enabled by default. Must be over-ridden to disable @@ -565,7 +565,6 @@ nsXBLService::nsXBLService(void) // Create our atoms kEventAtom = NS_NewAtom("event"); - kScrollbarAtom = NS_NewAtom("scrollbar"); kInputAtom = NS_NewAtom("input"); // Find out if the XUL cache is on or off @@ -590,7 +589,6 @@ nsXBLService::~nsXBLService(void) // Release our atoms NS_RELEASE(kEventAtom); - NS_RELEASE(kScrollbarAtom); NS_RELEASE(kInputAtom); // Walk the LRU list removing and deleting the nsXBLJSClasses. @@ -1113,7 +1111,8 @@ nsXBLService::LoadBindingDocumentInfo(nsIContent* aBoundElement, nsIDocument* aB nsCOMPtr tagName; if (aBoundElement) aBoundElement->GetTag(*getter_AddRefs(tagName)); - if (!info && bindingManager && (tagName.get() != kScrollbarAtom) && (tagName.get() != kInputAtom) + if (!info && bindingManager && (tagName.get() != nsXULAtoms::scrollbar) && + (tagName.get() != nsXULAtoms::thumb) && (tagName.get() != kInputAtom) && !aForceSyncLoad) { // The third line of defense is to investigate whether or not the // document is currently being loaded asynchronously. If so, there's no @@ -1217,7 +1216,8 @@ nsXBLService::FetchBindingDocument(nsIContent* aBoundElement, nsIDocument* aBoun if (aBoundElement) aBoundElement->GetTag(*getter_AddRefs(tagName)); - if (tagName.get() == kScrollbarAtom || IsResourceURI(aURI)) + if (tagName.get() == nsXULAtoms::scrollbar || tagName.get() == nsXULAtoms::thumb || + IsResourceURI(aURI)) aForceSyncLoad = PR_TRUE; nsCOMPtr listener; diff --git a/content/xbl/src/nsXBLService.h b/content/xbl/src/nsXBLService.h index bebf2e423e5b..685dfa0323f8 100644 --- a/content/xbl/src/nsXBLService.h +++ b/content/xbl/src/nsXBLService.h @@ -133,7 +133,6 @@ public: // XBL Atoms static nsIAtom* kEventAtom; - static nsIAtom* kScrollbarAtom; static nsIAtom* kInputAtom; nsFixedSizeAllocator mPool; diff --git a/gfx/public/nsITheme.h b/gfx/public/nsITheme.h index f459c975deb5..37cf577ef186 100644 --- a/gfx/public/nsITheme.h +++ b/gfx/public/nsITheme.h @@ -55,20 +55,10 @@ public: const nsRect& aRect, const nsRect& aClipRect)=0; - NS_IMETHOD GetWidgetPadding(nsIDeviceContext* aContext, - nsIFrame* aFrame, - PRUint8 aWidgetType, - nsMargin* aResult)=0; - - NS_IMETHOD GetWidgetFont(nsIDeviceContext* aContext, - PRUint8 aWidgetType, - nsFont* aFont)=0; - - NS_IMETHOD GetWidgetColor(nsIPresContext* aPresContext, - nsIRenderingContext* aContext, - nsIFrame* aFrame, - PRUint8 aWidgetType, - nscolor* aFont)=0; + NS_IMETHOD GetWidgetBorder(nsIDeviceContext* aContext, + nsIFrame* aFrame, + PRUint8 aWidgetType, + nsMargin* aResult)=0; NS_IMETHOD GetMinimumWidgetSize(nsIRenderingContext* aContext, nsIFrame* aFrame, PRUint8 aWidgetType, diff --git a/gfx/public/nsThemeConstants.h b/gfx/public/nsThemeConstants.h index 08074b2ea218..72f190bed3cb 100644 --- a/gfx/public/nsThemeConstants.h +++ b/gfx/public/nsThemeConstants.h @@ -35,11 +35,11 @@ #define NS_THEME_STATUSBAR 21 // A single pane of a status bar. -#define NS_THEME_STATUSBAR_PANE 21 +#define NS_THEME_STATUSBAR_PANEL 22 // The resizer background area in a status bar // for the resizer widget in the corner of a window. -#define NS_THEME_STATUSBAR_RESIZER_PANE 23 +#define NS_THEME_STATUSBAR_RESIZER_PANEL 23 // The resizer itself. #define NS_THEME_RESIZER 24 @@ -99,28 +99,28 @@ #define NS_THEME_SCROLLBAR 81 // A scrollbar button (up/down/left/right) -#define NS_THEME_SCROLLBAR_BUTTON 82 +#define NS_THEME_SCROLLBAR_BUTTON_UP 82 +#define NS_THEME_SCROLLBAR_BUTTON_DOWN 83 +#define NS_THEME_SCROLLBAR_BUTTON_LEFT 84 +#define NS_THEME_SCROLLBAR_BUTTON_RIGHT 85 // The scrollbar track -#define NS_THEME_SCROLLBAR_TRACK 83 - -// The start of a scrollbar track -#define NS_THEME_SCROLLBAR_TRACK_START 84 - -// The end of a scrollbar track -#define NS_THEME_SCROLLBAR_TRACK_END 85 +#define NS_THEME_SCROLLBAR_TRACK_HORIZONTAL 86 +#define NS_THEME_SCROLLBAR_TRACK_VERTICAL 87 // The scrollbar thumb -#define NS_THEME_SCROLLBAR_THUMB 86 +#define NS_THEME_SCROLLBAR_THUMB_HORIZONTAL 88 +#define NS_THEME_SCROLLBAR_THUMB_VERTICAL 89 // The gripper that goes on the thumb -#define NS_THEME_SCROLLBAR_GRIPPER 87 +#define NS_THEME_SCROLLBAR_GRIPPER_HORIZONTAL 90 +#define NS_THEME_SCROLLBAR_GRIPPER_VERTICAL 91 // A textfield or text area -#define NS_THEME_TEXTFIELD 91 +#define NS_THEME_TEXTFIELD 95 // The caret of a text area -#define NS_THEME_TEXTFIELD_CARET 92 +#define NS_THEME_TEXTFIELD_CARET 96 // A dropdown list. #define NS_THEME_DROPDOWN 101 diff --git a/gfx/src/windows/makefile.win b/gfx/src/windows/makefile.win index 89e03ecf53c5..ca26c4297325 100644 --- a/gfx/src/windows/makefile.win +++ b/gfx/src/windows/makefile.win @@ -98,8 +98,8 @@ WIN_LIBS= \ !if defined(NGLAYOUT_DDRAW) ole32.lib \ !endif - winspool.lib \ - comdlg32.lib + winspool.lib \ + comdlg32.lib LLFLAGS = $(LLFLAGS) include <$(DEPTH)\config\rules.mak> diff --git a/gfx/src/windows/nsDeviceContextWin.cpp b/gfx/src/windows/nsDeviceContextWin.cpp index 4d410540b225..275739cb07e6 100644 --- a/gfx/src/windows/nsDeviceContextWin.cpp +++ b/gfx/src/windows/nsDeviceContextWin.cpp @@ -356,12 +356,16 @@ NS_IMETHODIMP nsDeviceContextWin :: GetScrollBarDimensions(float &aWidth, float } nsresult nsDeviceContextWin::CopyLogFontToNSFont(HDC* aHDC, const LOGFONT* ptrLogFont, - nsFont* aFont) const + nsFont* aFont, PRBool aIsWide) const { PRUnichar name[LF_FACESIZE]; name[0] = 0; - MultiByteToWideChar(CP_ACP, 0, ptrLogFont->lfFaceName, - strlen(ptrLogFont->lfFaceName) + 1, name, sizeof(name)/sizeof(name[0])); + if (aIsWide) + memcpy(name, ptrLogFont->lfFaceName, LF_FACESIZE*2); + else { + MultiByteToWideChar(CP_ACP, 0, ptrLogFont->lfFaceName, + strlen(ptrLogFont->lfFaceName) + 1, name, sizeof(name)/sizeof(name[0])); + } aFont->name = name; // Do Style diff --git a/gfx/src/windows/nsDeviceContextWin.h b/gfx/src/windows/nsDeviceContextWin.h index eeead0b78c6b..bd81ad3c80be 100644 --- a/gfx/src/windows/nsDeviceContextWin.h +++ b/gfx/src/windows/nsDeviceContextWin.h @@ -104,7 +104,8 @@ protected: void ComputeFullAreaUsingScreen ( nsRect* outRect ) ; nsresult GetSysFontInfo(HDC aHDC, nsSystemFontID anID, nsFont* aFont) const; - nsresult CopyLogFontToNSFont(HDC* aHDC, const LOGFONT* ptrLogFont, nsFont* aFont) const; + nsresult CopyLogFontToNSFont(HDC* aHDC, const LOGFONT* ptrLogFont, nsFont* aFont, + PRBool aIsWide = PR_FALSE) const; PRBool mCachedClientRect; PRBool mCachedFullRect; diff --git a/gfx/src/windows/nsNativeThemeWin.cpp b/gfx/src/windows/nsNativeThemeWin.cpp index f312753e5c3c..3c1742d0cf02 100644 --- a/gfx/src/windows/nsNativeThemeWin.cpp +++ b/gfx/src/windows/nsNativeThemeWin.cpp @@ -54,6 +54,7 @@ #include "nsINameSpaceManager.h" #include "nsIPresContext.h" #include "nsILookAndFeel.h" +#include #define THEME_COLOR 204 #define THEME_FONT 210 @@ -137,14 +138,11 @@ nsNativeThemeWin::nsNativeThemeWin() { drawThemeBG = (DrawThemeBackgroundPtr)GetProcAddress(mThemeDLL, "DrawThemeBackground"); getThemeContentRect = (GetThemeContentRectPtr)GetProcAddress(mThemeDLL, "GetThemeBackgroundContentRect"); getThemePartSize = (GetThemePartSizePtr)GetProcAddress(mThemeDLL, "GetThemePartSize"); - getThemeFont = (GetThemeFontPtr)GetProcAddress(mThemeDLL, "GetThemeFont"); getThemeSysFont = (GetThemeSysFontPtr)GetProcAddress(mThemeDLL, "GetThemeSysFont"); - getThemeTextMetrics = (GetThemeTextMetricsPtr)GetProcAddress(mThemeDLL, "GetThemeTextMetrics"); getThemeColor = (GetThemeColorPtr)GetProcAddress(mThemeDLL, "GetThemeColor"); mCheckedAtom = getter_AddRefs(NS_NewAtom("checked")); mDisabledAtom = getter_AddRefs(NS_NewAtom("disabled")); - mSBOrientAtom = getter_AddRefs(NS_NewAtom("sborient")); mSelectedAtom = getter_AddRefs(NS_NewAtom("selected")); mTypeAtom = getter_AddRefs(NS_NewAtom("type")); } @@ -197,15 +195,26 @@ nsNativeThemeWin::GetTheme(PRUint8 aWidgetType) return mTabTheme; } case NS_THEME_SCROLLBAR: - case NS_THEME_SCROLLBAR_TRACK: - case NS_THEME_SCROLLBAR_BUTTON: - case NS_THEME_SCROLLBAR_THUMB: - case NS_THEME_SCROLLBAR_GRIPPER: { + case NS_THEME_SCROLLBAR_TRACK_VERTICAL: + case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL: + case NS_THEME_SCROLLBAR_BUTTON_UP: + case NS_THEME_SCROLLBAR_BUTTON_DOWN: + case NS_THEME_SCROLLBAR_BUTTON_LEFT: + case NS_THEME_SCROLLBAR_BUTTON_RIGHT: + case NS_THEME_SCROLLBAR_THUMB_VERTICAL: + case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL: + case NS_THEME_SCROLLBAR_GRIPPER_VERTICAL: + case NS_THEME_SCROLLBAR_GRIPPER_HORIZONTAL: + { if (!mScrollbarTheme) mScrollbarTheme = openTheme(NULL, L"Scrollbar"); return mScrollbarTheme; } - case NS_THEME_STATUSBAR: { + case NS_THEME_STATUSBAR: + case NS_THEME_STATUSBAR_PANEL: + case NS_THEME_STATUSBAR_RESIZER_PANEL: + case NS_THEME_RESIZER: + { if (!mStatusbarTheme) mStatusbarTheme = openTheme(NULL, L"Status"); return mStatusbarTheme; @@ -369,10 +378,12 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, PRUint8 aWidgetType, return NS_OK; } - case NS_THEME_SCROLLBAR_BUTTON: { + case NS_THEME_SCROLLBAR_BUTTON_UP: + case NS_THEME_SCROLLBAR_BUTTON_DOWN: + case NS_THEME_SCROLLBAR_BUTTON_LEFT: + case NS_THEME_SCROLLBAR_BUTTON_RIGHT: { aPart = SP_BUTTON; - aState = 8; // Assume horizontal by default. - // States are 4 vert up, 4 vert down, 4 horz left, 4 horz right + aState = (aWidgetType - NS_THEME_SCROLLBAR_BUTTON_UP)*4; if (!aFrame) aState += BP_NORMAL; else if (IsDisabled(aFrame)) @@ -386,41 +397,19 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, PRUint8 aWidgetType, else aState += BP_NORMAL; } - - if (aFrame) { - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); - - // Get our parent frame's orientation. If we are a horizontal scrollbar, - // then subtract 8 from the result to get the correct offset. - if (HasAttrValue(content, mSBOrientAtom, "vertical")) - aState -= 8; // We're vertical instead. - - // Are we the start button or end button? If we are the end button, add 4 - // to the result to get the correct offset. - if (HasAttrValue(content, mTypeAtom, "increment")) - aState += 4; - } - return NS_OK; } - case NS_THEME_SCROLLBAR_TRACK: { - aPart = SP_TRACKSTARTHOR; + case NS_THEME_SCROLLBAR_TRACK_HORIZONTAL: + case NS_THEME_SCROLLBAR_TRACK_VERTICAL: { + aPart = (aWidgetType == NS_THEME_SCROLLBAR_TRACK_HORIZONTAL) ? + SP_TRACKSTARTHOR : SP_TRACKSTARTVERT; aState = BP_NORMAL; - if (aFrame) { - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); - - // Get our scrollbar frame's orientation. If we are a vertical scrollbar, - // then add 2 to get the correct val - if (HasAttrValue(content, mSBOrientAtom, "vertical")) - aPart += 2; // We're vertical instead. - } - return NS_OK; } - case NS_THEME_SCROLLBAR_THUMB: { - aPart = SP_THUMBHOR; + case NS_THEME_SCROLLBAR_THUMB_HORIZONTAL: + case NS_THEME_SCROLLBAR_THUMB_VERTICAL: { + aPart = (aWidgetType == NS_THEME_SCROLLBAR_THUMB_HORIZONTAL) ? + SP_THUMBHOR : SP_THUMBVERT; if (!aFrame) aState = BP_NORMAL; else if (IsDisabled(aFrame)) @@ -436,26 +425,19 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, PRUint8 aWidgetType, else aState = BP_NORMAL; } - - if (aFrame) { - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); - - // Get our parent frame's orientation. If we are a horizontal scrollbar, - // then subtract 8 from the result to get the correct offset. - if (HasAttrValue(content, mSBOrientAtom, "vertical")) - aPart = SP_THUMBVERT; // We're vertical instead. - } - return NS_OK; } - case NS_THEME_SCROLLBAR_GRIPPER: { - aPart = SP_GRIPPERHOR; + case NS_THEME_SCROLLBAR_GRIPPER_VERTICAL: + case NS_THEME_SCROLLBAR_GRIPPER_HORIZONTAL: { + aPart = (aWidgetType == NS_THEME_SCROLLBAR_GRIPPER_HORIZONTAL) ? + SP_GRIPPERHOR : SP_GRIPPERVERT; if (!aFrame) aState = BP_NORMAL; else if (IsDisabled(aFrame)) aState = BP_DISABLED; else { + // XXXdwh The gripper needs to get a hover attribute set on it, since it + // never goes into :hover. PRInt32 eventState = GetContentState(aFrame); if (eventState & NS_EVENT_STATE_ACTIVE) // Hover is not also a requirement for // the gripper, since the drag is not canceled @@ -466,22 +448,21 @@ nsNativeThemeWin::GetThemePartAndState(nsIFrame* aFrame, PRUint8 aWidgetType, else aState = BP_NORMAL; } - - if (aFrame) { - nsCOMPtr content; - aFrame->GetContent(getter_AddRefs(content)); - - if (HasAttrValue(content, mSBOrientAtom, "vertical")) - aPart = SP_GRIPPERVERT; // We're vertical instead. - } - return NS_OK; } case NS_THEME_TOOLBOX: - case NS_THEME_STATUSBAR: { + case NS_THEME_STATUSBAR: + case NS_THEME_SCROLLBAR: { aPart = aState = 0; return NS_OK; // These have no part or state. } + case NS_THEME_STATUSBAR_PANEL: + case NS_THEME_STATUSBAR_RESIZER_PANEL: + case NS_THEME_RESIZER: { + aPart = (aWidgetType - NS_THEME_STATUSBAR_PANEL) + 1; + aState = BP_NORMAL; + return NS_OK; + } case NS_THEME_TAB: { aPart = TABP_TAB; if (!aFrame) { @@ -585,15 +566,20 @@ nsNativeThemeWin::DrawWidgetBackground(nsIRenderingContext* aContext, } NS_IMETHODIMP -nsNativeThemeWin::GetWidgetPadding(nsIDeviceContext* aContext, - nsIFrame* aFrame, - PRUint8 aWidgetType, - nsMargin* aResult) +nsNativeThemeWin::GetWidgetBorder(nsIDeviceContext* aContext, + nsIFrame* aFrame, + PRUint8 aWidgetType, + nsMargin* aResult) { if (!getThemeContentRect) return NS_ERROR_FAILURE; - if (aWidgetType == NS_THEME_TOOLBOX || aWidgetType == NS_THEME_TOOLBAR || aWidgetType == NS_THEME_STATUSBAR) + if (aWidgetType == NS_THEME_TOOLBOX || aWidgetType == NS_THEME_TOOLBAR || + aWidgetType == NS_THEME_STATUSBAR || + aWidgetType == NS_THEME_RESIZER || + aWidgetType == NS_THEME_SCROLLBAR || + aWidgetType == NS_THEME_SCROLLBAR_TRACK_VERTICAL || + aWidgetType == NS_THEME_SCROLLBAR_TRACK_HORIZONTAL) return NS_OK; // Don't worry about it. HANDLE theme = GetTheme(aWidgetType); @@ -624,88 +610,6 @@ nsNativeThemeWin::GetWidgetPadding(nsIDeviceContext* aContext, return NS_OK; } -NS_IMETHODIMP -nsNativeThemeWin::GetWidgetFont(nsIDeviceContext* aContext, - PRUint8 aWidgetType, - nsFont* aFont) -{ - if (!getThemeFont) - return NS_ERROR_FAILURE; - - HANDLE theme = GetTheme(aWidgetType); - if (!theme) - return NS_ERROR_FAILURE; - - PRInt32 part, state; - nsresult rv = GetThemePartAndState(nsnull, aWidgetType, part, state); - if (NS_FAILED(rv)) - return rv; - - nsDeviceContextWin* dcWin = (nsDeviceContextWin*)aContext; - HWND hwnd; - HDC tdc; - if (!dcWin->mDC) { - hwnd = (HWND)dcWin->mWidget; - tdc = ::GetDC(hwnd); - } - else - tdc = dcWin->mDC; - - // Get our info. - // LOGFONT logFont; - // HRESULT res = getThemeFont(theme, tdc, part, state, THEME_FONT, &logFont); - // if (FAILED(res)) { - // Part didn't define a font. Get the font from the system metrics - // instead. - nsSystemFontID sysID; - rv = GetSystemFont(aWidgetType, sysID); - if (NS_FAILED(rv)) - return rv; - dcWin->GetSysFontInfo(tdc, sysID, aFont); - // } - // else - // dcWin->CopyLogFontToNSFont(&tdc, &logFont, aFont); - - // Release the dc - if (!dcWin->mDC) - ::ReleaseDC(hwnd, tdc); - return NS_OK; -} - -NS_IMETHODIMP -nsNativeThemeWin::GetWidgetColor(nsIPresContext* aPresContext, - nsIRenderingContext* aContext, - nsIFrame* aFrame, - PRUint8 aWidgetType, - nscolor* aColor) -{ - HANDLE theme = GetTheme(aWidgetType); - - PRInt32 part, state; - nsresult rv = GetThemePartAndState(aFrame, aWidgetType, part, state); - - HDC hdc = ((nsRenderingContextWin*)aContext)->mDC; - if (!hdc) - return NS_ERROR_FAILURE; - - //COLORREF color; - //HRESULT res = getThemeColor(theme, hdc, part, state, THEME_COLOR, &color); - //if (FAILED(res)) { - // Try to get a system color based off the widget type. - nsCOMPtr lf; - aPresContext->GetLookAndFeel(getter_AddRefs(lf)); - nsILookAndFeel::nsColorID colorID; - rv = GetSystemColor(aWidgetType, colorID); - if (NS_FAILED(rv)) - return rv; - lf->GetColor(colorID, *aColor); - // } - - // Copy the colorref into an nscolor. - // *aColor = color; - return NS_OK; -} - NS_IMETHODIMP nsNativeThemeWin::GetMinimumWidgetSize(nsIRenderingContext* aContext, nsIFrame* aFrame, PRUint8 aWidgetType, @@ -714,7 +618,8 @@ nsNativeThemeWin::GetMinimumWidgetSize(nsIRenderingContext* aContext, nsIFrame* if (!getThemePartSize) return NS_ERROR_FAILURE; - if (aWidgetType == NS_THEME_TOOLBOX || aWidgetType == NS_THEME_TOOLBAR || aWidgetType == NS_THEME_STATUSBAR) + if (aWidgetType == NS_THEME_TOOLBOX || aWidgetType == NS_THEME_TOOLBAR || + aWidgetType == NS_THEME_STATUSBAR) return NS_OK; // Don't worry about it. HANDLE theme = GetTheme(aWidgetType); @@ -731,7 +636,8 @@ nsNativeThemeWin::GetMinimumWidgetSize(nsIRenderingContext* aContext, nsIFrame* return NS_ERROR_FAILURE; PRInt32 sizeReq = 1; // Best-fit size. - if (aWidgetType == NS_THEME_SCROLLBAR_THUMB) + if (aWidgetType == NS_THEME_SCROLLBAR_THUMB_VERTICAL || + aWidgetType == NS_THEME_SCROLLBAR_THUMB_HORIZONTAL) sizeReq = 0; // Best-fit size for scrollbar thumbs is too large for most themes. // In our app, we want the thumb to be able to really shrink down, // so use the min-size request value (of 0). @@ -748,7 +654,10 @@ nsNativeThemeWin::WidgetStateChanged(nsIFrame* aFrame, PRUint8 aWidgetType, { // Some widget types just never change state. if (aWidgetType == NS_THEME_TOOLBOX || aWidgetType == NS_THEME_TOOLBAR || - aWidgetType == NS_THEME_SCROLLBAR_TRACK || aWidgetType == NS_THEME_STATUSBAR) { + aWidgetType == NS_THEME_SCROLLBAR_TRACK_VERTICAL || + aWidgetType == NS_THEME_SCROLLBAR_TRACK_HORIZONTAL || + aWidgetType == NS_THEME_STATUSBAR || aWidgetType == NS_THEME_STATUSBAR_PANEL || + aWidgetType == NS_THEME_STATUSBAR_RESIZER_PANEL) { *aShouldRepaint = PR_FALSE; return NS_OK; } diff --git a/gfx/src/windows/nsNativeThemeWin.h b/gfx/src/windows/nsNativeThemeWin.h index 9f2889fb0b33..8db9f754a793 100644 --- a/gfx/src/windows/nsNativeThemeWin.h +++ b/gfx/src/windows/nsNativeThemeWin.h @@ -38,20 +38,10 @@ public: const nsRect& aRect, const nsRect& aClipRect); - NS_IMETHOD GetWidgetPadding(nsIDeviceContext* aContext, - nsIFrame* aFrame, - PRUint8 aWidgetType, - nsMargin* aResult); - - NS_IMETHOD GetWidgetFont(nsIDeviceContext* aContext, - PRUint8 aWidgetType, - nsFont* aFont); - - NS_IMETHOD GetWidgetColor(nsIPresContext* aPresContext, - nsIRenderingContext* aContext, - nsIFrame* aFrame, - PRUint8 aWidgetType, - nscolor* aFont); + NS_IMETHOD GetWidgetBorder(nsIDeviceContext* aContext, + nsIFrame* aFrame, + PRUint8 aWidgetType, + nsMargin* aResult); NS_IMETHOD GetMinimumWidgetSize(nsIRenderingContext* aContext, nsIFrame* aFrame, PRUint8 aWidgetType, @@ -89,7 +79,6 @@ private: nsCOMPtr mCheckedAtom; nsCOMPtr mDisabledAtom; - nsCOMPtr mSBOrientAtom; nsCOMPtr mSelectedAtom; nsCOMPtr mTypeAtom; }; diff --git a/layout/style/nsCSSKeywordList.h b/layout/style/nsCSSKeywordList.h index f8c48563fbb7..c85971a48bee 100644 --- a/layout/style/nsCSSKeywordList.h +++ b/layout/style/nsCSSKeywordList.h @@ -421,8 +421,8 @@ CSS_KEY(dualbutton, dualbutton) CSS_KEY(dualbutton-dropdown, dualbutton_dropdown) CSS_KEY(separator, separator) CSS_KEY(statusbar, statusbar) -CSS_KEY(statusbarpane, statusbar_pane) -CSS_KEY(resizerpane, resizer_pane) +CSS_KEY(statusbarpanel, statusbarpanel) +CSS_KEY(resizerpanel, resizerpanel) CSS_KEY(resizer, resizer) CSS_KEY(listbox, listbox) CSS_KEY(listitem, listitem) @@ -441,12 +441,16 @@ CSS_KEY(tooltip, tooltip) CSS_KEY(spinner, spinner) CSS_KEY(spinner-upbutton, spinner_upbutton) CSS_KEY(spinner-downbutton, spinner_downbutton) -CSS_KEY(scrollbarbutton, scrollbarbutton) -CSS_KEY(scrollbartrack, scrollbartrack) -CSS_KEY(scrollbartrackstart, scrollbartrackstart) -CSS_KEY(scrollbartrackend, scrollbartrackend) -CSS_KEY(scrollbarthumb, scrollbarthumb) -CSS_KEY(scrollbargripper, scrollbargripper) +CSS_KEY(scrollbarbutton-up, scrollbarbutton_up) +CSS_KEY(scrollbarbutton-down, scrollbarbutton_down) +CSS_KEY(scrollbarbutton-left, scrollbarbutton_left) +CSS_KEY(scrollbarbutton-right, scrollbarbutton_right) +CSS_KEY(scrollbartrack-horizontal, scrollbartrack_horizontal) +CSS_KEY(scrollbartrack-vertical, scrollbartrack_vertical) +CSS_KEY(scrollbarthumb-horizontal, scrollbarthumb_horizontal) +CSS_KEY(scrollbarthumb-vertical, scrollbarthumb_vertical) +CSS_KEY(scrollbargripper-horizontal, scrollbargripper_horizontal) +CSS_KEY(scrollbargripper-vertical, scrollbargripper_vertical) CSS_KEY(textfield, textfield) CSS_KEY(caret, caret) CSS_KEY(menulist, menulist) diff --git a/layout/style/nsCSSParser.cpp b/layout/style/nsCSSParser.cpp index e3ef71a4ca8a..600387f71e8e 100644 --- a/layout/style/nsCSSParser.cpp +++ b/layout/style/nsCSSParser.cpp @@ -3955,19 +3955,6 @@ PRBool CSSParserImpl::ParseAzimuth(PRInt32& aErrorCode, nsCSSValue& aValue) return PR_FALSE; } -static PRBool HasForegroundContent(PRUint8 aAppearance) -{ - return ((aAppearance == NS_THEME_BUTTON) || - (aAppearance == NS_THEME_TOOLBAR_BUTTON) || - (aAppearance == NS_THEME_TOOLBAR_DUAL_BUTTON) || - (aAppearance == NS_THEME_LISTBOX_LISTITEM) || - (aAppearance == NS_THEME_TREEVIEW_TREEITEM) || - (aAppearance == NS_THEME_TREEVIEW_HEADER_CELL) || - (aAppearance == NS_THEME_TAB) || - (aAppearance == NS_THEME_TOOLTIP) || - (aAppearance == NS_THEME_TEXTFIELD)); -} - PRBool CSSParserImpl::ParseAppearance(PRInt32& aErrorCode, nsICSSDeclaration* aDeclaration, PRInt32& aChangeHint) { @@ -3980,24 +3967,6 @@ PRBool CSSParserImpl::ParseAppearance(PRInt32& aErrorCode, nsICSSDeclaration* aD else return PR_FALSE; - if (appearance.GetIntValue() && HasForegroundContent(appearance.GetIntValue())) { - // When an appearance is specified, it can act as a shorthand that - // specifies color and font information as well. - // Add in font information. - PRInt32 index = SearchKeywordTable(eCSSKeyword_theme, nsCSSProps::kFontKTable); - if (index > 0) { - nsCSSValue val(nsCSSProps::kFontKTable[index], eCSSUnit_Enumerated); - AppendValue(aDeclaration, eCSSProperty_font_family, val, aChangeHint); - } - - // Add in color information. - index = SearchKeywordTable(eCSSKeyword_theme, nsCSSProps::kColorKTable); - if (index > 0) { - nsCSSValue val(nsCSSProps::kColorKTable[index], eCSSUnit_Integer); - AppendValue(aDeclaration, eCSSProperty_color, val, aChangeHint); - } - } - return PR_TRUE; } diff --git a/layout/style/nsCSSProps.cpp b/layout/style/nsCSSProps.cpp index a3dd6418dd22..33c59fa373be 100644 --- a/layout/style/nsCSSProps.cpp +++ b/layout/style/nsCSSProps.cpp @@ -137,8 +137,8 @@ const PRInt32 nsCSSProps::kAppearanceKTable[] = { eCSSKeyword_dualbutton_dropdown, NS_THEME_TOOLBAR_DUAL_BUTTON_DROPDOWN, eCSSKeyword_separator, NS_THEME_TOOLBAR_SEPARATOR, eCSSKeyword_statusbar, NS_THEME_STATUSBAR, - eCSSKeyword_statusbar_pane, NS_THEME_STATUSBAR_PANE, - eCSSKeyword_resizer_pane, NS_THEME_STATUSBAR_RESIZER_PANE, + eCSSKeyword_statusbarpanel, NS_THEME_STATUSBAR_PANEL, + eCSSKeyword_resizerpanel, NS_THEME_STATUSBAR_RESIZER_PANEL, eCSSKeyword_resizer, NS_THEME_RESIZER, eCSSKeyword_listbox, NS_THEME_LISTBOX, eCSSKeyword_listitem, NS_THEME_LISTBOX_LISTITEM, @@ -158,12 +158,16 @@ const PRInt32 nsCSSProps::kAppearanceKTable[] = { eCSSKeyword_spinner_upbutton, NS_THEME_SPINNER_UP_BUTTON, eCSSKeyword_spinner_downbutton, NS_THEME_SPINNER_DOWN_BUTTON, eCSSKeyword_scrollbar, NS_THEME_SCROLLBAR, - eCSSKeyword_scrollbarbutton, NS_THEME_SCROLLBAR_BUTTON, - eCSSKeyword_scrollbartrack, NS_THEME_SCROLLBAR_TRACK, - eCSSKeyword_scrollbartrackstart, NS_THEME_SCROLLBAR_TRACK_START, - eCSSKeyword_scrollbartrackend, NS_THEME_SCROLLBAR_TRACK_END, - eCSSKeyword_scrollbarthumb, NS_THEME_SCROLLBAR_THUMB, - eCSSKeyword_scrollbargripper, NS_THEME_SCROLLBAR_GRIPPER, + eCSSKeyword_scrollbarbutton_up, NS_THEME_SCROLLBAR_BUTTON_UP, + eCSSKeyword_scrollbarbutton_down, NS_THEME_SCROLLBAR_BUTTON_DOWN, + eCSSKeyword_scrollbarbutton_left, NS_THEME_SCROLLBAR_BUTTON_LEFT, + eCSSKeyword_scrollbarbutton_right, NS_THEME_SCROLLBAR_BUTTON_RIGHT, + eCSSKeyword_scrollbartrack_horizontal, NS_THEME_SCROLLBAR_TRACK_HORIZONTAL, + eCSSKeyword_scrollbartrack_vertical, NS_THEME_SCROLLBAR_TRACK_VERTICAL, + eCSSKeyword_scrollbarthumb_horizontal, NS_THEME_SCROLLBAR_THUMB_HORIZONTAL, + eCSSKeyword_scrollbarthumb_vertical, NS_THEME_SCROLLBAR_THUMB_VERTICAL, + eCSSKeyword_scrollbargripper_horizontal, NS_THEME_SCROLLBAR_GRIPPER_HORIZONTAL, + eCSSKeyword_scrollbargripper_vertical, NS_THEME_SCROLLBAR_GRIPPER_VERTICAL, eCSSKeyword_textfield, NS_THEME_TEXTFIELD, eCSSKeyword_caret, NS_THEME_TEXTFIELD_CARET, eCSSKeyword_menulist, NS_THEME_DROPDOWN, diff --git a/layout/style/nsRuleNode.cpp b/layout/style/nsRuleNode.cpp index c53375483559..023bbcf0da17 100644 --- a/layout/style/nsRuleNode.cpp +++ b/layout/style/nsRuleNode.cpp @@ -1833,23 +1833,7 @@ SetFont(nsIPresContext* aPresContext, nsIStyleContext* aContext, if (dc) { // GetSystemFont sets the font face but not necessarily the size aFont->mFont.size = defaultVariableFont.size; - // If our font type is theme, then check for appearance data and - // obtain our font based off our widget type. - if (sysID == eSystemFont_Theme) { - const nsStyleDisplay* display = (const nsStyleDisplay*) - aContext->GetStyleData(eStyleStruct_Display); - if (display->mAppearance) { - // Get our theme. - nsCOMPtr theme; - aPresContext->GetTheme(getter_AddRefs(theme)); - if (theme) { - nsCOMPtr deviceContext; - aPresContext->GetDeviceContext(getter_AddRefs(deviceContext)); - theme->GetWidgetFont(deviceContext, display->mAppearance, &aFont->mFont); - } - } - } - else if (NS_FAILED(dc->GetSystemFont(sysID, &aFont->mFont))) { + if (NS_FAILED(dc->GetSystemFont(sysID, &aFont->mFont))) { aFont->mFont.name = defaultVariableFont.name; } aFont->mSize = aFont->mFont.size; // this becomes our cascading size diff --git a/layout/style/nsStyleStruct.cpp b/layout/style/nsStyleStruct.cpp index 6502d4e6d6e8..721e1f0f9f1f 100644 --- a/layout/style/nsStyleStruct.cpp +++ b/layout/style/nsStyleStruct.cpp @@ -1029,13 +1029,13 @@ PRInt32 nsStyleDisplay::CalcDifference(const nsStyleDisplay& aOther) const if ((mDisplay == aOther.mDisplay) && (mFloats == aOther.mFloats) && - (mOverflow == aOther.mOverflow) && - (mAppearance == aOther.mAppearance)) { + (mOverflow == aOther.mOverflow)) { if ((mBreakType == aOther.mBreakType) && (mBreakBefore == aOther.mBreakBefore) && (mBreakAfter == aOther.mBreakAfter) && (mClipFlags == aOther.mClipFlags) && - (mClip == aOther.mClip)) { + (mClip == aOther.mClip) && + (mAppearance == aOther.mAppearance)) { return NS_STYLE_HINT_NONE; } return NS_STYLE_HINT_REFLOW; diff --git a/layout/xul/base/src/nsBox.cpp b/layout/xul/base/src/nsBox.cpp index 77f3a996393b..1e0e60ca1457 100644 --- a/layout/xul/base/src/nsBox.cpp +++ b/layout/xul/base/src/nsBox.cpp @@ -665,8 +665,8 @@ nsBox::GetBorder(nsMargin& aMargin) nsCOMPtr dc; context->GetDeviceContext(getter_AddRefs(dc)); nsMargin margin(0,0,0,0); - gTheme->GetWidgetPadding(dc, frame, - disp->mAppearance, &margin); + gTheme->GetWidgetBorder(dc, frame, + disp->mAppearance, &margin); float p2t; context->GetScaledPixelsToTwips(&p2t); aMargin.top = NSIntPixelsToTwips(margin.top, p2t); diff --git a/layout/xul/base/src/nsTextBoxFrame.cpp b/layout/xul/base/src/nsTextBoxFrame.cpp index 59e39c7d956c..246b8cb1368e 100644 --- a/layout/xul/base/src/nsTextBoxFrame.cpp +++ b/layout/xul/base/src/nsTextBoxFrame.cpp @@ -405,33 +405,7 @@ nsTextBoxFrame::PaintTitle(nsIPresContext* aPresContext, CalculateUnderline(aRenderingContext); const nsStyleColor* colorStyle = (const nsStyleColor*)mStyleContext->GetStyleData(eStyleStruct_Color); - PRBool useStyleColor = PR_TRUE; - if (colorStyle->mColorFlags & NS_COLORFLAGS_THEME) { - // Obtain the color dynamically from the theme if possible. - nsCOMPtr theme; - aPresContext->GetTheme(getter_AddRefs(theme)); - if (theme) { - // Find the nearest enclosing style context that defined an appearance. - nsIFrame* curr = this; - while (curr) { - const nsStyleDisplay* disp; - curr->GetStyleData(eStyleStruct_Display, (const nsStyleStruct*&)disp); - if (disp->mAppearance) { - nscolor color; - if (NS_SUCCEEDED(theme->GetWidgetColor(aPresContext, &aRenderingContext, curr, - disp->mAppearance, &color))) { - useStyleColor = PR_FALSE; - aRenderingContext.SetColor(color); - } - break; - } - curr->GetParent(&curr); - } - } - } - - if (useStyleColor) - aRenderingContext.SetColor(colorStyle->mColor); + aRenderingContext.SetColor(colorStyle->mColor); #ifdef IBMBIDI nsresult rv = NS_ERROR_FAILURE; diff --git a/themes/classic/global/win/button.css b/themes/classic/global/win/button.css index 2a901867ced7..1f523133d9d4 100644 --- a/themes/classic/global/win/button.css +++ b/themes/classic/global/win/button.css @@ -30,6 +30,7 @@ /* :::::::::: button :::::::::: */ button { + -moz-appearance: button; margin: 1px 5px 2px 5px; min-width: 6.3em; border: 3px solid; @@ -42,7 +43,6 @@ button { } .button-box { - margin: 1px; border: 1px solid transparent; padding: 1px 4px 2px 3px; } diff --git a/themes/classic/global/win/checkbox.css b/themes/classic/global/win/checkbox.css index e5a5b4d49ea0..a8ed4e9248ba 100644 --- a/themes/classic/global/win/checkbox.css +++ b/themes/classic/global/win/checkbox.css @@ -68,6 +68,7 @@ checkbox[disabled="true"] { /* ::::: checkmark image ::::: */ .checkbox-check { + -moz-appearance: checkbox; -moz-box-align: center; border: 2px solid; -moz-border-top-colors: ThreeDShadow ThreeDDarkShadow; diff --git a/themes/classic/global/win/global.css b/themes/classic/global/win/global.css index d8968f3d603d..70cc09eb3818 100644 --- a/themes/classic/global/win/global.css +++ b/themes/classic/global/win/global.css @@ -106,6 +106,7 @@ iframe { /* ::::: statusbar ::::: */ statusbar { + -moz-appearance: statusbar; border-top: 1px solid ThreeDLightShadow; border-left: 1px solid ThreeDShadow; border-right: 1px solid ThreeDHighlight; @@ -116,7 +117,8 @@ statusbar { background-color: -moz-Dialog; } -statusbarpanel { +statusbarpanel, .statusbar-resizerpanel { + -moz-appearance: statusbarpanel; -moz-box-align: center; -moz-box-pack: center; border-left: 1px solid ThreeDHighlight; @@ -126,6 +128,13 @@ statusbarpanel { padding: 0 4px; } +.statusbar-resizerpanel { + -moz-box-align: end; + -moz-box-pack: end; + -moz-appearance: resizerpanel; + padding: 0px; +} + .statusbarpanel-iconic { padding: 0px; } diff --git a/themes/classic/global/win/scrollbars.css b/themes/classic/global/win/scrollbars.css index d85c4c90b79e..1ac6247a1480 100644 --- a/themes/classic/global/win/scrollbars.css +++ b/themes/classic/global/win/scrollbars.css @@ -30,6 +30,7 @@ /* ::::: scrollbar ::::: */ scrollbar { + -moz-appearance: scrollbar; -moz-binding: url("chrome://global/content/bindings/scrollbar.xml#scrollbar"); cursor: default; } @@ -37,11 +38,13 @@ scrollbar { /* ::::: slider ::::: */ slider { + -moz-appearance: scrollbartrack-horizontal; height: 16px; background: url("chrome://global/skin/scrollbar/slider.gif") scrollbar; } slider[orient="vertical"] { + -moz-appearance: scrollbartrack-vertical; width: 16px; } @@ -60,18 +63,26 @@ scrollbarbutton { /* ::::: thumb (horizontal) ::::: */ thumb { + -moz-appearance: scrollbarthumb-vertical; min-height: 8px; } thumb[orient="horizontal"] { + -moz-appearance: scrollbarthumb-horizontal; min-width: 8px; } +thumb > gripper { + -moz-appearance: scrollbargripper-vertical; +} + +thumb[orient="horizontal"] > gripper { + -moz-appearance: scrollbargripper-horizontal; +} + /* ::::: scrollbar button ::::: */ scrollbarbutton { - width: 16px; - height: 16px; background: -moz-Dialog no-repeat 0px 1px; } @@ -86,20 +97,24 @@ scrollbarbutton:hover:active { /* ..... increment .... */ scrollbarbutton[type="increment"] { + -moz-appearance: scrollbarbutton-right; background-image: url("chrome://global/skin/arrow/arrow-rit.gif") } scrollbar[orient="vertical"] > scrollbarbutton[type="increment"] { + -moz-appearance: scrollbarbutton-down; background-image: url("chrome://global/skin/arrow/arrow-dn.gif") } /* ..... decrement .... */ scrollbarbutton[type="decrement"] { + -moz-appearance: scrollbarbutton-left; background-image: url("chrome://global/skin/arrow/arrow-lft.gif") } scrollbar[orient="vertical"] > scrollbarbutton[type="decrement"] { + -moz-appearance: scrollbarbutton-up; background-image: url("chrome://global/skin/arrow/arrow-up.gif") } diff --git a/themes/classic/global/win/toolbar.css b/themes/classic/global/win/toolbar.css index 65872d984c0f..5ade9b0241d5 100644 --- a/themes/classic/global/win/toolbar.css +++ b/themes/classic/global/win/toolbar.css @@ -30,6 +30,7 @@ /* ::::: toolbox ::::: */ toolbox { + -moz-appearance: toolbox; background-color: -moz-Dialog; border-left: 1px solid ThreeDShadow; border-top: 1px solid ThreeDShadow; diff --git a/themes/classic/global/win/toolbarbutton.css b/themes/classic/global/win/toolbarbutton.css index 7e2fe93c274e..007d9b98e8f1 100644 --- a/themes/classic/global/win/toolbarbutton.css +++ b/themes/classic/global/win/toolbarbutton.css @@ -30,6 +30,7 @@ /* ::::: toolbarbutton ::::: */ toolbarbutton { + -moz-appearance: toolbarbutton; -moz-box-align: center; -moz-box-pack: center; margin: 0; diff --git a/xpfe/global/resources/content/bindings/general.xml b/xpfe/global/resources/content/bindings/general.xml index abcac9afb036..ae4392c8eb41 100644 --- a/xpfe/global/resources/content/bindings/general.xml +++ b/xpfe/global/resources/content/bindings/general.xml @@ -228,6 +228,15 @@ + + + + + + + + + diff --git a/xpfe/global/resources/content/bindings/scrollbar.xml b/xpfe/global/resources/content/bindings/scrollbar.xml index 97b669bf8593..90714672b823 100644 --- a/xpfe/global/resources/content/bindings/scrollbar.xml +++ b/xpfe/global/resources/content/bindings/scrollbar.xml @@ -4,15 +4,19 @@ xmlns="http://www.mozilla.org/xbl" xmlns:xul="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul"> + + + + + +