From f0cfe83e3725f9a3928da97a6e3085e79cb25309 Mon Sep 17 00:00:00 2001 From: Andrew Dolgov Date: Mon, 18 Mar 2013 10:26:24 +0400 Subject: upgrade dojo to 1.8.3 (refs #570) --- lib/dijit/form/_ListMouseMixin.js.uncompressed.js | 79 +++++++++++++++++++++++ 1 file changed, 79 insertions(+) create mode 100644 lib/dijit/form/_ListMouseMixin.js.uncompressed.js (limited to 'lib/dijit/form/_ListMouseMixin.js.uncompressed.js') diff --git a/lib/dijit/form/_ListMouseMixin.js.uncompressed.js b/lib/dijit/form/_ListMouseMixin.js.uncompressed.js new file mode 100644 index 000000000..118f6fdfb --- /dev/null +++ b/lib/dijit/form/_ListMouseMixin.js.uncompressed.js @@ -0,0 +1,79 @@ +define("dijit/form/_ListMouseMixin", [ + "dojo/_base/declare", // declare + "dojo/mouse", + "dojo/on", + "dojo/touch", + "./_ListBase" +], function(declare, mouse, on, touch, _ListBase){ + +// module: +// dijit/form/_ListMouseMixin + +return declare( "dijit.form._ListMouseMixin", _ListBase, { + // summary: + // a Mixin to handle mouse or touch events for a focus-less menu + // Abstract methods that must be defined externally: + // + // - onClick: item was chosen (mousedown somewhere on the menu and mouseup somewhere on the menu) + // tags: + // private + + postCreate: function(){ + this.inherited(arguments); + + this.own(on(this.domNode, touch.press, function(evt){ evt.preventDefault(); })); // prevent focus shift on list scrollbar press + + this._listConnect(touch.press, "_onMouseDown"); + this._listConnect(touch.release, "_onMouseUp"); + this._listConnect(mouse.enter, "_onMouseOver"); + this._listConnect(mouse.leave, "_onMouseOut"); + }, + + _onMouseDown: function(/*Event*/ evt, /*DomNode*/ target){ + if(this._hoveredNode){ + this.onUnhover(this._hoveredNode); + this._hoveredNode = null; + } + this._isDragging = true; + this._setSelectedAttr(target); + }, + + _onMouseUp: function(/*Event*/ evt, /*DomNode*/ target){ + this._isDragging = false; + var selectedNode = this.selected; + var hoveredNode = this._hoveredNode; + if(selectedNode && target == selectedNode){ + this.onClick(selectedNode); + }else if(hoveredNode && target == hoveredNode){ // drag to select + this._setSelectedAttr(hoveredNode); + this.onClick(hoveredNode); + } + }, + + _onMouseOut: function(/*Event*/ evt, /*DomNode*/ target){ + if(this._hoveredNode){ + this.onUnhover(this._hoveredNode); + this._hoveredNode = null; + } + if(this._isDragging){ + this._cancelDrag = (new Date()).getTime() + 1000; // cancel in 1 second if no _onMouseOver fires + } + }, + + _onMouseOver: function(/*Event*/ evt, /*DomNode*/ target){ + if(this._cancelDrag){ + var time = (new Date()).getTime(); + if(time > this._cancelDrag){ + this._isDragging = false; + } + this._cancelDrag = null; + } + this._hoveredNode = target; + this.onHover(target); + if(this._isDragging){ + this._setSelectedAttr(target); + } + } +}); + +}); -- cgit v1.2.3