Closed Bug 222654 Opened 21 years ago Closed 19 years ago

global/scrollbars.css for native scrollbars different on Mac (many Firefox themes break scrollbars on Mac)

Categories

(SeaMonkey :: Themes, defect)

defect
Not set
major

Tracking

(Not tracked)

RESOLVED FIXED
mozilla1.8beta4

People

(Reporter: aaronspuler, Assigned: steffen.wilberg)

References

Details

(Keywords: fixed1.8)

Attachments

(1 file, 9 obsolete files)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624

If you look at the classic.jar for MacOS X and all other platforms, the code is
different.  To achieve native scrollbars, it (to me anyway) is impossible to use
a non-mac classic.jar scrollbars.css file.  To test this out, I have 2 themes
that use native scrollbars, named Rain and Smoke.  You may find them at
http://mozthemes.tk, and if you try to install the non-Mac version on a Mac,
everything is correct except for the scrollbars (they don't appear).  However,
installing the Mac-specific builds corrects this problem.  I have not modified
the code global/scrollbars.css -- I just copied the file straight from the
classic.jar file.  For the Mac-specific version, I pulled it from the Mac
classic.jar, and for the non-Mac version, I pulled it from the Windows classic.jar.
I am not the only themer noticing this problem, others on the Mozillazine forums
have noticed this issue.

Reproducible: Always

Steps to Reproduce:
1.Install non-Mac version of Rain or Smoke themes from http://mozthemes.css
2.Restart Mozilla

Actual Results:  
Scrollbars missing.

Expected Results:  
Native scrollbars.

Then to get native scrollbars, install the Mac-specific version, restart
Mozilla, and there you go.  Since Mozilla is cross-platform, themes should not
have to be platform-specific.
Sorry, in "Steps to reproduce, step 1", it should say http://mozthemes.tk
instead of http://mozthemes.css!
also got this problem when making my qute status and crystal status themes...
Themes may need to be platform-specific if you want a different look on
different platforms, which is the case here...
But the only thing different about the themes is the scrollbars... all other os
widgets are cross-platform on the themes.  And here's another thing:  If I take
a non-Mac theme and change the -moz-appearance for all instances of scrollbar
code in scrollbars.css to -moz-appearance: none, then there ARE scrollbars
appearing in the mail folder pane and mail message pane!  But nowhere else :(
This is about themes being cross-platform, which seems to no longer be the case.
 This doesn't seem to be about using OSX specific widgets and currently only
appears to be a problem with scrollbars.  

Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.6a) Gecko/20031025
Firebird/0.7+ (Mike Tigas (Nova); SVG-DOMi-Venkman; i686)
No progress yet on this bug??  I still have to maintain two versions of each
theme that uses Native OS Scrollbars, and the only difference is
global\scrollbars.css -- This behavior occurs on Mozilla, Mozilla Firefox, and
Mozilla Thunderbird.
Flags: blocking1.8a2?
Flags: blocking1.7.1?
Assignee: shliang → themes
QA Contact: pmac
I agree with this.  For all the themes I've hacked to get to work with OS X all
i've had to do was replace scrollbars.css  Us Mac users shouldn't have to do
that.  And the theme authors shouldn't have to create a seperate theme just for
us.  
Maintaining two versions of the same theme just to solve the missing OS X scrollbars issue is more work than should be necessary. For what it's worth I vote this issue be fixed.
Flags: blocking1.8a2? → blocking1.8a2-
Asa, how about nominating this as a blocker for 1.9???

Please?
Requesting blocking-aviary1.0mac on this bug.. Unless it's intentional that
themes aren't cross-platform for MacOSX on Firefox and Tbird. 

Bug 252294, was filed against Mozilla Update asking that the Cross-Platform
"All" themes be hidden for MacOSX users, because of this bug. As most
cross-platform themes that don't take Mac into consideration appearantly are
failing to show up appropriately. I'd rather see this bug fixed than have to
implement such a workaround for Update.
Flags: blocking-aviary1.0mac?
Blocks: 252294
The only place using chrome://global/skin/scrollbars.css is
http://lxr.mozilla.org/seamonkey/source/content/base/src/nsLayoutStylesheetCache.cpp#83
(there's also mozilla/extensions/inspector/resources/content/tests/allskin.xul,
but that's only used by inspector/jar.mn).

We could do this:
-NS_LITERAL_CSTRING("chrome://global/skin/scrollbars.css"));
+#idef XP_MACOSX
+  NS_LITERAL_CSTRING("chrome://global/skin/nativescrollbars.css"));
+#else
+  NS_LITERAL_CSTRING("chrome://global/skin/xulscrollbars.css"));
+#endif

Include both css files in the appropriate jar.mn (and clean up some cruft in
makefiles). Each theme could provide both css files then, and the app would use
the one appropriate for its platform.
Is it in the same place for Firefox?
*** Bug 254783 has been marked as a duplicate of this bug. ***
*** Bug 256280 has been marked as a duplicate of this bug. ***
*** Bug 262174 has been marked as a duplicate of this bug. ***
Steffen -

Can you please turn your idea into a formal patch?
This is really causing a problem for UMO.  Unfortunately this didn't make it for
1.0, which means a lot of frustrated users.
Severity: normal → major
I can make a formal patch out of the idea, not "now" though, not sure who to r?
though, or if that patch is optimal...but it will likely be a much better
work-around than what is currently in place.
Re-Assigning to me, so I dont loose.
Assignee: themes → 116057
Flags: blocking-aviary1.0mac?
*** Bug 272307 has been marked as a duplicate of this bug. ***
Flags: blocking1.7.5? → blocking1.7.5-
*** Bug 285084 has been marked as a duplicate of this bug. ***
Comment on attachment 175042 [details] [diff] [review]
patch #1 - first part of what has been described in comment 11

hmm forgive me for talking this late at night, but do we not need the #ifdef
etc as teh first character on the line, at least the # anyway, with possible
space between that and teh command.

Plus #idef XP_MACOSX is wrong, mistyped.

I am unsure of which new-file scrollbars.css will be best shipped to, though a
new file for the other will be needed, and an edit of the jar.mn for those CSS
files.
Flags: blocking-aviary1.1?
Summary: global/scrollbars.css for native scrollbars different on mac → global/scrollbars.css for native scrollbars different on Mac (many Firefox themes break scrollbars on Mac)
Of course this doesn't help the theme developer who wants to have the
scrollbars on every OS; e.g. Modern Pinball
Of course this doesn't help the theme developer who wants to have the same
scrollbars on every OS; e.g. Modern Pinball
Comment on attachment 184227 [details] [diff] [review]
Tweaked patch addressing #idef and #ifdef etc at the start of the line

I'll diff -u next time : )
Attachment #184227 - Attachment is obsolete: true
Attached patch diff -u tweaked patch (obsolete) — Splinter Review
Regarding comment 24 [25]

nativescrollbars.css would only need to be :

@import(xulscrollbars.css); /* absolute paths if absolutely necessary */

or

