Closed Bug 362623 Opened 16 years ago Closed 14 years ago
Don't use custom spin cursor on Mac
I received the following note from a Mac user: "I want to get rid of the loading page cursor in Firefox 1.5 for Mac. Safari doesn't have this behavior, but it's just too lame to use otherwise. In Firefox, when you click on a link the cursor (pointer?) changes from the default pointer to one with a spinning arrow. I use Mighty Mouse for the Mac to get a large cursor so the effect is large cursor which disappears then pop! it's back again when the page has loaded. I don't see that well so the cursor seems to go away and come back. Can this be fixed? I use the Fission extension to I can see the progress of the new page loading in the address bar (like Safari). I've gotten rid of the throbber, now if I could just get the cursor to stay the same as a page loads. Can you help?" For reference, the Mighty Mouse program is here: http://www.unsanity.com/haxies/mightymouse/ Firefox currently displays a custom spinning cursor (spin1-spin4.tiff in widget/src/cocoa/cursors/) when a page is loading. Although the Apple HIGs don't explicitly repudiate this behavior, the lack of a built-in "wait" cursor (beyond the beach ball, which signifies unresponsiveness) implies that this approach is not recommended. Instead, Apple recommends using an asynchronous progress indicator--which we already do, of course, via the throbber. As a Windows user, keeping the cursor unchanged during page load seems strange to me. But it seems to be expected on Mac (?), and doing so would allow utilities like Mighty Mouse to integrate better with Firefox.
Assignee: nobody → joshmoz
Component: OS Integration → Widget: Cocoa
Product: Firefox → Core
QA Contact: os.integration → cocoa
Version: unspecified → Trunk
The cursors you see in a HTML-page, are *not* defined by the OS, but by defined in CSS3. See http://www.w3.org/TR/css3-ui/#cursor ; in this case, it's the 'progress' cursor, which is often displayed as a spinning ball or arrow with hourglass, but should not be confused with the 'wait' cursor, which is the hour glass, or the spinning wheel. The CSS document assumes that a spinning beachball is used for the progress cursor, but that is actually a mistake (Apple used it for the equivalent of the wait cursor, and doesn't have a progress cursor). You're right in this regard. That's why Gecko implemented an arrow-with-spinning-ball progress cursor, although it doesn't fit in the Apple GUI. See bug 49173 for the original discussion. I don't know if this ever will be fixed or not. Displaying nothing for the progress cursor might even be worse, as you note yourself.
The cocoa docs for NSCursor discourages from explicitly setting the wait cursor - in fact there is none - because the system will automatically show the beach ball when it has to (i.e., when there's 100% CPU or something like that). Indeed, testing Safari seems to confirm that it never shows a wait cursor. When I load a new page, the old page is still responsive until the new page is replacing it, which is then responsive, so it isn't all that weird. I think we could get rid of the spinning cursor as long as our progress indication is very visible. Here we're different from Safari. Safari uses the whole location bar as progress indicator while we only have the tiny progressbar in the statusbar. I think that would have to improve somehow before we remove the wait cursor.
Note, the above comment is from a practical point of view, and does not take into account the CSS spec considerations in comment 1.
Oh, now I see that the bug was written by Blake (it's difficult to see what part was quoted and what not :). My remarks where directed to the original user. So, I guess we're now discussing if it's worthwhile to remove the progress cursor on Mac, to fit better in the OS ? I guess so, as long as there's a progress indicator left (this user removed that, and replaced it with the Fission extension).
Josh asked me to comment from a CSS spec perspective, so... It's possible that the appropriate 'progress' cursor for a CSS implementation on Mac OS X is the default cursor. However, that doesn't really work quite right, since in normal cases we switch between default and text cursors (cursor:auto), and disabling that during page load seems like it might not be the right thing to do. Then again, perhaps the right thing to do is to do both -- i.e., both change what cursor 'progress' gives on Mac and change our UI code (or perhaps it's Gecko code) not to change the cursor at all during loading on Mac. The CSS specs shouldn't give a firm answer here, since the right thing to do for CSS should be the cursor most appropriate to the platform conventions for the cases where Web authors would use that cursor. Then, if CSS doesn't give us enough power to do the right thing in our UI, we also have the option of ifdef-ing our UI code as well. I don't really have a strong opinion here, nor do I think CSS clearly dictates what we should do.
FWIW, the other nice thing about that cursor (besides getting progress-vs-done updates right where you are looking--assuming your eyes follow your cursor) is that we show the spin cursor when something on the page is still "working", even if the network loading and whatnot is done (e.g., if the spellchecker is still checking a textarea that has been loaded with existing contents, such as a wiki page).
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.