|
From: Raymond I. <xw...@us...> - 2003-03-30 17:13:58
|
Update of /cvsroot/dynapi/dynapi3x/src/api
In directory sc8-pr-cvs1:/tmp/cvs-serv11568/src/api
Modified Files:
dyndocument.js dynlayer_base.js dynlayer_dom.js dynlayer_ie.js
dynlayer_ns4.js dynlayer_opera.js event.js mouse_dom.js
mouse_ie.js mouse_ns4.js
Log Message:
uploaded by raymond - includes kevin's patches
Index: dyndocument.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dyndocument.js,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** dyndocument.js 26 Mar 2003 02:22:31 -0000 1.6
--- dyndocument.js 30 Mar 2003 17:13:18 -0000 1.7
***************
*** 21,25 ****
var o = this;
this.frame.onresize = function() {o._handleResize()};
! this.onResizeNS4 = "reload" // or "redraw"
this.fgColor = this.doc.fgColor||'';
this.bgColor = this.doc.bgColor||'';
--- 21,25 ----
var o = this;
this.frame.onresize = function() {o._handleResize()};
! this.onResizeNS4 = "reload"; // or "redraw"
this.fgColor = this.doc.fgColor||'';
this.bgColor = this.doc.bgColor||'';
***************
*** 27,33 ****
};
var p = dynapi.setPrototype('DynDocument','DynElement');
- p.getBgColor = function() {
- return this.bgColor;
- };
p._remove = function() {
this.elm=null;
--- 27,30 ----
***************
*** 35,38 ****
--- 32,38 ----
this.frame=null;
};
+ p.getBgColor = function() {
+ return this.bgColor;
+ };
p.getX = p.getY = p.getPageX = p.getPageY = dynapi.functions.Zero;
p.getWidth = function() {
***************
*** 116,120 ****
// create divs object - speeds up DOM browsers on Win32. Linux & Mac?
if (ua.ie||ua.dom) {
! divs={}
var dv,all=(ua.ie||ua.opera)? document.all.tags('div') : document.getElementsByTagName('div');
var i=0,l=all.length; // very important!
--- 116,120 ----
// create divs object - speeds up DOM browsers on Win32. Linux & Mac?
if (ua.ie||ua.dom) {
! divs={};
var dv,all=(ua.ie||ua.opera)? document.all.tags('div') : document.getElementsByTagName('div');
var i=0,l=all.length; // very important!
Index: dynlayer_base.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dynlayer_base.js,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** dynlayer_base.js 26 Mar 2003 02:22:31 -0000 1.1
--- dynlayer_base.js 30 Mar 2003 17:13:19 -0000 1.2
***************
*** 121,124 ****
--- 121,125 ----
var i,ch=this.children;
if (this.html!=null) s+=this.html;
+ if (this._blkBoardElm) s=('<div id="'+this.id+'_blkboard">'+s+'</div>');
for (i=0;i<ch.length;i++) s+=ch[i].getOuterHTML();
return s;
***************
*** 156,160 ****
if (ch) this.h = h<0? 0 : h;
if (cw||ch) {
! if (this._updateAnchors) this._updateAnchors();
if (this.css) {
if (cw) this.css.width = this.w||0;
--- 157,162 ----
if (ch) this.h = h<0? 0 : h;
if (cw||ch) {
! if (this._hasAnchor) this.updateAnchor(); // update this anchor
! if (this._hasChildAnchors) this._updateAnchors(); // update child anchors
if (this.css) {
if (cw) this.css.width = this.w||0;
***************
*** 197,201 ****
if (anchor == null) {
delete this._saveAnchor;
! if (this.parent && this.parent._childAnchors && this.parent._childAnchors[this.is]) delete this.parent._childAnchors[this.is];
}
else if (this.parent) {
--- 199,204 ----
if (anchor == null) {
delete this._saveAnchor;
! if (this.parent && this.parent._childAnchors && this.parent._childAnchors[this.id]) delete this.parent._childAnchors[this.id];
! this._hasAnchor = false;
}
else if (this.parent) {
***************
*** 204,207 ****
--- 207,211 ----
a[this.id] = anchor;
this.parent._updateAnchor(this.id);
+ this._hasAnchor = this.parent._hasChildAnchors = true;
}
else this._saveAnchor = anchor;
Index: dynlayer_dom.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dynlayer_dom.js,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** dynlayer_dom.js 26 Mar 2003 02:22:31 -0000 1.5
--- dynlayer_dom.js 30 Mar 2003 17:13:19 -0000 1.6
***************
*** 36,39 ****
--- 36,40 ----
dlyr.elm._dynobj = dlyr;
dlyr._dyndoc = dlyr.parent._dyndoc;
+ if(dlyr._blkBoardElm) dlyr._blkBoardElm = (divs)? divs[dlyr.id+'_blkboard'] : dlyr.parent.doc.getElementById(dlyr.id+'_blkboard');
if (dlyr.z) dlyr.css.zIndex = dlyr.z;
***************
*** 53,56 ****
--- 54,70 ----
};
+ p.enableBlackboard = function(){
+ if (!this._created) this._blkBoardElm=true;
+ else if(!this._blkBoardElm){
+ var r,ptxt;
+ var h='',elm = this.elm;
+ if(this.html!=null) h=this.html;
+ r = elm.ownerDocument.createRange();
+ r.setStartBefore(elm);
+ ptxt = r.createContextualFragment('<div id="'+this.id+'_blkboard">'+h+'</div>');
+ elm.appendChild(ptxt);
+ this._blkBoardElm = elm.lastChild;
+ }
+ };
p.setLocation=function(x,y) {
var cx = (x!=null && x!=this.x);
***************
*** 62,65 ****
--- 76,80 ----
if (cy) this.css.top = this.y+"px";
}
+ if(this._hasLocationEvents) this.invokeEvent('locationchange');
return (cx||cy);
};
***************
*** 75,85 ****
this.html = html;
if (this.css) {
var sTmp=(this.w==null)?'<NOBR>'+this.html+'</NOBR>':this.html;
! while (this.elm.hasChildNodes()) this.elm.removeChild(this.elm.firstChild);
! var r=this.elm.ownerDocument.createRange();
! r.selectNodeContents(this.elm);
r.collapse(true);
var df=r.createContextualFragment(sTmp);
! this.elm.appendChild(df);
}
}
--- 90,102 ----
this.html = html;
if (this.css) {
+ var elm = (this._blkBoardElm)? this._blkBoardElm:this.elm;
+ elm.innerHTML = html;
var sTmp=(this.w==null)?'<NOBR>'+this.html+'</NOBR>':this.html;
! while (elm.hasChildNodes()) elm.removeChild(elm.firstChild);
! var r=elm.ownerDocument.createRange();
! r.selectNodeContents(elm);
r.collapse(true);
var df=r.createContextualFragment(sTmp);
! elm.appendChild(df);
}
}
***************
*** 87,91 ****
};
p.setTextSelectable=function(b) {
! this._textSelectable = b
if(!this._hasMouseEvents) this.captureMouseEvents();
if (!b) this.setCursor('default');
--- 104,108 ----
};
p.setTextSelectable=function(b) {
! this._textSelectable = b;
if(!this._hasMouseEvents) this.captureMouseEvents();
if (!b) this.setCursor('default');
Index: dynlayer_ie.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dynlayer_ie.js,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -r1.6 -r1.7
*** dynlayer_ie.js 26 Mar 2003 02:22:31 -0000 1.6
--- dynlayer_ie.js 30 Mar 2003 17:13:19 -0000 1.7
***************
*** 29,33 ****
elm.style.backgroundColor=(this.bgColor||'transparent');
elm.style.zIndex=(this.z||1);
! elm.style.cursor=(this._cursor||'auto')
elm.style.overflow=(this._overflow!=null)? 'hidden':'';
if(this.bgImage!=null) elm.style.backgroundImage='url('+this.bgImage+')';
--- 29,33 ----
elm.style.backgroundColor=(this.bgColor||'transparent');
elm.style.zIndex=(this.z||1);
! elm.style.cursor=(this._cursor||'auto');
elm.style.overflow=(this._overflow!=null)? 'hidden':'';
if(this.bgImage!=null) elm.style.backgroundImage='url('+this.bgImage+')';
***************
*** 53,56 ****
--- 53,57 ----
dlyr.elm._dynobj = dlyr;
dlyr._dyndoc = dlyr.parent._dyndoc;
+ if(dlyr._blkBoardElm) dlyr._blkBoardElm = (divs)? divs[dlyr.id+'_blkboard'] : dlyr.parent.elm.all[dlyr.id+'_blkboard'];
if (dlyr.html!=null && dlyr.html!='' && (dlyr.w==null || dlyr.h==null)) {
***************
*** 73,76 ****
--- 74,86 ----
};
+ p.enableBlackboard = function(){
+ if (!this._created) this._blkBoardElm=true;
+ else if(!this._blkBoardElm){
+ var h='',elm = this.elm;
+ if(this.html!=null) h=this.html;
+ elm.insertAdjacentHTML("beforeEnd",'<div id="'+this.id+'_blkboard">'+h+'</div>');
+ this._blkBoardElm = elm.children[elm.children.length-1];
+ }
+ };
p.setLocation=function(x,y) {
var cx = (x!=null && x!=this.x);
***************
*** 98,121 ****
return this.setLocation(x,y);
};
- p.setSize = function(w,h) {
- var cw = (w!=null && w!=this.w);
- var ch = (h!=null && h!=this.h);
- if (cw) this.w = w<0? 0 : w;
- if (ch) this.h = h<0? 0 : h;
- if (cw||ch) {
- if (this._updateAnchors) this._updateAnchors();
- if (this.css) {
- if (cw) this.css.width = this.w||0;
- if (ch) this.css.height = this.h||0;
- if (cw || ch) this.css.clip = 'rect(0px '+(this.w||0)+'px '+(this.h||0)+'px 0px)';
- if (this.updateLayout) this.updateLayout();
- }
- }
- return (cw||ch);
- };
p.setHTML = function(html) {
if (html!=this.html) {
this.html = html;
! if (this.css) this.elm.innerHTML = html;
}
if(this._hasContentEvents) this.invokeEvent('contentchange');
--- 108,118 ----
return this.setLocation(x,y);
};
p.setHTML = function(html) {
if (html!=this.html) {
this.html = html;
! if (this.css) {
! var elm = (this._blkBoardElm)? this._blkBoardElm:this.elm;
! elm.innerHTML = html;
! }
}
if(this._hasContentEvents) this.invokeEvent('contentchange');
Index: dynlayer_ns4.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dynlayer_ns4.js,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** dynlayer_ns4.js 26 Mar 2003 02:22:31 -0000 1.5
--- dynlayer_ns4.js 30 Mar 2003 17:13:19 -0000 1.6
***************
*** 65,68 ****
--- 65,72 ----
dlyr.elm._dynobj = dlyr; // ???
dlyr._dyndoc = dlyr.parent._dyndoc;
+ if(dlyr._blkBoardElm) {
+ dlyr._blkBoardElm = elm.document.layers[dlyr.id+'_blkboard'];
+ dlyr.doc = dlyr._blkBoardElm; // useful for <forms>
+ }
if (dlyr.html!=null && dlyr.html!='' && (dlyr.w==null || dlyr.h==null)) {
***************
*** 103,109 ****
--- 107,130 ----
else s+=this.html;
}
+ if (this._blkBoardElm) s=('<layer id="'+this.id+'_blkboard">'+s+'</layer>');
for (i=0;i<this.children.length;i++) s+=this.children[i].getOuterHTML();
return s;
};
+ p.enableBlackboard = function(){
+ if (!this._created) this._blkBoardElm=true;
+ else if(!this._blkBoardElm){
+ var c,i,h='',elm = this.elm;
+ if(this.html!=null) h=this.html;
+ var parentElement = this.parent.isClass('DynLayer')? this.parent.elm : this.parent.frame;
+ var elm = this._blkBoardElm = new Layer(0, elm);
+ elm.document.write(h);
+ elm.document.close();
+ elm.visibility = 'inherit';
+ for (i=0;i<this.children.length;i++){
+ c=this.children[i];
+ c.css.zIndex=c.css.zIndex; // reset zindex
+ }
+ }
+ };
p.setLocation = function(x,y) {
var cx = (x!=null && x!=this.x);
***************
*** 187,191 ****
if (ch) this.h = h<0? 0 : h;
if (cw||ch) {
! if (this._updateAnchors) this._updateAnchors();
if (this.css) {
if (cw) this.css.clip.width = this.w || 0;
--- 208,213 ----
if (ch) this.h = h<0? 0 : h;
if (cw||ch) {
! if (this._hasAnchor) this.updateAnchor(); // update this anchor
! if (this._hasChildAnchors) this._updateAnchors(); // update child anchors
if (this.css) {
if (cw) this.css.clip.width = this.w || 0;
***************
*** 202,211 ****
this.html = html;
if (this.css) {
! this.doc.open();
! this.doc.write(this.html);
! this.doc.close();
var i;
! for (i=0;i<this.doc.images.length;i++) this.doc.images[i]._dynobj = this;
! for (i=0;i<this.doc.links.length;i++) this.doc.links[i]._dynobj = this;
}
}
--- 224,234 ----
this.html = html;
if (this.css) {
! var doc = (this._blkBoardElm)? this._blkBoardElm.document:this.doc;
! doc.open();
! doc.write(this.html);
! doc.close();
var i;
! for (i=0;i<doc.images.length;i++) doc.images[i]._dynobj = this;
! for (i=0;i<doc.links.length;i++) doc.links[i]._dynobj = this;
}
}
***************
*** 213,217 ****
};
p.setTextSelectable=function(b) {
! this._textSelectable = b
this.addEventListener({
onmousemove : function(e) {
--- 236,240 ----
};
p.setTextSelectable=function(b) {
! this._textSelectable = b;
this.addEventListener({
onmousemove : function(e) {
Index: dynlayer_opera.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/dynlayer_opera.js,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** dynlayer_opera.js 26 Mar 2003 02:22:31 -0000 1.5
--- dynlayer_opera.js 30 Mar 2003 17:13:19 -0000 1.6
***************
*** 41,44 ****
--- 41,45 ----
dlyr.elm._dynobj = dlyr;
dlyr._dyndoc = dlyr.parent._dyndoc;
+ if(dlyr._blkBoardElm) dlyr._blkBoardElm = (divs)? divs[dlyr.id+'_blkboard'] : dlyr.parent.doc.getElementById(dlyr.id+'_blkboard');
if (dlyr.html!=null && dlyr.html!='' && (dlyr.w==null || dlyr.h==null)) {
***************
*** 57,60 ****
--- 58,70 ----
if (dlyr._hasKeyEvents) dlyr.captureKeyEvents();
};
+ p.enableBlackboard = function(){
+ if (!this._created) this._blkBoardElm=true;
+ else if(!this._blkBoardElm){
+ var h='',elm = this.elm;
+ if(this.html!=null) h=this.html;
+ elm.insertAdjacentHTML("beforeEnd",'<div id="'+this.id+'_blkboard">'+h+'</div>');
+ this._blkBoardElm = elm.children[elm.children.length-1];
+ }
+ };
p.setLocation=function(x,y) {
var cx = (x!=null && x!=this.x);
***************
*** 85,94 ****
if (html!=this.html) {
this.html = html;
! if (this.css) this.elm.innerHTML = html;
}
if(this._hasContentEvents) this.invokeEvent('contentchange');
};
p.setTextSelectable=function(b) {
! this._textSelectable = b
if (this.elm) this.elm.onselectstart = b? dynapi.functions.Allow : dynapi.functions.Deny;
if (!b) this.setCursor('default');
--- 95,107 ----
if (html!=this.html) {
this.html = html;
! if (this.css) {
! var elm = (this._blkBoardElm)? this._blkBoardElm:this.elm;
! elm.innerHTML = html;
! }
}
if(this._hasContentEvents) this.invokeEvent('contentchange');
};
p.setTextSelectable=function(b) {
! this._textSelectable = b;
if (this.elm) this.elm.onselectstart = b? dynapi.functions.Allow : dynapi.functions.Deny;
if (!b) this.setCursor('default');
Index: event.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/event.js,v
retrieving revision 1.5
retrieving revision 1.6
diff -C2 -r1.5 -r1.6
*** event.js 26 Mar 2003 02:22:31 -0000 1.5
--- event.js 30 Mar 2003 17:13:20 -0000 1.6
***************
*** 27,31 ****
this.DynObject();
this._listeners = [];
! }
EventObject._SubClass={};
--- 27,31 ----
this.DynObject();
this._listeners = [];
! };
EventObject._SubClass={};
***************
*** 49,58 ****
else this._hasMouseEvents = true;
}
! if (this.captureKeyEvents) {
! if (this._created && !this._hasKeyEvents && (el.onkeydown || el.onkeyup || el.keypress)) {
! this.captureKeyEvents();
! }
! else this._hasKeyEvents = true;
! }
}
};
--- 49,54 ----
else this._hasMouseEvents = true;
}
! if (this.captureKeyEvents)
! if (this._created && !this._hasKeyEvents && (el.onkeydown || el.onkeyup || el.onkeypress)) this.captureKeyEvents();
}
};
***************
*** 97,101 ****
var cls=EventObject._SubClass;
if(typeof(fn)=='function') cls[ek]=fn;
! else if(!fn && cls[ek]) delete(cls[ek])
};
--- 93,97 ----
var cls=EventObject._SubClass;
if(typeof(fn)=='function') cls[ek]=fn;
! else if(!fn && cls[ek]) delete cls[ek];
};
***************
*** 134,137 ****
--- 130,134 ----
if (c._saveAnchor) {
c.setAnchor(c._saveAnchor);
+ c._saveAnchor = null;
delete c._saveAnchor;
}
***************
*** 179,183 ****
p._create = p._createInLine = p._createInserted = p._remove = p._delete = p._destroy = dynapi.functions.Null;
! p.getChildren = function() {return this.children}
p.getAllChildren = function() {
var ret = [];
--- 176,180 ----
p._create = p._createInLine = p._createInserted = p._remove = p._delete = p._destroy = dynapi.functions.Null;
! p.getChildren = function() {return this.children};
p.getAllChildren = function() {
var ret = [];
***************
*** 189,193 ****
for(var j in temp) ret[j] = temp[j];
}
! return ret
};
p.getParents = function(l) {
--- 186,190 ----
for(var j in temp) ret[j] = temp[j];
}
! return ret;
};
p.getParents = function(l) {
***************
*** 306,311 ****
--- 303,312 ----
if(padX) {x=(x)? x:0;x+=padX}
if(padY) {y=(y)? y:0;y+=padY}
+
+ var tmp=dlyr._hasAnchor;
+ dlyr._hasAnchor=false; // ignore anchor updates of this layer
if(x!=null||y!=null) dlyr.setLocation(x,y);
if(w!=null||h!=null) dlyr.setSize(w,h);
+ dlyr._hasAnchor = tmp; // useful for preventing stack overflow
};
p._updateAnchors = function() {
Index: mouse_dom.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/mouse_dom.js,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** mouse_dom.js 25 Feb 2003 21:38:20 -0000 1.2
--- mouse_dom.js 30 Mar 2003 17:13:20 -0000 1.3
***************
*** 125,128 ****
};
! function main() { dynapi.document._mouseEvent = new MouseEvent(dynapi.document);}
if (!dynapi.loaded) main();
--- 125,130 ----
};
! function main() {
! dynapi.document._mouseEvent = new MouseEvent(dynapi.document);
! };
if (!dynapi.loaded) main();
Index: mouse_ie.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/mouse_ie.js,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -r1.2 -r1.3
*** mouse_ie.js 25 Feb 2003 21:38:20 -0000 1.2
--- mouse_ie.js 30 Mar 2003 17:13:20 -0000 1.3
***************
*** 116,119 ****
};
! function main() { dynapi.document._mouseEvent = new MouseEvent(dynapi.document); }
if (!dynapi.loaded) main();
--- 116,121 ----
};
! function main() {
! dynapi.document._mouseEvent = new MouseEvent(dynapi.document);
! };
if (!dynapi.loaded) main();
Index: mouse_ns4.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi3x/src/api/mouse_ns4.js,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -r1.3 -r1.4
*** mouse_ns4.js 25 Feb 2003 21:45:17 -0000 1.3
--- mouse_ns4.js 30 Mar 2003 17:13:20 -0000 1.4
***************
*** 1 ****
! /*
DynAPI Distribution
MouseEvent Class
The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
requires: dynapi.api.DynDocument
*/
function MouseEvent(dyndoc) {
this.DynEvent = DynEvent;
this.DynEvent();
this.bubble = true;
this._browserEvent = null;
this._relative = null;
this._dyndoc = dyndoc;
};
var p = dynapi.setPrototype('MouseEvent','DynEvent');
p.getX = function() {return this.x};
p.getY = function() {return this.y};
p.getPageX = function() {return this.pageX};
p.getPageY = function() {return this.pageY};
p.trapMouseUp = dynapi.functions.Null;
p.getRelative = function() {return this._relative};
p.getButton = function() {
if (!this._browserEvent) return "left";
var b = this._browserEvent.which;
if (b==2) return "middle";
if (b==3) return "right";
else return "left";
};
p._init = function(type,e,src) {
this.type = type;
this._browserEvent = e;
this.origin = src;
this.bubbleChild = null;
this.pageX = e.pageX-this._dyndoc.frame.pageXOffset;
this.pageY = e.pageY-this._dyndoc.frame.pageYOffset;
if (e.target._dynobj == src) {
this.x = e.layerX;
this.y = e.layerY;
}
else {
this.x = e.pageX - (src.pageX||0);
this.y = e.pageY - (src.pageY||0);
}
this.defaultValue = true;
this.bubble = true;
};
p._invoke = function() {
var o = this.origin;
//if (this.type=='mousedown' && o._textSelectable==false) this.defaultValue = false;
o.invokeEvent(this.type,this);
// synthetic click event
if (this.type=='mouseup') {
this._init('click',this._browserEvent,o);
this._invoke();
// synthetic dblclick event
if (dynapi.ua.other);
}
};
function main() {
dynapi.document._mouseEvent = new MouseEvent(dynapi.document);
}
if (!dynapi.loaded) main();
MouseEvent._docMoveHandler = function(e) {
var dyndoc = this._dynobj;
var src = e.target;
var dynobj = src._dynobj || src._dynobji;
if (!dynobj) {
dyndoc._moveOver = null;
return true;
}
var me = dyndoc._mouseEvent;
//dynapi.debug.status('move '+dynobj.name+' '+e.layerX+' '+e.layerY);
me._init('mousemove',e,dynobj);
me._invoke();
var defaultVal = me.defaultValue;
// synthetic mouseover/out events
if (dyndoc._moveOver!=dynobj) {
var rel = dyndoc._moveOver;
var bubble = true;
// mouse out
if (rel) { // && !rel.isChildOf(dynobj)
// during mouseout e.getRelated() is which elm it is moving to
//bubble = !dynobj.isChildOf(rel);
me._init('mouseout',e,rel);
me._relative = dynobj;
me._invoke();
//MouseEvent._generateEvent('mouseout',e,me,rel,dynobj,bubble); // out occurs before over
}
// mouse over
dyndoc._moveOver = dynobj;
//if (rel) var bubble = !rel.isChildOf(dynobj);
//var bubble = !dynobj.isChildOf(rel);
// during mouseover e.getRelated() is which elm it is moving to
me._init('mouseover',e,dynobj);
me._relative = rel;
me._invoke();
//MouseEvent._generateEvent('mouseover',e,me,dynobj,rel);
}
return defaultVal;
}
MouseEvent._eventHandler = function(e) {
var src = e.target;
var dynobj = this._dynobj;
if (!dynobj) return true;
var dyndoc = dynobj._dyndoc;
var me = dyndoc._mouseEvent;
me._wasHandled = false;
var r = routeEvent(e);
if (!me._wasHandled) {
//if (src._dynobji) { // src._dynobji == dynlayer.doc.images[x]._dynobji
// me._init(e.type,e,src._dynobji);
// if (e.type=='mousedown') me.defaultValue = false;
// me._invoke();
//}
// else
if (src._dynobj) { // src._dynobj == dynlayer.doc._dynobj,dynlayer.doc.images[x]._dynobj,dynlayer.doc.links[x]._dynobj
me._init(e.type,e,src._dynobj);
me._invoke();
}
else { // dynobj == dynlayer.elm._dynobj
me._init(e.type,e,dynobj);
me._invoke();
}
me._wasHandled = true;
}
dynobj = (src._dynobj)? src._dynobj:dynobj;
// prevent image dragging
if (e.type=='mousedown' && (e.target+'')=='[object Image]') {
me.defaultValue=false;
}
// disable text select
if (e.type=='mousedown' && dynobj._textSelectable==false) {
// ns4 will disable hyperlinks. this is my workaround
me.defaultValue =(e.target.href)? null:false;
}
return me.defaultValue;
};
DynElement.prototype.captureMouseEvents = function() {
this._hasMouseEvents = true;
var elm = this.elm;
if (elm) {
elm.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.DBLCLICK);
elm.onmousedown = elm.onmouseup = elm.ondblclick = MouseEvent._eventHandler;
if (this.getClassName()=='DynDocument') { // move/over/out events are generated from the document
this.doc.captureEvents(Event.MOUSEMOVE);
elm.onmousemove = MouseEvent._docMoveHandler;
}
elm._dynobj = this;
this.doc._dynobj = this;
for (var i=0;i<this.doc.images.length;i++) this.doc.images[i]._dynobj=this; // was _dynobji
for (var i=0;i<this.doc.links.length;i++) this.doc.links[i]._dynobj=this;
}
};
DynElement.prototype.releaseMouseEvents = function() {
this._hasMouseEvents = false;
var elm = this.elm;
if (elm) {
elm.releaseEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.DBLCLICK);
elm.onmousedown = elm.onmouseup = elm.ondblclick = null;
if (this.getClassName()=='DynDocument') {
elm.releaseEvents(Event.MOUSEMOVE);
elm.onmousemove = null;
}
elm._dynobj = null;
this.doc._dynobj = null;
for (var i=0;i<this.doc.images.length;i++) this.doc.images[i]._dynobji=null;
for (var i=0;i<this.doc.links.length;i++) this.doc.links[i]._dynobj=null;
}
};
\ No newline at end of file
--- 1 ----
! /*
DynAPI Distribution
MouseEvent Class
The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
requires: dynapi.api.DynDocument
*/
function MouseEvent(dyndoc) {
this.DynEvent = DynEvent;
this.DynEvent();
this.bubble = true;
this._browserEvent = null;
this._relative = null;
this._dyndoc = dyndoc;
};
var p = dynapi.setPrototype('MouseEvent','DynEvent');
p.getX = function() {return this.x};
p.getY = function() {return this.y};
p.getPageX = function() {return this.pageX};
p.getPageY = function() {return this.pageY};
p.trapMouseUp = dynapi.functions.Null;
p.getRelative = function() {return this._relative};
p.getButton = function() {
if (!this._browserEvent) return "left";
var b = this._browserEvent.which;
if (b==2) return "middle";
if (b==3) return "right";
else return "left";
};
p._init = function(type,e,src) {
this.type = type;
this._browserEvent = e;
this.origin = src;
this.bubbleChild = null;
this.pageX = e.pageX-this._dyndoc.frame.pageXOffset;
this.pageY = e.pageY-this._dyndoc.frame.pageYOffset;
if (e.target._dynobj == src) {
this.x = e.layerX;
this.y = e.layerY;
}
else {
this.x = e.pageX - (src.pageX||0);
this.y = e.pageY - (src.pageY||0);
}
this.defaultValue = true;
this.bubble = true;
};
p._invoke = function() {
var o = this.origin;
//if (this.type=='mousedown' && o._textSelectable==false) this.defaultValue = false;
o.invokeEvent(this.type,this);
// synthetic click event
if (this.type=='mouseup') {
this._init('click',this._browserEvent,o);
this._invoke();
// synthetic dblclick event
if (dynapi.ua.other);
}
};
function main() {
dynapi.document._mouseEvent = new MouseEvent(dynapi.document);
};
if (!dynapi.loaded) main();
MouseEvent._docMoveHandler = function(e) {
var dyndoc = this._dynobj;
var src = e.target;
var dynobj = src._dynobj || src._dynobji;
if (!dynobj) {
dyndoc._moveOver = null;
return true;
}
var me = dyndoc._mouseEvent;
//dynapi.debug.status('move '+dynobj.name+' '+e.layerX+' '+e.layerY);
me._init('mousemove',e,dynobj);
me._invoke();
var defaultVal = me.defaultValue;
// synthetic mouseover/out events
if (dyndoc._moveOver!=dynobj) {
var rel = dyndoc._moveOver;
var bubble = true;
// mouse out
if (rel) { // && !rel.isChildOf(dynobj)
// during mouseout e.getRelated() is which elm it is moving to
//bubble = !dynobj.isChildOf(rel);
me._init('mouseout',e,rel);
me._relative = dynobj;
me._invoke();
//MouseEvent._generateEvent('mouseout',e,me,rel,dynobj,bubble); // out occurs before over
}
// mouse over
dyndoc._moveOver = dynobj;
//if (rel) var bubble = !rel.isChildOf(dynobj);
//var bubble = !dynobj.isChildOf(rel);
// during mouseover e.getRelated() is which elm it is moving to
me._init('mouseover',e,dynobj);
me._relative = rel;
me._invoke();
//MouseEvent._generateEvent('mouseover',e,me,dynobj,rel);
}
return defaultVal;
};
MouseEvent._eventHandler = function(e) {
var src = e.target;
var dynobj = this._dynobj;
if (!dynobj) return true;
var dyndoc = dynobj._dyndoc;
var me = dyndoc._mouseEvent;
me._wasHandled = false;
var r = routeEvent(e);
if (!me._wasHandled) {
//if (src._dynobji) { // src._dynobji == dynlayer.doc.images[x]._dynobji
// me._init(e.type,e,src._dynobji);
// if (e.type=='mousedown') me.defaultValue = false;
// me._invoke();
//}
// else
if (src._dynobj) { // src._dynobj == dynlayer.doc._dynobj,dynlayer.doc.images[x]._dynobj,dynlayer.doc.links[x]._dynobj
me._init(e.type,e,src._dynobj);
me._invoke();
}
else { // dynobj == dynlayer.elm._dynobj
me._init(e.type,e,dynobj);
me._invoke();
}
me._wasHandled = true;
}
dynobj = (src._dynobj)? src._dynobj:dynobj;
// prevent image dragging
if (e.type=='mousedown' && (e.target+'')=='[object Image]') {
me.defaultValue=false;
}
// disable text select
if (e.type=='mousedown' && dynobj._textSelectable==false) {
// ns4 will disable hyperlinks. this is my workaround
me.defaultValue =(e.target.href)? null:false;
}
return me.defaultValue;
};
DynElement.prototype.captureMouseEvents = function() {
this._hasMouseEvents = true;
var elm = this.elm;
if (elm) {
elm.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.DBLCLICK);
elm.onmousedown = elm.onmouseup = elm.ondblclick = MouseEvent._eventHandler;
if (this.getClassName()=='DynDocument') { // move/over/out events are generated from the document
this.doc.captureEvents(Event.MOUSEMOVE);
elm.onmousemove = MouseEvent._docMoveHandler;
}
elm._dynobj = this;
this.doc._dynobj = this;
for (var i=0;i<this.doc.images.length;i++) this.doc.images[i]._dynobj=this; // was _dynobji
for (var i=0;i<this.doc.links.length;i++) this.doc.links[i]._dynobj=this;
}
};
DynElement.prototype.releaseMouseEvents = function() {
this._hasMouseEvents = false;
var elm = this.elm;
if (elm) {
elm.releaseEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.DBLCLICK);
elm.onmousedown = elm.onmouseup = elm.ondblclick = null;
if (this.getClassName()=='DynDocument') {
elm.releaseEvents(Event.MOUSEMOVE);
elm.onmousemove = null;
}
elm._dynobj = null;
this.doc._dynobj = null;
for (var i=0;i<this.doc.images.length;i++) this.doc.images[i]._dynobji=null;
for (var i=0;i<this.doc.links.length;i++) this.doc.links[i]._dynobj=null;
}
};
\ No newline at end of file
|