Update of /cvsroot/dynapi/dynapi/src/lib/dynapi/api
In directory usw-pr-cvs1:/tmp/cvs-serv29769
Modified Files:
events.js dynlayer.js
Log Message:
Yet a few more event+layer creation fixes.
Index: events.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi/src/lib/dynapi/api/events.js,v
retrieving revision 1.11
retrieving revision 1.12
diff -C2 -r1.11 -r1.12
*** events.js 2001/01/11 19:23:59 1.11
--- events.js 2001/01/16 18:18:14 1.12
***************
*** 2,5 ****
--- 2,6 ----
DynAPI Distribution
Event Classes
+ Modified: 2000.11.05
The DynAPI Distribution is distributed under the terms of the GNU LGPL license.
***************
*** 13,17 ****
DynEvent.prototype.getSource=function() {return this.src;};
DynEvent.prototype.getTarget=function() {return this.target;};
-
EventListener=function(target) {this.target=target;};
EventListener.prototype.handleEvent=function(type,e) {
--- 14,17 ----
***************
*** 22,26 ****
if (this["on"+type]) this["on"+type](e);
};
-
MouseEvent=function() {};
MouseEvent.prototype.getType=function() {return this.type;};
--- 22,25 ----
***************
*** 51,56 ****
var m = e.modifiers;
alt = (m==1 || m==3 || m==5 || m==7)?true:false;
! ctrl = (m==2 || m==3 || m==6 || m==7)?true:false;
! shft = (m==4 || m==5 || m==6 || m==7)?true:false;
}
else { }
--- 50,55 ----
var m = e.modifiers;
alt = (m==1 || m==3 || m==5 || m==7)?true:false;
! ctrl = (m==2 || m==3 || m==6 || m==7)?true:false;
! shft = (m==4 || m==5 || m==6 || m==7)?true:false;
}
else { }
***************
*** 67,79 ****
this.src.invokeEvent(this.type,this);
this.bubbleEvent();
! return;
};
! MouseEvent.prototype.getX=function() {return this.x;};
! MouseEvent.prototype.getY=function() {return this.y;};
! MouseEvent.prototype.getPageX=function() {return this.pageX;};
! MouseEvent.prototype.getPageY=function() {return this.pageY;};
! MouseEvent.prototype.setBubble=function(b) {this.bubble=b;};
! MouseEvent.prototype.cancelBrowserEvent=function(b) {this.browserReturn=false;};
!
DynLayer.prototype.captureMouseEvents=function() {
if (!this.eventListeners) this.eventListeners=[];
--- 66,77 ----
this.src.invokeEvent(this.type,this);
this.bubbleEvent();
! return
};
! MouseEvent.prototype.getX=function() {return this.x};
! MouseEvent.prototype.getY=function() {return this.y};
! MouseEvent.prototype.getPageX=function() {return this.pageX};
! MouseEvent.prototype.getPageY=function() {return this.pageY};
! MouseEvent.prototype.setBubble=function(b) {this.bubble=b};
! MouseEvent.prototype.cancelBrowserEvent=function(b) {this.browserReturn=false};
DynLayer.prototype.captureMouseEvents=function() {
if (!this.eventListeners) this.eventListeners=[];
***************
*** 82,92 ****
var elm=this.elm;
if (is.ns4) elm.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK |
Event.DBLCLICK);
!
elm.mousemove=elm.onmousedown=elm.onmouseup=elm.onmouseover=elm.onmouseout=elm.onclick=elm.ondblclick=DynLayer.prototype.EventMethod;
! if (is.ie5) elm.oncontextmenu=function() {
! return false;
! };
};
DynLayer.prototype.EventMethod = function(e) {
-
var dyndoc=this.lyrobj.dyndoc;
if (is.ie) {
--- 80,87 ----
var elm=this.elm;
if (is.ns4) elm.captureEvents(Event.MOUSEDOWN | Event.MOUSEUP | Event.CLICK |
Event.DBLCLICK);
!
elm.onmousedown=elm.onmouseup=elm.onmouseover=elm.onmouseout=elm.onclick=elm.ondblclick=DynLayer.prototype.EventMethod;
! if (is.ie5) this.elm.oncontextmenu=function() {return false};
};
DynLayer.prototype.EventMethod = function(e) {
var dyndoc=this.lyrobj.dyndoc;
if (is.ie) {
***************
*** 94,121 ****
e.cancelBubble=true;
if (e.type=="click" && DynAPI.wasDragging) {
- //e.cancelBubble=true; redundant
DynAPI.wasDragging=false;
return true;
}
! //if (e.type!="mouseout" && e.type!="mouseover") e.cancelBubble=true;
redundant
! if (e.type=="mouseout" && this.contains(e.toElement)) return true;
! if (e.type=="mouseover" && this.contains(e.fromElement)) return true;
}
!
! var realsrc=is.ie?e.srcElement:e.target
! var which=(is.ie||is.ns5)?e.button:e.which
!
/* Fix by ilMaestro:
In IE, search for parent div, if any, because it will have a reference to
the DynLayer */
for(;is.ie && !realsrc.lyrobj && realsrc.parentElement &&
realsrc.parentElement!=realsrc;realsrc=realsrc.parentElement);
! var src = realsrc.lyrobj||dyndoc
! //if (!src || src==dyndoc) {window.status=" --> "+realsrc.href; return true }
! var evt=dyndoc._e
! evt.setEvent(src,e)
! var type=evt.type
! //window.status = " ... "+src
! src.invokeEvent(type,evt)
! if (is.ns && (e.type=="mouseover" || e.type=="mouseout")) return false;
evt.bubbleEvent();
return evt.browserReturn;
--- 89,115 ----
e.cancelBubble=true;
if (e.type=="click" && DynAPI.wasDragging) {
DynAPI.wasDragging=false;
return true;
}
! if (e.type=="mouseout" && this.contains(e.toElement)) { return true };
! if (e.type=="mouseover" && this.contains(e.fromElement)) { return true
};
}
! var realsrc=is.ie?e.srcElement:e.target;
/* Fix by ilMaestro:
In IE, search for parent div, if any, because it will have a reference to
the DynLayer */
for(;is.ie && !realsrc.lyrobj && realsrc.parentElement &&
realsrc.parentElement!=realsrc;realsrc=realsrc.parentElement);
! var which=(is.ie||is.ns5)?e.button:e.which;
! var src=realsrc.lyrobj||dyndoc;
! if (!src) return true;
! var evt=dyndoc._e;
! evt.setEvent(src,e);
! var type=evt.type;
! src.invokeEvent(type,evt);
!
! /* Fix by ilMaestro: more accurate event bubbling criteria. Some more bubbling
check must be done
! inside invokeEvent (IE only) */
! if(is.ns && (e.type=="mouseover" || e.type=="mouseout")) return false;
!
evt.bubbleEvent();
return evt.browserReturn;
***************
*** 137,142 ****
DynLayer.prototype.invokeEvent=function(type,e) {
if (!this.hasEventListeners) return;
var orig=null;
! if (e && is.ns) {
orig=e.orig;
e.cancelBubble=false;
--- 131,141 ----
DynLayer.prototype.invokeEvent=function(type,e) {
if (!this.hasEventListeners) return;
+
+ /* Fix by Ilmaestro: more accurate event Bubbling criteria */
+ if (is.ie && type=='mouseover' && this.elm.contains(e.orig.fromElement))
+return;
+ if (is.ie && type=='mouseout' && this.elm.contains(e.orig.toElement)) return;
+
var orig=null;
! if (e && is.ns) {
orig=e.orig;
e.cancelBubble=false;
***************
*** 157,169 ****
this.eventListeners[i].handleEvent(type,e);
}
!
! if (is.ns && e) { // DCP: added && e fix
if (e.cancelBubble) return;
if (orig && orig.target.handleEvent && orig.target!=this.elm)
orig.target.handleEvent(type,orig);
! }
if (is.ns4 && is.platform=="other" && type=="mouseup")
this.invokeEvent("click",e);
};
!
! DynDocument.prototype._e=new MouseEvent();
DynDocument.prototype.captureMouseEvents=function() {
if (this.mouseEventsCaptured) return;
--- 156,171 ----
this.eventListeners[i].handleEvent(type,e);
}
! if (is.ns && e) {
if (e.cancelBubble) return;
if (orig && orig.target.handleEvent && orig.target!=this.elm)
orig.target.handleEvent(type,orig);
! }
if (is.ns4 && is.platform=="other" && type=="mouseup")
this.invokeEvent("click",e);
+ if (this.parentComponent) {
+ if (e) e.src=this.parentComponent;
+ else e=new DynEvent(type,this);
+ this.parentComponent.invokeEvent(type,e);
+ }
};
! DynDocument.prototype._e=new MouseEvent()
DynDocument.prototype.captureMouseEvents=function() {
if (this.mouseEventsCaptured) return;
***************
*** 173,186 ****
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=DynDocument.prototype.EventMethod;
! if (is.ie5) this.doc.oncontextmenu=function() {
! return false;
! }
};
! DynDocument.prototype.EventMethod=DynLayer.prototype.EventMethod;
DynDocument.prototype.releaseMouseEvents = function() {
this.mouseEventsCaptured = false;
! this.doc.onmousemove = this.doc.onmousedown = this.doc.onmouseup =
this.doc.onclick = this.doc.ondblclick = function(e) {
! return false;
! };
};
DynDocument.prototype.addEventListener=DynLayer.prototype.addEventListener;
--- 175,184 ----
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=DynDocument.prototype.EventMethod;
! if (is.ie5) this.doc.oncontextmenu=function(){ return false };
};
! DynDocument.prototype.EventMethod=DynLayer.prototype.EventMethod
DynDocument.prototype.releaseMouseEvents = function() {
this.mouseEventsCaptured = false;
! this.doc.onmousemove = this.doc.onmousedown = this.doc.onmouseup =
this.doc.onclick = this.doc.ondblclick = function(e) { return false };
};
DynDocument.prototype.addEventListener=DynLayer.prototype.addEventListener;
***************
*** 190,194 ****
if (!this.hasEventListeners) return;
var orig=null;
! if (e && is.ns) {
orig=e.orig;
e.cancelBubble=false;
--- 188,192 ----
if (!this.hasEventListeners) return;
var orig=null;
! if (e && is.ns) {
orig=e.orig;
e.cancelBubble=false;
***************
*** 209,218 ****
this.eventListeners[i].handleEvent(type,e);
}
! if (i!=0 || e) {
if (is.ns) {
if (e.cancelBubble) return;
if (orig && orig.target.handleEvent && !orig.target.URL)
orig.target.handleEvent(orig);
}
- }
if (is.ns4 && is.platform=="other" && type=="mouseup")
this.invokeEvent("click",e);
! };
--- 207,215 ----
this.eventListeners[i].handleEvent(type,e);
}
! if (i!=0 || e)
if (is.ns) {
if (e.cancelBubble) return;
if (orig && orig.target.handleEvent && !orig.target.URL)
orig.target.handleEvent(orig);
}
if (is.ns4 && is.platform=="other" && type=="mouseup")
this.invokeEvent("click",e);
! };
\ No newline at end of file
Index: dynlayer.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi/src/lib/dynapi/api/dynlayer.js,v
retrieving revision 1.13
retrieving revision 1.14
diff -C2 -r1.13 -r1.14
*** dynlayer.js 2001/01/11 19:23:59 1.13
--- dynlayer.js 2001/01/16 18:18:14 1.14
***************
*** 80,84 ****
}
}
! if (dlyr.z) dlyr.css.zIndex=dlyr.z;
dlyr.css.visibility=dlyr.visible? "inherit" : (is.ns4?"hide":"hidden");
if (dlyr.w!=null) dlyr.setWidth(dlyr.w, false);
--- 80,84 ----
}
}
! if (dlyr.z!=null) dlyr.css.zIndex=dlyr.z;
dlyr.css.visibility=dlyr.visible? "inherit" : (is.ns4?"hide":"hidden");
if (dlyr.w!=null) dlyr.setWidth(dlyr.w, false);
***************
*** 138,143 ****
if (is.ns5) for (i in dlyr.doc.images) dlyr.doc.images[i].lyrobj=dlyr.elm;
! /* ilmaestro: not neded anymore
! if (is.ie) for (i in dlyr.elm.all.tags("img"))
dlyr.elm.all.tags("img")[i].lyrobj=dlyr; */
};
DynLayer.assignChildren=function(dlyr) {
--- 138,143 ----
if (is.ns5) for (i in dlyr.doc.images) dlyr.doc.images[i].lyrobj=dlyr.elm;
! /* ilmaestro: not neded anymore */
! //if (is.ie) for (i in dlyr.elm.all.tags("img"))
dlyr.elm.all.tags("img")[i].lyrobj=dlyr;
};
DynLayer.assignChildren=function(dlyr) {
***************
*** 155,162 ****
}
child.invokeEvent("resize");
-
- if (child.hasEventListeners && is.ns4) dlyr.captureMouseEvents();
-
child.created=true;
child.invokeEvent('create');
}
--- 155,163 ----
}
child.invokeEvent("resize");
child.created=true;
+ if (child.hasEventListeners) child.captureMouseEvents();
+ // zIndex not working by placing the tag in the getOuterHTML method,
+therefore...
+ if (child.z!=null) child.css.zIndex=child.z;
+
child.invokeEvent('create');
}
***************
*** 211,215 ****
var child=arguments[a];
if (child.parent==this) {
! DynAPI.removeFromArray(this.children,child);
DynAPI.removeFromArray(this.dyndoc.all,child,true);
DynLayer.unassigned[child.id]=child;
--- 212,216 ----
var child=arguments[a];
if (child.parent==this) {
! DynAPI.removeFromArray(this.children,child);
DynAPI.removeFromArray(this.dyndoc.all,child,true);
DynLayer.unassigned[child.id]=child;
***************
*** 277,281 ****
else if (dlyr.w!=null && dlyr.h!=null);
s+=' clip="0,0,'+dlyr.w+','+dlyr.h+'"';
! if (dlyr.z) s+=' zIndex='+dlyr.z;
if (dlyr.bgImage!=null) s+=' background="'+dlyr.bgImage+'"';
if (dlyr.bgColor!=null) s+=' bgcolor="'+dlyr.bgColor+'"';
--- 278,283 ----
else if (dlyr.w!=null && dlyr.h!=null);
s+=' clip="0,0,'+dlyr.w+','+dlyr.h+'"';
! // not working. See assignChildren()
! // if (dlyr.z) s+=' z-Index='+dlyr.z;
if (dlyr.bgImage!=null) s+=' background="'+dlyr.bgImage+'"';
if (dlyr.bgColor!=null) s+=' bgcolor="'+dlyr.bgColor+'"';
***************
*** 297,303 ****
else if (dlyr.w!=null && dlyr.h!=null);
s+=' clip:rect(0px '+dlyr.w+'px '+dlyr.h+'px 0px);';
! if (dlyr.z) s+=' zIndex='+dlyr.z;
if (dlyr.bgImage!=null) s+=' background-image:url('+dlyr.bgImage+');'
// DCP : This works :)
! if (dlyr.bgColor!=null) s+=' background-color:'+dlyr.bgColor+';'
if (is.ie55 && dlyr.bgImage==null && dlyr.html==null) s+='
background-image:url(javascript:null);' // DCP : Fixes IE5.5 specific event problem
s+=' position:absolute;">';
--- 299,306 ----
else if (dlyr.w!=null && dlyr.h!=null);
s+=' clip:rect(0px '+dlyr.w+'px '+dlyr.h+'px 0px);';
! // not working. See assignChildren()
! //if (dlyr.z) s+=' zindex='+dlyr.z;
if (dlyr.bgImage!=null) s+=' background-image:url('+dlyr.bgImage+');'
// DCP : This works :)
! if (dlyr.bgColor!=null) s+=' background:'+dlyr.bgColor+';'
if (is.ie55 && dlyr.bgImage==null && dlyr.html==null) s+='
background-image:url(javascript:null);' // DCP : Fixes IE5.5 specific event problem
s+=' position:absolute;">';
***************
*** 435,443 ****
this.elm.appendChild(df);
for (var i in this.doc.images) this.doc.images[i].lyrobj=this.elm;
}
- /* else { // ilMaestro: not needed anymore
- for (var i in this.elm.all.tags("img"))
- this.elm.all.tags("img")[i].lyrobj=this;
- } */
if (noevt!=false) this.invokeEvent("load");
};
--- 438,445 ----
this.elm.appendChild(df);
for (var i in this.doc.images) this.doc.images[i].lyrobj=this.elm;
+ }
+ else {
+ //for (var i in this.elm.all.tags("img"))
+this.elm.all.tags("img")[i].lyrobj=this;
}
if (noevt!=false) this.invokeEvent("load");
};
_______________________________________________
Dynapi-CVS mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/dynapi-cvs