Opened 11 years ago

Closed 11 years ago

#7748 closed defect (fixed)

dijit.Tooltip does not show up in Safari with 1.2.0rc2

Reported by: jayantbsai Owned by:
Priority: high Milestone: 1.2
Component: Dijit Version: 1.2beta
Keywords: Cc: Douglas Hays
Blocked By: Blocking:

Change History (7)

comment:1 Changed 11 years ago by bill

Milestone: tbd1.2

Hmm, looks like the onMouseEnter/onMouseLeave changes from [14530] (or onMouseEnter/onMouseLeave events themselves) aren't working.

comment:2 Changed 11 years ago by Tom Trenka

severity: majorblocker

Looks like Webkit does not support onMouseEnter/onMouseLeave. Probably we're going to have to revert that to onMouseOver/onMouseOut with event bubble cancellation. Any problems with that? This bug is probably the last bug to be truly addressed before cutting the 1.2 release.

comment:3 Changed 11 years ago by Tom Trenka

Looking into it, I see that event is being synthesized, we'll figure it out.

comment:4 Changed 11 years ago by James Burke

peller seems to have isolated this to this changeset: http://bugs.dojotoolkit.org/changeset/15273/dojo/trunk/_base/event.js

On further investigation of this change, it seems very hazardous to route Safari through all the event normalization and special cleanup for the dojo.keys fixes.

comment:5 Changed 11 years ago by bill

Cc: Douglas Hays added

Yah, I take back my above comment. As peller said it's due to [15273] which fixed some keyboard handling for safari but apparently broke onMouseEnter/onMouseLeave (which was otherwise working fine).

comment:6 Changed 11 years ago by bill

Here's the problem: IE is the only browser that gives us native onMouseEnter/onMouseLeave support. We fake it for the other browsers (see the definition of add() at the beginning of event.js):

add: function(/*DOMNode*/node, /*String*/name, /*Function*/fp){
	...
	if(!dojo.isIE && (name == "mouseenter" || name == "mouseleave")){

But now safari (along with IE) is overriding that definition of add():

// IE event normalization
if(dojo.isIE || dojo.isSafari){ 
		...
		add: function(/*Object*/ source, /*String*/ method, /*Function*/ listener){

thus losing the code to fake onMouseEnter/onMouseLeave.

comment:7 Changed 11 years ago by bill

Resolution: fixed
Status: newclosed

(In [15348]) Fixes #7748, refs #6876: reinstate faux onmouseenter / onmouseleave events for safari. !strict

Note: See TracTickets for help on using tickets.