Closed Bug 419383 Opened 16 years ago Closed 16 years ago

Extract native Vista toolbar styles and expose to Themes

Categories

(Core :: Widget: Win32, defect, P2)

x86
Windows Vista
defect

Tracking

()

RESOLVED FIXED

People

(Reporter: faaborg, Assigned: vlad)

References

Details

(Keywords: dev-doc-complete)

Attachments

(1 file, 1 obsolete file)

We would like to use the silver toolbar appearance on Vista for the main window of Firefox and the media toolbar appearance (black) in the Library window.

Vlad wrote an app to explore what parts of the native OS theme we can extract, so he will be able to provide more specific details.
Flags: blocking-firefox3?
Component: Theme → Widget: Win32
Flags: blocking-firefox3?
Product: Firefox → Core
QA Contact: theme → win32
Flags: blocking1.9?
What we want are rebars, not toolbars. The right theme to use depends on the appearance:
media -> "Media::Rebar"
communcations -> "Communcations::Rebar"
alternate -> "Rebar" or "Alternate::Rebar"

part: RP_BACKGROUND
state: 0

So how should we expose this to themers?
Yep; we need to define new appearance properties.  I think right now the 'toolbox' appearance is the base rebar; we should define something like media-toolbox and communications-toolbox.  The nice thing is that "Media::Rebar" falls back to "Rebar" if the specific subclass isn't found, so we don't have to do anything special for windows.  For now, we can ignore those properties on other platforms I think, or just treat them the same as a normal 'toolbox'.
Assignee: nobody → vladimir
Flags: blocking1.9? → blocking1.9+
Priority: -- → P3
Attached patch add new appearance types (obsolete) — Splinter Review
Adds three new appearance types, media-toolbox, communications-toolbox, and browsertabbar-toolbox.  Note that these will all fall back to the normal 'Rebar' style if the specific subclass is not available.
Attachment #305902 - Flags: review?(roc)
How many of those Vista things are there? Will we eventually want to add a huge number of theme constants to cover them all?
Nope, should just be these three, at least for 1.9.  If we have time i'd like to revisit how we do native theme stuff for moz2+.
I'd like to hear your thoughts about that, I don't have any :-)

Shouldn't you be adding something to nsNativeThemeWin::CloseData?
Attached patch updated patchSplinter Review
Updated patch, with something now done in CloseTheme().  Also got rid of a bogus hunk that snuck in here that should've been done in the other theme patch (and now is).
Attachment #305902 - Attachment is obsolete: true
Attachment #306204 - Flags: review?(roc)
Attachment #305902 - Flags: review?(roc)
Flags: tracking1.9+
Priority: P3 → P2
Comment on attachment 306204 [details] [diff] [review]
updated patch

+#define CLOSE_THEME(_x)  if (_x) { closeTheme(_x); _x = NULL; }

Macros suck, would you mind "static void CloseTheme(HANDLE* aTheme)"?
Attachment #306204 - Flags: superreview+
Attachment #306204 - Flags: review?(roc)
Attachment #306204 - Flags: review+
Comment on attachment 306204 [details] [diff] [review]
updated patch

One more to request approval on..

roc, I'd rather not do a function since then I can't assign NULL back to the pointer (unless I do a ref to a pointer, but ick).  I mean, I can expand out the macro, just seems cleaner this way.  (Really, I -almost- made a little helper class so you could do  WindowsThemeData mButtonTheme("Button");, but decided that would probably be overkill for now :)
Attachment #306204 - Flags: approval1.9b4?
Comment on attachment 306204 [details] [diff] [review]
updated patch

a1.9b4=beltzner
Attachment #306204 - Flags: approval1.9b4? → approval1.9b4+
Checked in.
Status: NEW → RESOLVED
Closed: 16 years ago
Resolution: --- → FIXED
Unless its something to come later, I am not seeing the 'black' bar in the Library on my Vista HP.  

Today's build:
Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b4pre) Gecko/2008030106 Minefield/3.0b4pre Firefox/3.0 ID:2008030106
Its not hooked up yet, but the patch works with some userchrome.

On another note, while this degrades nicefully in XP, it doesn't theme the text color on the toolbox, meaning that you have to use special theme overrides for XP and Vista to fix it anyway. Is that possible to extract from the theme? Or maybe theres an easier to way to make sure the text is visible that I don't know of.
From what I can tell, Communications::Rebar has a text colour defined in the theme, while Media::Rebar doesn't... 

There's also the issue that the "Media" and "Communications" subclasses could disappear entirely in the next version of Windows, so if you do then explicitly set the text colour to another colour, it might look a bit odd on newer versions of windows.
>There's also the issue that the "Media" and "Communications" subclasses could
>disappear entirely in the next version of Windows

They are encouraging other applications to use these toolbar styles in their user experience guidelines, so they probably will keep them around for legacy applications with Windows 7.  If not we will have plenty of time to create an update while it is in beta.
Depends on: 427045
Depends on: 431309
Depends on: 427173
Keywords: dev-doc-needed
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: