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 |