From: Jordi M. <do...@us...> - 2002-01-04 14:25:24
|
Update of /cvsroot/dynapi/dynapi/src/lib/dynapi/event In directory usw-pr-cvs1:/tmp/cvs-serv19253/src/lib/dynapi/event Modified Files: dragevent.js keyboard.js listeners.js mouse.js Log Message: Many bugfixes and improvements. Index: dragevent.js =================================================================== RCS file: /cvsroot/dynapi/dynapi/src/lib/dynapi/event/dragevent.js,v retrieving revision 1.14 retrieving revision 1.15 diff -C2 -r1.14 -r1.15 *** dragevent.js 2001/11/24 23:26:32 1.14 --- dragevent.js 2002/01/04 14:25:18 1.15 *************** *** 23,27 **** DragEvent.lyrListener=new EventListener(); DragEvent.lyrListener.onmousedown=function(e) { - //fix to allow forms in draggable layers to select text. if (is.def&&e.orig) { --- 23,26 ---- *************** *** 50,54 **** de.parentPageY=lyr.parent.getPageY(); }; - DragEvent.docListener=new EventListener(); DragEvent.docListener.onmousemove=function(e) { --- 49,52 ---- *************** *** 127,135 **** //refresh screen to display form objects in draggable layers if(lyr.doc.forms.length>0){ ! if (is.ie && is.platform=="mac") { ! document.body.className = document.body.className; ! }else if (is.ns4 && is.platform=="win32") { ! document.bgColor = document.bgColor; ! } } --- 125,130 ---- //refresh screen to display form objects in draggable layers if(lyr.doc.forms.length>0){ ! if (is.ie && is.platform=="mac") document.body.className = document.body.className; ! else if (is.ns4 && is.platform=="win32") document.bgColor = document.bgColor; } *************** *** 157,161 **** dlyr.addEventListener(DragEvent.lyrListener); var dyndoc=doc||DynAPI.document; ! if (dlyr.frame) dyndoc=dlyr.frame.lyrobj; dyndoc.addEventListener(DragEvent.docListener); dyndoc.dragEnabled=true; --- 152,156 ---- dlyr.addEventListener(DragEvent.lyrListener); var dyndoc=doc||DynAPI.document; ! if (dlyr.frame) dyndoc=dlyr.frame.lyrobj; dyndoc.addEventListener(DragEvent.docListener); dyndoc.dragEnabled=true; Index: keyboard.js =================================================================== RCS file: /cvsroot/dynapi/dynapi/src/lib/dynapi/event/keyboard.js,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -r1.12 -r1.13 *** keyboard.js 2001/10/28 21:29:33 1.12 --- keyboard.js 2002/01/04 14:25:18 1.13 *************** *** 29,37 **** if (is.ie) var e=dynobject.frame.event; else if (e.eventPhase!=3) return false; ! e.cancelBubble=true; } if(is.def) var realsrc = Methods.getContainerLayerOf(is.ie?e.srcElement:e.target)||dynobject; ! else if(is.ns4) var realsrc=e.target.lyrobj; ! if (!realsrc) return true; var evt=DynKeyEvent._e; evt.type=e.type; --- 29,39 ---- if (is.ie) var e=dynobject.frame.event; else if (e.eventPhase!=3) return false; ! e.cancelBubble=true; } if(is.def) var realsrc = Methods.getContainerLayerOf(is.ie?e.srcElement:e.target)||dynobject; ! else if(is.ns4) var realsrc=e.target.lyrobj||dynobject; ! ! if (!realsrc) { alert('Error in MouseEvents'); return true; } ! var evt=DynKeyEvent._e; evt.type=e.type; *************** *** 41,49 **** --- 43,54 ---- evt.which=(is.ns4)?e.which:e.keyCode; var curKey = String.fromCharCode(evt.which).toLowerCase(); + if (((curKey>='a')&&(curKey<='z'))||((curKey>='0')&&(curKey<='9'))) evt.charKey=curKey; else evt.charKey=null; + evt.ctrlKey=(is.ns4)?(e.modifiers & Event.CONTROL_MASK):(e.ctrlKey||e.ctrlLeft||e.keyCode==17); evt.shiftKey=(is.ns4)?(e.modifiers & Event.SHIFT_MASK):(e.shiftKey||e.shiftLeft||e.keyCode==16); evt.orig=e; + realsrc.invokeEvent(evt.type,evt); evt.bubbleEvent(); *************** *** 73,135 **** }; }; - DynLayer.prototype.captureKeyEvents=function() { - if(!this.elm) return; - if(is.def&&!is.ie) { - this.elm.addEventListener("keydown",DynKeyEvent.EventMethod,false) - this.elm.addEventListener("keyup",DynKeyEvent.EventMethod,false) - this.elm.addEventListener("keypress",DynKeyEvent.EventMethod,false) - } - else { - if (is.ns4) this.elm.captureEvents(Event.KEYPRESS | Event.KEYDOWN | Event.KEYUP); - this.elm.onkeypress=this.elm.onkeydown=this.elm.onkeyup=DynKeyEvent.EventMethod; - }; - }; - DynLayer.prototype.releaseKeyEvents=function() { - if(!this.elm) return; - if(is.def&&!is.ie) { - this.elm.removeEventListener("keydown",DynKeyEvent.EventMethod,false) - this.elm.removeEventListener("keyup",DynKeyEvent.EventMethod,false) - this.elm.removeEventListener("keypress",DynKeyEvent.EventMethod,false) - } - else { - if (is.ns4) this.elm.releaseEvents(Event.KEYPRESS | Event.KEYDOWN | Event.KEYUP); - this.elm.onkeypress=this.elm.onkeydown=this.elm.onkeyup=null; - }; - }; - - /* Overwrite methods to support key events. */ - DynObject.prototype.assignKeyEvents = function() { - if (this.hasEventListeners) this.captureKeyEvents(); - var l=this.children.length; - for (var i=0; i<l; i++) this.children[i].assignKeyEvents(); - }; - DynObject.prototype._OldK_addEventListener = DynObject.prototype.addEventListener; - DynObject.prototype.addEventListener = function(l) { - var r = this._OldK_addEventListener(l); - if(this.hasEventListeners && this.created) this.captureKeyEvents(); - return r; - }; - DynObject.prototype._OldK_removeEventListener = DynObject.prototype.removeEventListener; - DynObject.prototype.removeEventListener = function(l) { - var r = this._OldK_removeEventListener(l); - if(!this.hasEventListeners) this.releaseKeyEvents(); - return r; - }; - DynObject.prototype._OldK_removeAllEventListeners = DynObject.prototype.removeAllEventListeners; - DynObject.prototype.removeAllEventListeners = function() { - var r = this._OldK_removeAllEventListeners(); - this.releaseKeyEvents(); - return r; - }; - // DynLayer Specific - DynLayer.prototype._OldK_specificCreate = DynLayer.prototype.specificCreate; - DynLayer.prototype.specificCreate = function() { - this._OldK_specificCreate(); - this.assignKeyEvents(); - }; // DynDocument specific DynDocument.prototype._OldK_specificCreate = DynDocument.prototype.specificCreate; DynDocument.prototype.specificCreate = function() { this._OldK_specificCreate(); - this.assignKeyEvents(); }; --- 78,90 ---- }; }; // DynDocument specific DynDocument.prototype._OldK_specificCreate = DynDocument.prototype.specificCreate; DynDocument.prototype.specificCreate = function() { + this._OldK_specificCreate(); + this.captureKeyEvents(); + }; + DynDocument.prototype._OldK_specificRemove = DynDocument.prototype.specificRemove; + DynDocument.prototype.specificRemove = function() { + this.releaseKeyEvents(); this._OldK_specificCreate(); }; Index: listeners.js =================================================================== RCS file: /cvsroot/dynapi/dynapi/src/lib/dynapi/event/listeners.js,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -r1.7 -r1.8 *** listeners.js 2001/11/05 16:45:49 1.7 --- listeners.js 2002/01/04 14:25:18 1.8 *************** *** 5,9 **** The DynAPI Distribution is distributed under the terms of the GNU LGPL license. */ - DynEvent=function(type,src,target) { this.type=type; --- 5,8 ---- Index: mouse.js =================================================================== RCS file: /cvsroot/dynapi/dynapi/src/lib/dynapi/event/mouse.js,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -r1.23 -r1.24 *** mouse.js 2001/12/22 17:17:41 1.23 --- mouse.js 2002/01/04 14:25:18 1.24 *************** *** 55,59 **** // Get the real source for the event if(is.def) var realsrc = Methods.getContainerLayerOf(is.ie?e.srcElement:e.target) || dynobject ! else if(is.ns4) var realsrc=e.target.lyrobj||dynobject // Now 'realsrc' should point to the DynLayer object where the event initially was triggered --- 55,59 ---- // Get the real source for the event if(is.def) var realsrc = Methods.getContainerLayerOf(is.ie?e.srcElement:e.target) || dynobject ! else if(is.ns4) var realsrc=e.target.lyrobj || dynobject // Now 'realsrc' should point to the DynLayer object where the event initially was triggered *************** *** 74,91 **** // Step two: mouse coordinate properties if (is.ns4 && type=='mouseover') { ! // debugging for NS4 mouseover event ! evt.pageX=evt.pageX; ! evt.pageY=evt.pageY; ! evt.x=evt.pageX-evt.src.getPageX() ! evt.y=evt.pageY-evt.src.getPageY() } else { ! // standard DynAPI coordinate calculation ! evt.pageX=is.ie?e.x+document.body.scrollLeft:e.pageX; ! evt.pageY=is.ie?e.y+document.body.scrollTop:e.pageY; ! evt.x=is.ie?evt.pageX-evt.src.getPageX():e.layerX ! evt.y=is.ie?evt.pageY-evt.src.getPageY():e.layerY } - // Step three: mouse buttons var b=is.ie?e.button:e.which; --- 74,90 ---- // Step two: mouse coordinate properties if (is.ns4 && type=='mouseover') { ! // debugging for NS4 mouseover event ! evt.pageX=evt.pageX; ! evt.pageY=evt.pageY; ! evt.x=evt.pageX-evt.src.getPageX() ! evt.y=evt.pageY-evt.src.getPageY() } else { ! // standard DynAPI coordinate calculation ! evt.pageX=is.ie?e.x+document.body.scrollLeft:e.pageX; ! evt.pageY=is.ie?e.y+document.body.scrollTop:e.pageY; ! evt.x=is.ie?evt.pageX-evt.src.getPageX():e.layerX ! evt.y=is.ie?evt.pageY-evt.src.getPageY():e.layerY } // Step three: mouse buttons var b=is.ie?e.button:e.which; *************** *** 159,162 **** --- 158,163 ---- else { if(e.preventDefault && !evt.browserReturn) e.preventDefault(); + if (evt.type=='rtmouseup') document.oncontextmenu=evt.browserReturn ? null : DynAPI.FalseFunction; + else if (evt.type=='mousedown') document.onselectstart=evt.browserReturn ? null : DynAPI.FalseFunction; } // If Internet Explorer AND evt.browserReturn is false, *************** *** 168,173 **** if(!is.ie || evt.browserReturn==false) return evt.browserReturn; } ! ! // Extend DynDocument to capture its events DynDocument.prototype.captureMouseEvents = function() { --- 169,173 ---- if(!is.ie || evt.browserReturn==false) return evt.browserReturn; } ! DynAPI.FalseFunction = function() { return false } // Extend DynDocument to capture its events DynDocument.prototype.captureMouseEvents = function() { *************** *** 182,187 **** } else { ! if (is.ns4) this.doc.captureEvents(Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK | Event.DBLCLICK); ! this.doc.onmousemove=this.doc.onmousedown=this.doc.onmouseup=this.doc.onclick=this.doc.ondblclick=DynMouseEvent.EventMethod; } } --- 182,187 ---- } else { ! if (is.ns4) this.doc.captureEvents(Event.MOUSEMOVE | Event.MOUSEOVER | Event.MOUSEOUT | Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK | Event.DBLCLICK); ! this.doc.onmouseover=this.doc.onmouseout=this.doc.onmousemove=this.doc.onmousedown=this.doc.onmouseup=this.doc.onclick=this.doc.ondblclick=DynMouseEvent.EventMethod; } } *************** *** 196,279 **** this.doc.removeEventListener("dblclick",DynMouseEvent.EventMethod,false) } - else { - if (is.ns4) this.doc.releaseEvents(Event.MOUSEMOVE | Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK | Event.DBLCLICK); - this.doc.onmousemove=this.doc.onmousedown=this.doc.onmouseup=this.doc.onclick=this.doc.ondblclick=null - } - } - /* Extend DynLayer to capture mouse events upon layer creation (if needed) */ - DynLayer.prototype.captureMouseEvents = function() { - var elm=this.elm - if(!elm) return - if(is.def&&!is.ie) { - elm.addEventListener("mousemove",DynMouseEvent.EventMethod,false) - elm.addEventListener("mousedown",DynMouseEvent.EventMethod,false) - elm.addEventListener("mouseup",DynMouseEvent.EventMethod,false) - elm.addEventListener("mouseover",DynMouseEvent.EventMethod,false) - elm.addEventListener("mouseout",DynMouseEvent.EventMethod,false) - elm.addEventListener("click",DynMouseEvent.EventMethod,false) - elm.addEventListener("dblclick",DynMouseEvent.EventMethod,false) - } else { ! if (is.ns4) elm.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK | Event.DBLCLICK | Event.MOUSEMOVE); ! elm.onmousemove=elm.onmousedown=elm.onmouseup=elm.onmouseover=elm.onmouseout=elm.onclick=elm.ondblclick=DynMouseEvent.EventMethod } } - DynLayer.prototype.releaseMouseEvents=function() { - var elm=this.elm - if(!elm) return - if(is.def&&!is.ie) { - elm.removeEventListener("mousemove",DynMouseEvent.EventMethod,false) - elm.removeEventListener("mousedown",DynMouseEvent.EventMethod,false) - elm.removeEventListener("mouseup",DynMouseEvent.EventMethod,false) - elm.removeEventListener("mouseover",DynMouseEvent.EventMethod,false) - elm.removeEventListener("mouseout",DynMouseEvent.EventMethod,false) - elm.removeEventListener("click",DynMouseEvent.EventMethod,false) - elm.removeEventListener("dblclick",DynMouseEvent.EventMethod,false) - } - else { - if (is.ns4) elm.releaseEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK | Event.DBLCLICK | Event.MOUSEMOVE); - elm.onmousemove=elm.onmousedown=elm.onmouseup=elm.onclick=elm.ondblclick=null - } - } - - DynObject.prototype.assignMouseEvents = function() { - if (this.hasEventListeners) this.captureMouseEvents() - var l=this.children.length; - for (var i=0; i<l; i++) this.children[i].assignMouseEvents() - } - DynObject.prototype._OldM_addEventListener = DynObject.prototype.addEventListener - DynObject.prototype.addEventListener = function(l) { - var r = this._OldM_addEventListener(l) - if(this.hasEventListeners && this.created) this.captureMouseEvents() - return r - } - DynObject.prototype._OldM_removeEventListener = DynObject.prototype.removeEventListener - DynObject.prototype.removeEventListener = function(l) { - var r = this._OldM_removeEventListener(l) - if(!this.hasEventListeners) this.releaseMouseEvents() - return r - } - DynObject.prototype._OldM_removeAllEventListeners = DynObject.prototype.removeAllEventListeners - DynObject.prototype.removeAllEventListeners = function() { - var r = this._OldM_removeAllEventListeners() - this.releaseMouseEvents() - return r - } - // DynLayer Specific - DynLayer.prototype._OldM_specificCreate = DynLayer.prototype.specificCreate - DynLayer.prototype.specificCreate = function() { - this._OldM_specificCreate() - this.assignMouseEvents() - } // DynDocument Specific DynDocument.prototype._OldM_specificCreate = DynDocument.prototype.specificCreate DynDocument.prototype.specificCreate = function() { this._OldM_specificCreate() ! this.assignMouseEvents() } - // DynLayer Specific - DynLayer.prototype._mouse_setHTML=DynLayer.prototype.setHTML; - DynLayer.prototype.setHTML = function(s,noevt) { - this._mouse_setHTML(s,noevt); - if (is.ns4&&this.doc) this.captureMouseEvents(); - } \ No newline at end of file --- 196,213 ---- this.doc.removeEventListener("dblclick",DynMouseEvent.EventMethod,false) } else { ! if (is.ns4) this.doc.releaseEvents(Event.MOUSEMOVE | Event.MOUSEOVER | Event.MOUSEOUT | Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK | Event.DBLCLICK); ! this.doc.onmouseover=this.doc.onmouseout=this.doc.onmousemove=this.doc.onmousedown=this.doc.onmouseup=this.doc.onclick=this.doc.ondblclick=null } } // DynDocument Specific DynDocument.prototype._OldM_specificCreate = DynDocument.prototype.specificCreate DynDocument.prototype.specificCreate = function() { this._OldM_specificCreate() ! this.captureMouseEvents() ! } ! DynDocument.prototype._OldM_specificRemove = DynDocument.prototype.specificRemove ! DynDocument.prototype.specificRemove = function() { ! this.releaseMouseEvents() ! this._OldM_specificRemove() } |