@import(chrome://global/skin/xulscrollbars.css);

To get around that.

Apologies for excessive bugspam. Been up since approx 4am
Attachment #184228 - Attachment is obsolete: true
Attached patch complete patch (obsolete) — Splinter Review
The above patches are nowhere near complete, so lLet's start again.

The goal is to allow themes to provide two css files, one for Mac
(nativescrollbars.css) and one for the other platforms (xulscrollbars.css). The
advantage is that you can provide a single theme for all platforms.

This patch changes the reference from the generic
chrome://global/skin/scrollbars.css to
chrome://global/skin/nativescrollbars.css and
chrome://global/skin/xulscrollbars.css.

On the Seamonkey Classic theme, there are already two files,
nativescrollbars.css and xulscrollbars.css. So I only need to change the jar.mn
packaging.
On the Seamonkey Modern theme, there's only scrollbars.css, providing xul
scrollbars on all platforms. The jar.mn file packages it as
nativescrollbars.css on Mac, and as xulscrollbars.css on the other platforms.
On Pinstripe, which is used by Firefox on Mac, there's a scrollbars.css file,
which I move to nativescrollbars.css, and pack that.
On Qute, which is used by Thunderbird on all platforms, there's only
scrollbars.css, providing xul scrollbars on all platforms. The jar.mn file
packages it as nativescrollbars.css on Mac, and as xulscrollbars.css on the
other platforms.
On Winstripe, which is used by Firefox on non-Mac platforms, there's a
scrollbars.css file, which I move to xulscrollbars.css, and pack that.

The allskin.xul file is the only other file referencing
chrome://global/skin/scrollbars.css.
Assignee: bugspam.Callek → steffen.wilberg
Attachment #175042 - Attachment is obsolete: true
Attachment #184229 - Attachment is obsolete: true
Status: NEW → ASSIGNED
Attachment #184242 - Flags: superreview?(dbaron)
Attachment #184242 - Flags: review?(dbaron)
I tested this with Firefox on Linux. There's no difference to Firefox/Windows.
I'd be glad if someone could test this on Mac and on Seamonkey.
Comment on attachment 184242 [details] [diff] [review]
complete patch

I'm not the right reviewer for this.
Attachment #184242 - Flags: superreview?(dbaron)
Attachment #184242 - Flags: superreview?
Attachment #184242 - Flags: review?(dbaron)
Attachment #184242 - Flags: review?
Attachment #184242 - Flags: superreview?
Attachment #184242 - Flags: review?(neil.parkwaycc.co.uk)
Attachment #184242 - Flags: review?(kevin)
Attachment #184242 - Flags: review?
Comment on attachment 184242 [details] [diff] [review]
complete patch

>-              NS_LITERAL_CSTRING("chrome://global/skin/scrollbars.css"));
>+#ifdef XP_MACOSX
>+              NS_LITERAL_CSTRING("chrome://global/skin/nativescrollbars.css"));
>+#else
>+              NS_LITERAL_CSTRING("chrome://global/skin/xulscrollbars.css"));
>+#endif
On IRC bz suggested changing this to chrome://global/content/scrollbars.css
then using preprocessing to @import the relevant skin file. I think it's too
much pain for too little gain. But you should still get some sort of layout
sign-off either way.

>+#ifndef XP_MACOSX
>+# use xul scrollbars on non-Mac platforms
>+  skin/classic/global/xulscrollbars.css                       (global/win/scrollbars.css)
>+#endif
I'd rather that this line be moved into the #else section of the #ifdef
XP_MACOSX instead of having its own #if block.

>+#ifdef XP_MACOSX
>+# referenced as chrome://global/skin/nativescrollbars.css on Mac
>+  skin/modern/global/nativescrollbars.css                          (global/scrollbars.css)
>+#else
>+# referenced as chrome://global/skin/xulscrollbars.css on non-Mac platforms
>+  skin/modern/global/xulscrollbars.css                             (global/scrollbars.css)
>+#endif
I think I'd prefer to package it twice for Modern, so that the platforms get
identical .jar files (which is the point).

>-+  skin/classic/global/scrollbars.css
>++  skin/classic/global/nativescrollbars.css
I assume this would be done with a CVS move... unless your toolkit theme
reviewer will let you get away with renaming it in jar.mn instead ;-)

>-<?xml-stylesheet href="chrome://global/skin/scrollbars.css"?>
>+#ifdef XP_MACOSX
>+<?xml-stylesheet href="chrome://global/skin/nativescrollbars.css"?>
>+#else
>+<?xml-stylesheet href="chrome://global/skin/xulscrollbars.css"?>
>+#endif
Since the layout code always loads the scrollbars anyway (except for the
sidebar in the modern theme, which I doubt applies here), you could probably
get away with simply removing that line.

