aboutsummaryrefslogtreecommitdiff
path: root/js/tools/SelectionTool.js
diff options
context:
space:
mode:
authorhwc4872012-02-06 15:50:07 -0800
committerhwc4872012-02-06 15:50:07 -0800
commit9d122c5f1632b1225a543049913c36b9a030110c (patch)
treee13ca71c7129a32c4aaed072c2edf4a8de4dd52d /js/tools/SelectionTool.js
parent1a8c017e37c5c0dec445ebafad634ef997fcd1bb (diff)
downloadninja-9d122c5f1632b1225a543049913c36b9a030110c.tar.gz
Enhanced the overlap test for the selection tool marquee select.
Diffstat (limited to 'js/tools/SelectionTool.js')
-rw-r--r--js/tools/SelectionTool.js40
1 files changed, 33 insertions, 7 deletions
diff --git a/js/tools/SelectionTool.js b/js/tools/SelectionTool.js
index 862b2e88..48548271 100644
--- a/js/tools/SelectionTool.js
+++ b/js/tools/SelectionTool.js
@@ -135,18 +135,16 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
135 var box = []; 135 var box = [];
136 selectedItems = []; 136 selectedItems = [];
137 137
138 box[0] = this.downPoint.x - this.application.ninja.stage.documentOffsetLeft + this.application.ninja.stage.scrollLeft; 138 box[0] = this.downPoint.x;
139 box[1] = this.downPoint.y - this.application.ninja.stage.documentOffsetTop + this.application.ninja.stage.scrollTop; 139 box[1] = this.downPoint.y;
140 box[2] = box[0] + (point.x - this.downPoint.x); 140 box[2] = point.x;
141 box[3] = box[1] + (point.y - this.downPoint.y); 141 box[3] = point.y;
142 box = this.absoluteRectangle(box[0], box[1],box[2],box[3]);
143
144 142
145 //selectionManagerModule.selectionManager.marqueeSelection(box); 143 //selectionManagerModule.selectionManager.marqueeSelection(box);
146 var childNodes = this.application.ninja.currentDocument.documentRoot.childNodes; 144 var childNodes = this.application.ninja.currentDocument.documentRoot.childNodes;
147 childNodes = Array.prototype.slice.call(childNodes, 0); 145 childNodes = Array.prototype.slice.call(childNodes, 0);
148 childNodes.forEach(function(item) { 146 childNodes.forEach(function(item) {
149 if(item.nodeType == 1 && SelectionTool._simpleCollisionDetection(item, box)) { 147 if(item.nodeType == 1 && SelectionTool._complicatedCollisionDetection(item, box)) {
150 selectedItems.push(item); 148 selectedItems.push(item);
151 } 149 }
152 }); 150 });
@@ -803,6 +801,34 @@ var SelectionTool = exports.SelectionTool = Montage.create(ModifierToolBase, {
803 }, 801 },
804 802
805 // TODO : Use the new element mediator to get element offsets 803 // TODO : Use the new element mediator to get element offsets
804 _complicatedCollisionDetection:
805 {
806 value: function(elt, box)
807 {
808 var left, top, width, height;
809
810 left = box[0];
811 width = box[2] - left;
812 if (width < 0)
813 {
814 left = box[2];
815 width = -width;
816 }
817 top = box[1];
818 height = box[3] - top;
819 if (height < 0)
820 {
821 top = box[3];
822 height = -height;
823 }
824
825 var rtnVal = MathUtils.rectsOverlap( [left,top], width, height, elt );
826
827 return rtnVal;
828 }
829 },
830
831 // TODO : Use the new element mediator to get element offsets
806 _simpleCollisionDetection: { 832 _simpleCollisionDetection: {
807 value: function(ele, box){ 833 value: function(ele, box){
808 var left1, left2, right1, right2, top1, top2, bottom1, bottom2; 834 var left1, left2, right1, right2, top1, top2, bottom1, bottom2;