X-Git-Url: http://git.ithinksw.org/extjs.git/blobdiff_plain/0494b8d9b9bb03ab6c22b34dae81261e3cd7e3e6..7a654f8d43fdb43d78b63d90528bed6e86b608cc:/src/tree/ViewDragZone.js diff --git a/src/tree/ViewDragZone.js b/src/tree/ViewDragZone.js new file mode 100644 index 00000000..695a2f8e --- /dev/null +++ b/src/tree/ViewDragZone.js @@ -0,0 +1,42 @@ +Ext.define('Ext.tree.ViewDragZone', { + extend: 'Ext.view.DragZone', + + isPreventDrag: function(e, record) { + return (record.get('allowDrag') === false) || !!e.getTarget(this.view.expanderSelector); + }, + + afterRepair: function() { + var me = this, + view = me.view, + selectedRowCls = view.selectedItemCls, + records = me.dragData.records, + fly = Ext.fly; + + if (Ext.enableFx && me.repairHighlight) { + // Roll through all records and highlight all the ones we attempted to drag. + Ext.Array.forEach(records, function(record) { + // anonymous fns below, don't hoist up unless below is wrapped in + // a self-executing function passing in item. + var item = view.getNode(record); + + // We must remove the selected row class before animating, because + // the selected row class declares !important on its background-color. + fly(item.firstChild).highlight(me.repairHighlightColor, { + listeners: { + beforeanimate: function() { + if (view.isSelected(item)) { + fly(item).removeCls(selectedRowCls); + } + }, + afteranimate: function() { + if (view.isSelected(item)) { + fly(item).addCls(selectedRowCls); + } + } + } + }); + }); + } + me.dragging = false; + } +}); \ No newline at end of file