diff options
Diffstat (limited to 'assets/javascripts/rectangles/util/mouse.js')
| -rw-r--r-- | assets/javascripts/rectangles/util/mouse.js | 37 |
1 files changed, 26 insertions, 11 deletions
diff --git a/assets/javascripts/rectangles/util/mouse.js b/assets/javascripts/rectangles/util/mouse.js index 87a68fc..3bd5876 100644 --- a/assets/javascripts/rectangles/util/mouse.js +++ b/assets/javascripts/rectangles/util/mouse.js @@ -24,10 +24,11 @@ function mouse (opt) { var base = this opt = defaults(opt, { - el: document, + el: null, down: null, move: null, drag: null, + enter: null, up: null, rightclick: null, propagate: false, @@ -46,33 +47,42 @@ function mouse (opt) { opt.down && base.tube.on("down", opt.down) opt.move && base.tube.on("move", opt.move) opt.drag && base.tube.on("drag", opt.drag) + opt.enter && base.tube.on("enter", opt.enter) opt.up && base.tube.on("up", opt.up) opt.rightclick && base.tube.on("rightclick", opt.rightclick) - var offset = opt.el.getBoundingClientRect() + var offset = opt.el ? opt.el.getBoundingClientRect() : null base.init = function (){ base.bind() } base.bind = function(){ - opt.el.addEventListener("mousedown", base.mousedown) + if (opt.el) { + opt.el.addEventListener("mousedown", base.mousedown) + opt.el.addEventListener("contextmenu", base.contextmenu) + } window.addEventListener("mousemove", base.mousemove) window.addEventListener("mouseup", base.mouseup) - opt.el.addEventListener("contextmenu", base.contextmenu) + } + base.bind_el = function(el){ + el.addEventListener("mousedown", base.mousedown) + // todo.. need a way to remove this event potentially? } function positionFromMouse(e) { - var mx = offset.left - e.pageX - var my = e.pageY - offset.top - - return new vec2(mx, my) + if (offset) { + return new vec2(offset.left - e.pageX, e.pageY - offset.top) + } + else { + return new vec2(-e.pageX, e.pageY) + } } base.mousedown = function(e){ e.stopPropagation() - - offset = opt.el.getBoundingClientRect() + + offset = this.getBoundingClientRect() var pos = positionFromMouse(e) @@ -85,7 +95,7 @@ function mouse (opt) { base.mousemove = function(e){ e.stopPropagation() - if (! offset) return; + if (! offset) return var pos = positionFromMouse(e) @@ -106,6 +116,11 @@ function mouse (opt) { base.tube("move", e, base.cursor) } } + base.mouseenter = function(e, el){ + if (! offset) return + if (! base.down) return + base.tube("enter", e, el, base.cursor) + } base.mouseup = function(e){ var pos, new_cursor |