sr=me with these nits fixed.
-    NS_ASSERTION(gStyleCache->mScrollbarsSheet, "Could not load
scrollbars.css.");
+    NS_ASSERTION(gStyleCache->mScrollbarsSheet, "Could not load
[native]scrollbars.css.");

bit still looks wrong since it's now xulscrollbars.css ... and then they're
sort of "native" since Firefox etc on Linux pick up the GTK scrollbars.

Are native scrollbars native or pseudo-native ?
Attachment #184366 - Flags: superreview?(neil.parkwaycc.co.uk)
Attached patch complete patch v1.1 (obsolete) — Splinter Review
This patch addresses Neil's comments except bz's suggestion, because that would
result in shipping three css files: The nativescrollbars.css,
xulscrollbars.css, and scrollbars.css, the latter having either of the first
two @import'ed.

I also splitted the NS_ASSERTION to report the proper file names.
Attachment #184242 - Attachment is obsolete: true
Attachment #184366 - Attachment is obsolete: true
Attachment #184444 - Flags: superreview?(neil.parkwaycc.co.uk)
Attachment #184444 - Flags: review?(kevin)
Attachment #184242 - Flags: review?(neil.parkwaycc.co.uk)
Attachment #184242 - Flags: review?(kevin)
Attachment #184366 - Flags: superreview?(neil.parkwaycc.co.uk)
Comment on attachment 184444 [details] [diff] [review]
complete patch v1.1

Looks OK now but I was just wondering whether we should try to load
scrollbars.css just in case.
Attachment #184444 - Flags: superreview?(neil.parkwaycc.co.uk)
Attachment #184444 - Flags: superreview?(bzbarsky)
Attachment #184444 - Flags: review+
I'll try to look at this in the next week.
Comment on attachment 184444 [details] [diff] [review]
complete patch v1.1

>Index: mozilla/themes/classic/jar.mn

Wouldn't it make sense to package both files no matter what the target OS is? 
That way theme developers who make a copy of this theme as a basis for their
theme won't run into issues...

Or is that what the patch is doing?

>Index: mozilla/toolkit/themes/pinstripe/global/scrollbars.css

Please get this repository moved (so as not to lose the CVS history) or just
leave it be and only change the packaging.

Again, it might make sense to package under both names so people developing
themes based on this don't get screwed over.

>Index: mozilla/toolkit/themes/qute/global/jar.mn

Please package under both names no matter what the target platform is, like
Modern does.

>Index: mozilla/toolkit/themes/winstripe/global/scrollbars.css

Same comments here as for Pinstripe.

sr=bzbarsky with those comments addressed.
Attachment #184444 - Flags: superreview?(bzbarsky) → superreview+
Comment on attachment 184444 [details] [diff] [review]
complete patch v1.1

Excuse the delay. Skin changes look good, though I haven't gotten a chance to
test this on Mac since we don't build on Tiger yet
Attachment #184444 - Flags: review?(kevin) → review+
Let me see if I have this straight from a theme developer's point of view:

Old:  
OSX:  scrollbars.css
Other: scrollbars.css

New:
OSX:  nativescrollbars.css
Other: xulscrollbars.css



Comment on attachment 184444 [details] [diff] [review]
complete patch v1.1

>Index: mozilla/extensions/inspector/resources/content/tests/allskin.xul
>===================================================================
> <?xml-stylesheet href="chrome://global/skin/radio.css"?>
>-<?xml-stylesheet href="chrome://global/skin/scrollbars.css"?>
> <?xml-stylesheet href="chrome://global/skin/splitter.css"?>

Shouldn't you have added the others back in?

And I agree with bz, you should always package both native and xulscrollbars
since people base their themes on the included one.

Many thanks to Anne and cdn for really getting this done.
Flags: blocking-aviary1.1? → blocking1.8b4?
what's missing here? is this ready to land?
Flags: blocking1.7.5-
Attached patch ship both files on all platforms (obsolete) — Splinter Review
Sorry for the delay. This patch addresses bz's comments by shipping both
xulscrollbars.css and nativescrollbars.css on all platforms.

Comment 38 is correct.

Tested with Firefox on Linux.
Attachment #184444 - Attachment is obsolete: true
Attachment #189572 - Flags: review?(neil.parkwaycc.co.uk)
Attachment #189572 - Attachment is obsolete: true
Attachment #189572 - Flags: review?(neil.parkwaycc.co.uk)
Attached patch ship both files on all platforms (obsolete) — Splinter Review
Bugzilla's patch-viewer doesn't like long lines.
Shorter comments this time.
Attachment #189573 - Flags: review?(neil.parkwaycc.co.uk)
Hmm, the patch-viewer ("Diff") still suppresses two lines from the
pinstripe/global/jar.mn part.
Comment on attachment 189573 [details] [diff] [review]
ship both files on all platforms

>-    NS_ASSERTION(gStyleCache->mScrollbarsSheet, "Could not load scrollbars.css.");
>+#ifdef XP_MACOSX
>+    NS_ASSERTION(gStyleCache->mScrollbarsSheet, "Could not load nativescrollbars.css.");
>+#else
>+    NS_ASSERTION(gStyleCache->mScrollbarsSheet, "Could not load xulscrollbars.css.");
>+#endif
I always hate trailing dots after filenames ;-)
Attachment #189573 - Flags: review?(neil.parkwaycc.co.uk) → review+
Attachment #189573 - Flags: approval1.8b4?
Attachment #189573 - Flags: approval1.8b4? → approval1.8b4+
Chase, can you please do repository copies (so as not to lose the CVS history) of
mozilla/toolkit/themes/pinstripe/global/scrollbars.css to nativescrollbars.css, and
mozilla/toolkit/themes/winstripe/global/scrollbars.css to xulscrollbars.css, as
requested by bz in comment 36?
Thanks.
Flags: blocking1.8b4? → blocking1.8b4+
Whiteboard: cvs copies needed before checkin
Justdave, can you help here please? See previous comment.
*** Bug 294365 has been marked as a duplicate of this bug. ***
Depends on: 304354
CVS copy being tracked in bug 304354.
Thanks for the cvs copies.

This is an unbitrotted patch which doesn't add the already copied files, but
modifies them in place.

I don't have spare time today, so I'd appreciate if anybody could test this and
check it in.
Attachment #189573 - Attachment is obsolete: true
Checked in trunk and 1.8-branch.
Status: ASSIGNED → RESOLVED
Closed: 19 years ago
Resolution: --- → FIXED
Whiteboard: cvs copies needed before checkin
Target Milestone: --- → mozilla1.8beta4
Keywords: fixed1.8
(In reply to comment #50)
> Checked in trunk and 1.8-branch.

Seems like you may have mistakenly checked in a few files on the branch.
> Seems like you may have mistakenly checked in a few files on the branch.
I don't think so, but bonsai's display of files removed from a branch is indeed
a bit strange:
mozilla/ toolkit/ themes/ pinstripe/ global/ Tag:
mozilla/ toolkit/ themes/ pinstripe/ global/ MOZILLA_1_8_BRANCH
mozilla/ toolkit/ themes/ winstripe/ global/ Tag:
mozilla/ toolkit/ themes/ winstripe/ global/ MOZILLA_1_8_BRANCH
I'm running Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9a1)
Gecko/20050822 SeaMonkey/1.0a and the fix for this bug has caused the scrollbars
to disappear on all of the themes from www.spuler.us (OP of this thread).
There's a fix sort of discussed over here:
http://forums.mozillazine.org/viewtopic.php?t=305665, so what do we do now about
this bugfix? Do I start another bug?
Shriramana, those themes need to be updated, there is no need to open a bugzilla
bug.
*** Bug 305864 has been marked as a duplicate of this bug. ***
*** Bug 306329 has been marked as a duplicate of this bug. ***
*** Bug 307000 has been marked as a duplicate of this bug. ***
This has been reverted by bug 379319 because we don't need different scrollbars.css files anymore.
Product: Core → SeaMonkey
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: