diff options
Diffstat (limited to 'js/controllers/selection-controller.js')
-rwxr-xr-x | js/controllers/selection-controller.js | 33 |
1 files changed, 17 insertions, 16 deletions
diff --git a/js/controllers/selection-controller.js b/js/controllers/selection-controller.js index 5665b09c..1092615a 100755 --- a/js/controllers/selection-controller.js +++ b/js/controllers/selection-controller.js | |||
@@ -81,10 +81,10 @@ exports.SelectionController = Montage.create(Component, { | |||
81 | 81 | ||
82 | handleSwitchDocument: { | 82 | handleSwitchDocument: { |
83 | value: function() { | 83 | value: function() { |
84 | if(this.application.ninja.documentController.activeDocument.currentView === "design"){ | 84 | // if(this.application.ninja.documentController.activeDocument.currentView === "design"){ |
85 | this._isDocument = this.application.ninja.selectedElements.length === 0; | 85 | this._isDocument = this.application.ninja.selectedElements.length === 0; |
86 | NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} ); | 86 | NJevent("selectionChange", {"elements": this.application.ninja.selectedElements, "isDocument": this._isDocument} ); |
87 | } | 87 | // } |
88 | } | 88 | } |
89 | }, | 89 | }, |
90 | 90 | ||
@@ -112,12 +112,12 @@ exports.SelectionController = Montage.create(Component, { | |||
112 | 112 | ||
113 | handleSelectAll: { | 113 | handleSelectAll: { |
114 | value: function(event) { | 114 | value: function(event) { |
115 | var selected = [], childNodes = []; | 115 | var selected = [], childNodes = [], self = this; |
116 | 116 | ||
117 | childNodes = this.application.ninja.currentDocument.documentRoot.childNodes; | 117 | childNodes = this.application.ninja.currentDocument.documentRoot.childNodes; |
118 | childNodes = Array.prototype.slice.call(childNodes, 0); | 118 | childNodes = Array.prototype.slice.call(childNodes, 0); |
119 | childNodes.forEach(function(item) { | 119 | childNodes.forEach(function(item) { |
120 | if(item.nodeType == 1) { | 120 | if(self.isNodeTraversable(item)) { |
121 | selected.push(item); | 121 | selected.push(item); |
122 | } | 122 | } |
123 | }); | 123 | }); |
@@ -152,7 +152,6 @@ exports.SelectionController = Montage.create(Component, { | |||
152 | 152 | ||
153 | selectElement: { | 153 | selectElement: { |
154 | value: function(element) { | 154 | value: function(element) { |
155 | |||
156 | if(this.findSelectedElement(element) === -1) { | 155 | if(this.findSelectedElement(element) === -1) { |
157 | 156 | ||
158 | if(this.application.ninja.currentDocument.inExclusion(element) !== -1){ | 157 | if(this.application.ninja.currentDocument.inExclusion(element) !== -1){ |
@@ -166,7 +165,7 @@ exports.SelectionController = Montage.create(Component, { | |||
166 | 165 | ||
167 | while(outerElement.parentNode && outerElement.parentNode.uuid !== this.selectionContainer.uuid) { | 166 | while(outerElement.parentNode && outerElement.parentNode.uuid !== this.selectionContainer.uuid) { |
168 | // If element is higher up than current container then return | 167 | // If element is higher up than current container then return |
169 | if(outerElement.id === "UserContent") return; | 168 | if(outerElement.nodeName === "BODY") return; |
170 | // else keep going up the chain | 169 | // else keep going up the chain |
171 | outerElement = outerElement.parentNode; | 170 | outerElement = outerElement.parentNode; |
172 | } | 171 | } |
@@ -247,25 +246,20 @@ exports.SelectionController = Montage.create(Component, { | |||
247 | } | 246 | } |
248 | }, | 247 | }, |
249 | 248 | ||
250 | /** | ||
251 | * Looks into the selectionObject for the item to be found using it's id | ||
252 | * | ||
253 | * @return: Item index in the selectionObject if found | ||
254 | * -1 if not found | ||
255 | */ | ||
256 | findSelectedElement: { | 249 | findSelectedElement: { |
257 | value: function(item) { | 250 | value: function(item) { |
258 | // TODO do the loop check in the select element and only use the index here | 251 | // TODO: Remove this function and use the stage selectable. Then only return a match in the array |
259 | // return this.application.ninja.selectedElements.indexOf(item); | 252 | //return this.application.ninja.selectedElements.indexOf(item); |
260 | 253 | ||
254 | //TODO: Make sure we don't need to loop back to the container element. | ||
261 | var itemUUID; | 255 | var itemUUID; |
262 | 256 | ||
263 | for(var i=0, uuid; this.application.ninja.selectedElements[i];i++) { | 257 | for(var i=0, uuid; this.application.ninja.selectedElements[i];i++) { |
264 | // Check for multiple selection and excluding inner elements | 258 | // Check for multiple selection and excluding inner elements |
265 | if(item.parentNode && item.parentNode.id !== "UserContent") { | 259 | if(item.parentNode && item.parentNode !== this.application.ninja.currentDocument.documentRoot) { |
266 | var outerElement = item.parentNode; | 260 | var outerElement = item.parentNode; |
267 | 261 | ||
268 | while(outerElement.parentNode && outerElement.parentNode.id !== "UserContent") { | 262 | while(outerElement.parentNode && outerElement.parentNode !== this.application.ninja.currentDocument.documentRoot) { |
269 | outerElement = outerElement.parentNode; | 263 | outerElement = outerElement.parentNode; |
270 | } | 264 | } |
271 | 265 | ||
@@ -281,6 +275,13 @@ exports.SelectionController = Montage.create(Component, { | |||
281 | 275 | ||
282 | return -1; | 276 | return -1; |
283 | } | 277 | } |
278 | }, | ||
279 | |||
280 | isNodeTraversable: { | ||
281 | value: function( item ) { | ||
282 | if(item.nodeType !== 1) return false; | ||
283 | return ((item.nodeName !== "STYLE") && (item.nodeName !== "SCRIPT")); | ||
284 | } | ||
284 | } | 285 | } |
285 | 286 | ||
286 | }); | 287 | }); |