Open Bug 280331 Opened 15 years ago Updated 6 years ago

Mozilla's special application cursors and CSS3 cursors should fit to the underlying OS cursor theme

Categories

(Core :: Widget: Win32, defect)

x86
Windows XP
defect
Not set

Tracking

()

People

(Reporter: mithgol, Unassigned)

References

(Depends on 8 open bugs)

Details

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7.5) Gecko/20041107 Firefox/1.0

This problem was first mentioned two days ago in e-mail conversation between
timeless@myrealbox.com and bugzilla@gtalbot.org -- timeless gave there an
important comment:

timeless> the windows cursors are user 
timeless> definable, mine have drop shadows, and if i needed bigger cursors for 
timeless> all of my apps, i could and would do so globally.

timeless> i think in that 
timeless> respect i'm a fairly typical user. (as a power user, i might go in and 
timeless> forcibly change any app's cursors to match what i want, but expecting 
timeless> normal users to have to do that isn't very reasonable.)

So, in Windows, under Start --> Control Panel --> Mouse, there are only fifteen
system cursors; comparing them to http://www.w3.org/TR/css3-ui/#cursor0
specifications, we may identify them as (in order of appearance; numbered ones
have CSS3 equivalent, the other two are Windows-specific):

1) default,
2) help,
3) progress,
4) wait,
5) crosshair,
6) text,
#) [custom cursor for handwriting],
7) not-allowed,
8) ns-resize,
9) ew-resize,
10) nwse-resize,
11) nesw-resize,
12) move,
#) [custom cursor for special selection],
13) pointer.

There's also a usual practice of cloning resize cursors, and it's adopted by
Mozilla and Firefox:

ew-resize --> e-resize, w-resize
ns-resize --> n-resize, s-resize
nesw-resize --> ne-resize, sw-resize
nwse-resize --> nw-resize, se-resize

However, after all that tricks, there are nine CSS3 cursors with no Windows
equivalent:

1) context-menu, [ bug 258960 ]
2) cell,
3) vertical-text, [ bug 163174 ]
4) alias,
5) copy,
6) no-drop, [ bug 275173 ]
7) col-resize, [ bug 163174 ]
8) row-resize, [ bug 163174 ]
9) all-scroll. [ bug 275174 ]

Mozilla does also have (or will have) some extra non-system cursors, see
http://www.gtalbot.org/HTMLJavascriptCSS/Cursors.html and the following bugs:

Bug 246481 - Customized cursor when hovering a .pdf link
Bug 230337 - Proper cursors for bookmark dragging
Bug 230081 - Proper cursors for frame (or pane) resizing
Bug 169678 - Cursor shape should reflect the type of link hovered on (e.g.
pop-up/download/mailto...) (different cursors for links to new windows)

These extra cursors (both CSS3 and Mozilla's own) cannot be changed by applying
Windows cursor themes at the system Control Panel. Their shape and even size may
differ from system's cursor set.

That's a bug, that is to be fixed.

timeless@myrealbox.com is inclined to think that this bug with non-system
cursors can never be fixed, and so he wontfixed bug 258960 (which blocks bug
1996), and he's also inclined to wontfix three of four more similar bugs.

However, we have nine CSS3 cursors which are not system on Windows. So Mozilla
and/or Firefox cannot get rid of non-system cursors on Windows and be entirely
compatible with CSS3 at the same time.

So, bug 258960 has to be unwontfixed, and this bug added to dependencies to bug
258960 (and to most of other bugs introducing non-system cursors): added not as
a blocker, but as a blocked one, because achieving CSS3 compatibility has higher
importance, and its unwanted consequences are, after all, only consequences, and
cannot be fixed beforehand.

Some means of fixing this bug:

-=- on Mozilla start, check for Windows system cursor theme and change
non-Windows CSS3 cursors and extra Mozilla cursors accordingly

-=- optionally allow Mozilla XPI themes to change Windows system cursor
settings, when a bunch of CSS3 cursors (including equivalents to Windows system
cursor) is provided in the Mozilla theme XPI file

-=- optionally allow Windows system dialog (Start --> Control Panel --> Mouse)
to change Mozilla cursor settings instantly (without having to wait for browser
restart)

-=- tweak Windows system dialog (Start --> Control Panel --> Mouse), adding
controls for Mozilla cursors (this is technically possible: Genius Netscroll+
driver is adding extra controls there for extra buttons of Genius mice)

Reproducible: Always

Steps to Reproduce:
1. When in Windows, visit Start --> Control Panel --> Mouse dialog.
2. Change Windows system cursor settings.
3. Start Mozilla.

Actual Results:  
Some CSS3 cursors (vertical-text, col-resize, row-resize) don't reflect system
cursor theme.

Expected Results:  
Mozilla's special application cursors and CSS3 cursors (even non-system) should
fit to the underlying OS cursor theme seamlessly.

After adding this bug to Bugzilla, I'll introduce a dozen of blockers for it,
including all the bugs I know about they demand extra cursors to be implemented
in Mozilla.

timeless@myrealbox.com, I pray for your patience, don't even think of making a
bloody nightmare of wontfixing all the blockers of this bug ;-))

Final idea: we need 20-40 variations of each extra cursor, each variation
intended for a known Windows cursor theme. It is possible.


Windows XP cursor themes:

3D-Bronze
3D-White
Conductor
Dinosaur
Hands 1
Hands 2
Magnified
Old Fashioned
Variations
Windows Animated
Windows Black
Windows Black (extra large)
Windows Black (large)
Windows Default
Windows Inverted (extra large)
Windows Inverted (large)
Windows Inverted
Windows Standard (extra large)
Windows Standard (large)
CCing Talbot, who might be very interested in this bug.

Adding the above mentioned dependencies:
bug 258960
bug 163174
bug 275173
bug 275174
bug 246481
bug 230337
bug 230081
bug 169678
CCing timeless@myrealbox.com -- glad to see you here, as this bug is entirely
based on your really valuable idea. Would you be so kind to unwontfix bug
258960, which is a separate problem? What you needed was an ability of applying
cursor themes, especially via Windows settings.
CCing Mats Palmgren, who once fixed bug 163174 (that bug first introduced
CSS3-needed cursors which were not system on Windows).

Adding bug 90213 and bug 189719 as actual blockers.

Adding CSS2/3 cursor property support (it's a metabug) -- bug 1916 -- as a
tracker-blocker. May happen to be useful.
Depends on: 1916, 90213, 189719
Status: UNCONFIRMED → NEW
Ever confirmed: true
Assignee: guifeatures → general
Component: XP Apps: GUI Features → GFX
Product: Mozilla Application Suite → Core
QA Contact: ian
Version: unspecified → Trunk
i'll unwontfix it later. and again, the default themes should all use the same
cursor for context menu as normal. atm i'm going to mostly leave this bug alone.
fwiw the windows mouse control panel cursor tab really doesn't seem very
scalable, it basically does:

EnumerateValue	HKLM\Software\Microsoft\Windows\CurrentVersion\Control
Panel\Cursors\Schemes
EnumerateKey	HKCU\Control Panel
EnumerateValue	HKCU\Control Panel\Cursors\

it's /possible/ there are other interesting siblings of Cursors\ which the
control panel would honor, but i can't think of a useful way to probe it (short
of filling the registry with a systematic list of letter strings 1-20 characters
long, or relying on a wXP feature to do something similar but avoiding actually
putting the keys into the registry).
Assignee: general → win32
Component: GFX → Widget: Win32
(In reply to comment #0)
> However, we have nine CSS3 cursors which are not system on Windows. So Mozilla
> and/or Firefox cannot get rid of non-system cursors on Windows and be entirely
> compatible with CSS3 at the same time.
That statement is not true. The CSS3-UI CR says “The UA may treat unsupported
values as 'auto'. E.g. on platforms that do not have a concept of a
'context-menu' cursor, the UA may render 'default' or whatever is appropriate.”
Depends on: 309537
Depends on: 309538
My testpage is now at:
http://www.gtalbot.org/DHTMLSection/Cursors.html

Newly added dependent or somewhat related bugs:
bug 309537: When autoscrolling, cursor should indicate current scrolling direction
bug 309538: Autoscroll indicator should show possible scrolling directions
Assignee: win32 → nobody
QA Contact: ian → win32
This is also evident in Linux.
You need to log in before you can comment on or make changes to this bug.