Open Bug 675582 Opened 13 years ago Updated 1 year ago

Hover state CSS cursor glitch

Categories

(Core :: DOM: Events, defect)

defect

Tracking

()

People

(Reporter: gosimek, Unassigned)

References

Details

(Keywords: regression, testcase)

Attachments

(1 file)

Attached file Test file
User Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:5.0) Gecko/20100101 Firefox/5.0
Build ID: 20110615151330

Steps to reproduce:

We've got element with "cursor: pointer" and "cursor: default" on the :hover state (see attached example).

There is a glitch when mouse entered an element - cursor changes his appearance for short period of time. 

The glitch do not appears when mouse leaves element. 

It could be a Gecko issue because Webkit browsers handle this correctly.
Attachment #549742 - Attachment mime type: text/plain → text/html
I agree that it's a bug, but why don't you just set cursor: default for the non-:hover state, too?
WFM:
Mozilla/5.0 (X11; U; Linux i686 (x86_64); en-US; rv:1.9.2.19) Gecko/20110707 Firefox/3.6.19

Reproduced:
Mozilla/5.0 (X11; Linux x86_64; rv:5.0.1) Gecko/20100101 Firefox/5.0.1
Mozilla/5.0 (X11; Linux x86_64; rv:6.0) Gecko/20100101 Firefox/6.0
Mozilla/5.0 (X11; Linux x86_64; rv:7.0a2) Gecko/20110731 Firefox/7.0a2
Mozilla/5.0 (X11; Linux x86_64; rv:8.0a1) Gecko/20110801 Firefox/8.0a1

Last good nightly: 2009-12-31
First bad nightly: 2010-01-01

Pushlog:
http://hg.mozilla.org/mozilla-central/pushloghtml?fromchange=6d56925adfd5&tochange=cb5a303025fe

The first bad revision is:
changeset:   36797:2e580c431f4e
user:        Boris Zbarsky <bzbarsky@mit.edu>
date:        Thu Dec 31 14:07:57 2009 -0500
summary:     Bug 528306 part 3.  Hook up restyle processing to nsRefreshDriver.  r=dbaron

http://hg.mozilla.org/mozilla-central/rev/2e580c431f4e
Blocks: 528306
Status: UNCONFIRMED → NEW
Component: General → Layout
Ever confirmed: true
OS: Windows 7 → All
Product: Firefox → Core
QA Contact: general → layout
Hardware: x86_64 → All
Version: 5 Branch → Trunk
Keywords: regression, testcase
So presumably what happens is that the cursor is updated immediately on mouseover but the hover state does not update until the next refresh timer firing.

In particular, the cursor update is not flushing out style.

Olli, do you know whether there's a reason the UpdateCursor call is sync under the NS_MOUSE_MOVE case in the ESM, and in particular comes before the GenrateMouseEnterExit?  Could we do the cursor update off the next refresh driver refresh instead?  The fact that UpdateCursor can mess with the mousemove event status is sort of confusing to me....
David might remember better the cursor and hover state handling.

But I don't think there is any reason for the sync call.
This is not reproducible in windows-10 and Ubuntu 14.04 with latest Nightly. The mouse does not change appearance and no glitches.
Considering this, I will mark this issue as Resolved-WORKSFORME. If anyone can still reproduce it, feel free to reopen the issue and provide more information. Thanks

--
Version 	49.0a1
Build ID 	20160519030232
Update Channel 	nightly
User Agent 	Mozilla/5.0 (X11; Linux i686; rv:49.0) Gecko/20100101 Firefox/49.0
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → WORKSFORME
Glitch still occurs on Regular version 47.0b6 and Developer Edition 48.0a2 (2015-05-20) - reproducible using attached file. 

OS: Win 10
UA: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:47.0) Gecko/20100101 Firefox/47.0
UA DEV: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
Status: RESOLVED → REOPENED
Resolution: WORKSFORME → ---
This is reproducible with the developer version using the attached test case. Glitch happens for less than a second when mouse enters to the element.  

----
Version 	48.0a2
Build ID 	20160606004039
Update Channel 	aurora
User Agent 	Mozilla/5.0 (Windows NT 10.0; WOW64; rv:48.0) Gecko/20100101 Firefox/48.0
Status: REOPENED → NEW

The code at https://searchfox.org/mozilla-central/rev/2fd8ffcf087bc59a8e5c962965bbb7bf230bcd28/dom/events/EventStateManager.cpp#677,685 still seems to have this issue of updating the cursor before updating hover state...

Component: Layout → DOM: Events
Severity: normal → S3

Recently found similar issue also.

It's a Japanese video on-demand site called TVer.jp. They used cursor: none !important on the video container conatiner_hideCusor CSS class to hide the cursor when it's fullscreen. When cursor moves, it will reappear and when cursor stops for a while, the CSS class will be added and supposedly hides the cursor.

However, when I moved and waited, it didn't disappear. Similar to the reporter of this issue, Safari and Chrome on Mac worked just fine. Only Firefox on Mac didn't work. Didn't try Windows. Unlike the reporter, it's not glitch but never hid the cursor again.

User agent: "Mozilla/5.0 (Macintosh; Intel Mac OS X 10.15; rv:109.0) Gecko/20100101 Firefox/109.0"

You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: