mirror of
https://git.tt-rss.org/git/tt-rss.git
synced 2025-12-15 15:35:56 +00:00
upgrade Dojo to 1.6.1
This commit is contained in:
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
|
||||
Copyright (c) 2004-2011, The Dojo Foundation All Rights Reserved.
|
||||
Available via Academic Free License >= 2.1 OR the modified BSD license.
|
||||
see: http://dojotoolkit.org/license for details
|
||||
*/
|
||||
@@ -10,27 +10,26 @@ dojo._hasResource["dojo._base.event"] = true;
|
||||
dojo.provide("dojo._base.event");
|
||||
dojo.require("dojo._base.connect");
|
||||
|
||||
|
||||
// this file courtesy of the TurboAjax Group, licensed under a Dojo CLA
|
||||
|
||||
(function(){
|
||||
// DOM event listener machinery
|
||||
var del = (dojo._event_listener = {
|
||||
add: function(/*DOMNode*/ node, /*String*/ name, /*Function*/ fp){
|
||||
if(!node){return;}
|
||||
if(!node){return;}
|
||||
name = del._normalizeEventName(name);
|
||||
fp = del._fixCallback(name, fp);
|
||||
var oname = name;
|
||||
if(
|
||||
!dojo.isIE &&
|
||||
!dojo.isIE &&
|
||||
(name == "mouseenter" || name == "mouseleave")
|
||||
){
|
||||
var ofp = fp;
|
||||
//oname = name;
|
||||
name = (name == "mouseenter") ? "mouseover" : "mouseout";
|
||||
fp = function(e){
|
||||
if(!dojo.isDescendant(e.relatedTarget, node)){
|
||||
// e.type = oname; // FIXME: doesn't take? SJM: event.type is generally immutable.
|
||||
return ofp.call(this, e);
|
||||
return ofp.call(this, e);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -71,7 +70,7 @@ dojo.require("dojo._base.connect");
|
||||
},
|
||||
_fixEvent: function(evt, sender){
|
||||
// _fixCallback only attaches us to keypress.
|
||||
// Switch on evt.type anyway because we might
|
||||
// Switch on evt.type anyway because we might
|
||||
// be called directly from dojo.fixEvent.
|
||||
switch(evt.type){
|
||||
case "keypress":
|
||||
@@ -81,26 +80,26 @@ dojo.require("dojo._base.connect");
|
||||
return evt;
|
||||
},
|
||||
_setKeyChar: function(evt){
|
||||
evt.keyChar = evt.charCode ? String.fromCharCode(evt.charCode) : '';
|
||||
evt.keyChar = evt.charCode >= 32 ? String.fromCharCode(evt.charCode) : '';
|
||||
evt.charOrCode = evt.keyChar || evt.keyCode;
|
||||
},
|
||||
// For IE and Safari: some ctrl-key combinations (mostly w/punctuation) do not emit a char code in IE
|
||||
// we map those virtual key codes to ascii here
|
||||
// not valid for all (non-US) keyboards, so maybe we shouldn't bother
|
||||
_punctMap: {
|
||||
106:42,
|
||||
111:47,
|
||||
186:59,
|
||||
187:43,
|
||||
188:44,
|
||||
189:45,
|
||||
190:46,
|
||||
191:47,
|
||||
192:96,
|
||||
219:91,
|
||||
220:92,
|
||||
221:93,
|
||||
222:39
|
||||
_punctMap: {
|
||||
106:42,
|
||||
111:47,
|
||||
186:59,
|
||||
187:43,
|
||||
188:44,
|
||||
189:45,
|
||||
190:46,
|
||||
191:47,
|
||||
192:96,
|
||||
219:91,
|
||||
220:92,
|
||||
221:93,
|
||||
222:39
|
||||
}
|
||||
});
|
||||
|
||||
@@ -115,7 +114,7 @@ dojo.require("dojo._base.connect");
|
||||
// sender: DOMNode
|
||||
// node to treat as "currentTarget"
|
||||
return del._fixEvent(evt, sender);
|
||||
}
|
||||
};
|
||||
|
||||
dojo.stopEvent = function(/*Event*/ evt){
|
||||
// summary:
|
||||
@@ -126,7 +125,7 @@ dojo.require("dojo._base.connect");
|
||||
evt.preventDefault();
|
||||
evt.stopPropagation();
|
||||
// NOTE: below, this method is overridden for IE
|
||||
}
|
||||
};
|
||||
|
||||
// the default listener to use on dontFix nodes, overriden for IE
|
||||
var node_listener = dojo._listener;
|
||||
@@ -141,16 +140,16 @@ dojo.require("dojo._base.connect");
|
||||
// create a listener
|
||||
var h = l.add(obj, event, dojo.hitch(context, method));
|
||||
// formerly, the disconnect package contained "l" directly, but if client code
|
||||
// leaks the disconnect package (by connecting it to a node), referencing "l"
|
||||
// leaks the disconnect package (by connecting it to a node), referencing "l"
|
||||
// compounds the problem.
|
||||
// instead we return a listener id, which requires custom _disconnect below.
|
||||
// return disconnect package
|
||||
return [ obj, event, h, lid ];
|
||||
}
|
||||
};
|
||||
|
||||
dojo._disconnect = function(obj, event, handle, listener){
|
||||
([dojo._listener, del, node_listener][listener]).remove(obj, event, handle);
|
||||
}
|
||||
};
|
||||
|
||||
// Constants
|
||||
|
||||
@@ -280,7 +279,7 @@ dojo.require("dojo._base.connect");
|
||||
};
|
||||
=====*/
|
||||
|
||||
if(dojo.isIE){
|
||||
if(dojo.isIE < 9 || (dojo.isIE && dojo.isQuirks)){
|
||||
dojo.mouseButtons = {
|
||||
LEFT: 1,
|
||||
MIDDLE: 4,
|
||||
@@ -305,7 +304,7 @@ dojo.require("dojo._base.connect");
|
||||
}
|
||||
|
||||
// IE event normalization
|
||||
if(dojo.isIE){
|
||||
if(dojo.isIE){
|
||||
var _trySetKeyCode = function(e, code){
|
||||
try{
|
||||
// squelch errors when keyCode is read-only
|
||||
@@ -314,7 +313,7 @@ dojo.require("dojo._base.connect");
|
||||
}catch(e){
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
// by default, use the standard listener
|
||||
var iel = dojo._listener;
|
||||
@@ -323,7 +322,7 @@ dojo.require("dojo._base.connect");
|
||||
if(!dojo.config._allow_leaks){
|
||||
// custom listener that handles leak protection for DOM events
|
||||
node_listener = iel = dojo._ie_listener = {
|
||||
// support handler indirection: event handler functions are
|
||||
// support handler indirection: event handler functions are
|
||||
// referenced here. Event dispatchers hold only indices.
|
||||
handlers: [],
|
||||
// add a listener to an object
|
||||
@@ -376,7 +375,7 @@ dojo.require("dojo._base.connect");
|
||||
},
|
||||
remove: function(/*DOMNode*/ node, /*String*/ event, /*Handle*/ handle){
|
||||
event = del._normalizeEventName(event);
|
||||
iel.remove(node, event, handle);
|
||||
iel.remove(node, event, handle);
|
||||
if(event=="onkeypress"){
|
||||
var kd = node.onkeydown;
|
||||
if(--kd._stealthKeydownRefs <= 0){
|
||||
@@ -402,11 +401,11 @@ dojo.require("dojo._base.connect");
|
||||
// node to treat as "currentTarget"
|
||||
if(!evt){
|
||||
var w = sender && (sender.ownerDocument || sender.document || sender).parentWindow || window;
|
||||
evt = w.event;
|
||||
evt = w.event;
|
||||
}
|
||||
if(!evt){return(evt);}
|
||||
evt.target = evt.srcElement;
|
||||
evt.currentTarget = (sender || evt.srcElement);
|
||||
evt.target = evt.srcElement;
|
||||
evt.currentTarget = (sender || evt.srcElement);
|
||||
evt.layerX = evt.offsetX;
|
||||
evt.layerY = evt.offsetY;
|
||||
// FIXME: scroll position query is duped from dojo.html to
|
||||
@@ -419,14 +418,16 @@ dojo.require("dojo._base.connect");
|
||||
var offset = dojo._getIeDocumentElementOffset();
|
||||
evt.pageX = evt.clientX + dojo._fixIeBiDiScrollLeft(docBody.scrollLeft || 0) - offset.x;
|
||||
evt.pageY = evt.clientY + (docBody.scrollTop || 0) - offset.y;
|
||||
if(evt.type == "mouseover"){
|
||||
if(evt.type == "mouseover"){
|
||||
evt.relatedTarget = evt.fromElement;
|
||||
}
|
||||
if(evt.type == "mouseout"){
|
||||
if(evt.type == "mouseout"){
|
||||
evt.relatedTarget = evt.toElement;
|
||||
}
|
||||
evt.stopPropagation = del._stopPropagation;
|
||||
evt.preventDefault = del._preventDefault;
|
||||
if (dojo.isIE < 9 || dojo.isQuirks) {
|
||||
evt.stopPropagation = del._stopPropagation;
|
||||
evt.preventDefault = del._preventDefault;
|
||||
}
|
||||
return del._fixKeys(evt);
|
||||
},
|
||||
_fixKeys: function(evt){
|
||||
@@ -460,38 +461,41 @@ dojo.require("dojo._base.connect");
|
||||
var k=evt.keyCode;
|
||||
// These are Windows Virtual Key Codes
|
||||
// http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winui/WinUI/WindowsUserInterface/UserInput/VirtualKeyCodes.asp
|
||||
var unprintable = k!=13 && k!=32 && k!=27 && (k<48||k>90) && (k<96||k>111) && (k<186||k>192) && (k<219||k>222);
|
||||
var unprintable = (k!=13 || (dojo.isIE >= 9 && !dojo.isQuirks)) && k!=32 && k!=27 && (k<48||k>90) && (k<96||k>111) && (k<186||k>192) && (k<219||k>222);
|
||||
|
||||
// synthesize keypress for most unprintables and CTRL-keys
|
||||
if(unprintable||evt.ctrlKey){
|
||||
var c = unprintable ? 0 : k;
|
||||
if(evt.ctrlKey){
|
||||
if(k==3 || k==13){
|
||||
return; // IE will post CTRL-BREAK, CTRL-ENTER as keypress natively
|
||||
}else if(c>95 && c<106){
|
||||
return; // IE will post CTRL-BREAK, CTRL-ENTER as keypress natively
|
||||
}else if(c>95 && c<106){
|
||||
c -= 48; // map CTRL-[numpad 0-9] to ASCII
|
||||
}else if((!evt.shiftKey)&&(c>=65&&c<=90)){
|
||||
}else if((!evt.shiftKey)&&(c>=65&&c<=90)){
|
||||
c += 32; // map CTRL-[A-Z] to lowercase
|
||||
}else{
|
||||
}else{
|
||||
c = del._punctMap[c] || c; // map other problematic CTRL combinations to ASCII
|
||||
}
|
||||
}
|
||||
// simulate a keypress event
|
||||
var faux = del._synthesizeEvent(evt, {type: 'keypress', faux: true, charCode: c});
|
||||
kp.call(evt.currentTarget, faux);
|
||||
evt.cancelBubble = faux.cancelBubble;
|
||||
if(dojo.isIE < 9 || (dojo.isIE && dojo.isQuirks)){
|
||||
evt.cancelBubble = faux.cancelBubble;
|
||||
}
|
||||
evt.returnValue = faux.returnValue;
|
||||
_trySetKeyCode(evt, faux.keyCode);
|
||||
}
|
||||
},
|
||||
// Called in Event scope
|
||||
_stopPropagation: function(){
|
||||
this.cancelBubble = true;
|
||||
this.cancelBubble = true;
|
||||
},
|
||||
_preventDefault: function(){
|
||||
// Setting keyCode to 0 is the only way to prevent certain keypresses (namely
|
||||
// ctrl-combinations that correspond to menu accelerator keys).
|
||||
// Otoh, it prevents upstream listeners from getting this information
|
||||
// Try to split the difference here by clobbering keyCode only for ctrl
|
||||
// Try to split the difference here by clobbering keyCode only for ctrl
|
||||
// combinations. If you still need to access the key upstream, bubbledKeyCode is
|
||||
// provided as a workaround.
|
||||
this.bubbledKeyCode = this.keyCode;
|
||||
@@ -501,23 +505,23 @@ dojo.require("dojo._base.connect");
|
||||
});
|
||||
|
||||
// override stopEvent for IE
|
||||
dojo.stopEvent = function(evt){
|
||||
dojo.stopEvent = (dojo.isIE < 9 || dojo.isQuirks) ? function(evt){
|
||||
evt = evt || window.event;
|
||||
del._stopPropagation.call(evt);
|
||||
del._preventDefault.call(evt);
|
||||
}
|
||||
} : dojo.stopEvent;
|
||||
}
|
||||
|
||||
del._synthesizeEvent = function(evt, props){
|
||||
var faux = dojo.mixin({}, evt, props);
|
||||
del._setKeyChar(faux);
|
||||
// FIXME: would prefer to use dojo.hitch: dojo.hitch(evt, evt.preventDefault);
|
||||
// FIXME: would prefer to use dojo.hitch: dojo.hitch(evt, evt.preventDefault);
|
||||
// but it throws an error when preventDefault is invoked on Safari
|
||||
// does Event.preventDefault not support "apply" on Safari?
|
||||
faux.preventDefault = function(){ evt.preventDefault(); };
|
||||
faux.stopPropagation = function(){ evt.stopPropagation(); };
|
||||
faux.preventDefault = function(){ evt.preventDefault(); };
|
||||
faux.stopPropagation = function(){ evt.stopPropagation(); };
|
||||
return faux;
|
||||
}
|
||||
};
|
||||
|
||||
// Opera event normalization
|
||||
if(dojo.isOpera){
|
||||
@@ -568,12 +572,12 @@ dojo.require("dojo._base.connect");
|
||||
var c = unprintable ? 0 : k;
|
||||
if(evt.ctrlKey){
|
||||
if(k==3 || k==13){
|
||||
return; // IE will post CTRL-BREAK, CTRL-ENTER as keypress natively
|
||||
}else if(c>95 && c<106){
|
||||
return; // IE will post CTRL-BREAK, CTRL-ENTER as keypress natively
|
||||
}else if(c>95 && c<106){
|
||||
c -= 48; // map CTRL-[numpad 0-9] to ASCII
|
||||
}else if(!evt.shiftKey && c>=65 && c<=90){
|
||||
}else if(!evt.shiftKey && c>=65 && c<=90){
|
||||
c += 32; // map CTRL-[A-Z] to lowercase
|
||||
}else{
|
||||
}else{
|
||||
c = del._punctMap[c] || c; // map other problematic CTRL combinations to ASCII
|
||||
}
|
||||
}
|
||||
@@ -630,16 +634,16 @@ if(dojo.isIE){
|
||||
}
|
||||
}
|
||||
return r;
|
||||
}
|
||||
};
|
||||
dojo._getIeDispatcher = function(){
|
||||
// ensure the returned function closes over nothing ("new Function" apparently doesn't close)
|
||||
return new Function(dojo._scopeName + "._ieDispatcher(arguments, this)"); // function
|
||||
}
|
||||
};
|
||||
// keep this out of the closure to reduce RAM allocation
|
||||
dojo._event_listener._fixCallback = function(fp){
|
||||
var f = dojo._event_listener._fixEvent;
|
||||
return function(e){ return fp.call(this, f(e, this)); };
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user