Update of /cvsroot/dynapi/dynapi/src/lib/dynapi/event
In directory usw-pr-cvs1:/tmp/cvs-serv11661

Modified Files:
        keyboard.js 
Log Message:
KeyEvents should now bubble

Index: keyboard.js
===================================================================
RCS file: /cvsroot/dynapi/dynapi/src/lib/dynapi/event/keyboard.js,v
retrieving revision 1.1
retrieving revision 1.2
diff -C2 -r1.1 -r1.2
*** keyboard.js 2001/03/25 06:04:17     1.1
--- keyboard.js 2001/03/31 20:00:56     1.2
***************
*** 12,15 ****
--- 12,16 ----
        this.DynEvent=DynEvent;
        this.DynEvent();
+       this.bubble=true;
  };
  DynKeyEvent.prototype=new DynEvent();
***************
*** 17,39 ****
        return this.charKey
  };
  DynKeyEvent.EventMethod = function(e) {
        var dynobject=this.lyrobj;
        if(is.def) {
-               // We won't receive the event in IE. We have to go and get it from the 
frame
                if (is.ie) var e=dynobject.frame.event;
-               // Netscape 6 and alikes
                else if (e.eventPhase!=3) return;
!               // Both NS6/Moz and IE
!                 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
! 
!       // Init event object
!       var type = e.type
        var evt=DynKeyEvent._e
- 
-       // Set properties
        evt.src=realsrc;
        evt.which=(is.ns4)?e.which:e.keyCode;
--- 18,39 ----
        return this.charKey
  };
+ DynKeyEvent.prototype.bubbleEvent=function() {
+       if (!this.bubble||this.src.isDynDocument||this.src.parent==null) return;
+       this.src=this.src.parent;
+       this.src.invokeEvent(this.type,this);
+       this.bubbleEvent();
+       return;
+ };
  DynKeyEvent.EventMethod = function(e) {
        var dynobject=this.lyrobj;
        if(is.def) {
                if (is.ie) var e=dynobject.frame.event;
                else if (e.eventPhase!=3) return;
!         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
!       var type=e.type
        var evt=DynKeyEvent._e
        evt.src=realsrc;
        evt.which=(is.ns4)?e.which:e.keyCode;
***************
*** 42,54 ****
        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);
- 
-       // Pointer to original event object
        evt.orig=e;
! 
!       // Invoke event
!         realsrc.invokeEvent(type,evt);
! 
!       // Return to browser
!         return e.browserReturn
  };
  DynKeyEvent._e=new DynKeyEvent();
--- 42,49 ----
        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(type,evt);
!       evt.bubbleEvent();
!     return e.browserReturn
  };
  DynKeyEvent._e=new DynKeyEvent();
***************
*** 76,81 ****
  }
  DynLayer.prototype.captureKeyEvents=function() {
!       var elm = this.elm
!       if(!elm) return
        if(is.def&&!is.ie) {
                this.elm.addEventListener("keydown",DynKeyEvent.EventMethod,false)
--- 71,75 ----
  }
  DynLayer.prototype.captureKeyEvents=function() {
!       if(!this.elm) return
        if(is.def&&!is.ie) {
                this.elm.addEventListener("keydown",DynKeyEvent.EventMethod,false)
***************
*** 89,94 ****
  }
  DynLayer.prototype.releaseKeyEvents=function() {
!       var elm = this.elm
!       if(!elm) return
        if(is.def&&!is.ie) {
                this.elm.removeEventListener("keydown",DynKeyEvent.EventMethod,false)
--- 83,87 ----
  }
  DynLayer.prototype.releaseKeyEvents=function() {
!       if(!this.elm) return
        if(is.def&&!is.ie) {
                this.elm.removeEventListener("keydown",DynKeyEvent.EventMethod,false)
***************
*** 101,107 ****
        }
  }
- /* Overwrite methods to support key events. No more addCodeToMethod */
  
! // Common
  DynObject.prototype.assignKeyEvents = function() {
        if (this.hasEventListeners) this.captureKeyEvents()
--- 94,99 ----
        }
  }
  
! /* Overwrite methods to support key events. */
  DynObject.prototype.assignKeyEvents = function() {
        if (this.hasEventListeners) this.captureKeyEvents()
***************
*** 139,141 ****
        this.assignKeyEvents()
  }
- // CH: removeAllEventListeners now happens in del() defined in listeners.js.
--- 131,132 ----


_______________________________________________
Dynapi-CVS mailing list
[EMAIL PROTECTED]
http://lists.sourceforge.net/lists/listinfo/dynapi-cvs

Reply via email to