diff options
Diffstat (limited to 'js/tools/SelectionTool.js')
-rw-r--r-- | js/tools/SelectionTool.js | 40 |
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; |