From bc7ffffb2bac3bf09d17d855d32a5f0d154fab3b Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Tue, 17 Jul 2012 18:40:24 -0700 Subject: Styles Controller - Re-add dirty event. Add data- attribute to keep created stylesheets. --- js/controllers/styles-controller.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'js/controllers') diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 89a389a4..8639bed1 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -1405,7 +1405,8 @@ var stylesController = exports.StylesController = Montage.create(Component, { rel : 'stylesheet', id : id || "", media : 'screen', - title : 'Temp' + title : 'Temp', + 'data-ninja-node' : 'true' }); doc.head.appendChild(sheetElement); @@ -1486,6 +1487,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { ///// If the sheet doesn't already exist in the list of modified ///// sheets, dispatch dirty event and add the sheet to the list if(sheetSearch.length === 0) { + NJevent('styleSheetDirty', eventData); this.dirtyStyleSheets.push({ document : sheet.ownerNode.ownerDocument, stylesheet : sheet -- cgit v1.2.3 From 1cbb921537cce5d54885293e8c64833a42370154 Mon Sep 17 00:00:00 2001 From: Ananya Sen Date: Wed, 18 Jul 2012 09:43:16 -0700 Subject: perform clipboard operations only if selection tool is selected since other tools have different conflicting session state Signed-off-by: Ananya Sen --- js/controllers/clipboard-controller.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'js/controllers') diff --git a/js/controllers/clipboard-controller.js b/js/controllers/clipboard-controller.js index d2173e31..50538477 100644 --- a/js/controllers/clipboard-controller.js +++ b/js/controllers/clipboard-controller.js @@ -85,6 +85,11 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component return; } + //perform clipboard operations only if selection tool is selected + if(this.application.ninja.toolsData.defaultToolsData[this.application.ninja.toolsData.selectionToolIndex].selected === false){ + return; + } + if(this.clipboardContext === "stage"){ ElementsClipboardAgent.copy(clipboardEvent); } @@ -102,6 +107,11 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component return; } + //perform clipboard operations only if selection tool is selected + if(this.application.ninja.toolsData.defaultToolsData[this.application.ninja.toolsData.selectionToolIndex].selected === false){ + return; + } + if(this.clipboardContext === "stage"){ ElementsClipboardAgent.cut(clipboardEvent); } @@ -126,6 +136,11 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component return; } + //perform clipboard operations only if selection tool is selected + if(this.application.ninja.toolsData.defaultToolsData[this.application.ninja.toolsData.selectionToolIndex].selected === false){ + return; + } + //TODO: return if stage is not focussed if(this.clipboardContext === "stage"){ -- cgit v1.2.3 From 819348eaf3ff6b4a8c38ecca7c18f6dacac7f03b Mon Sep 17 00:00:00 2001 From: Valerio Virgillito Date: Wed, 18 Jul 2012 15:08:37 -0700 Subject: Fixed some issues with the menu-fixes - Fixed the dark background on file open - Fixed the copy/paste/cut menu not working. Signed-off-by: Valerio Virgillito --- js/controllers/clipboard-controller.js | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) (limited to 'js/controllers') diff --git a/js/controllers/clipboard-controller.js b/js/controllers/clipboard-controller.js index d2173e31..afc94c8c 100644 --- a/js/controllers/clipboard-controller.js +++ b/js/controllers/clipboard-controller.js @@ -80,9 +80,11 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component return; }//for design view only - // Don't do anything if an input or other control is focused + // Don't do anything if an input or other control is focused except the copy menu button if(document.activeElement.nodeName !== "BODY") { - return; + if(!document.activeElement.getAttribute("data-montage-id") === "menuItemButton") { + return; + } } if(this.clipboardContext === "stage"){ @@ -99,7 +101,9 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component // Don't do anything if an input or other control is focused if(document.activeElement.nodeName !== "BODY") { - return; + if(!document.activeElement.getAttribute("data-montage-id") === "menuItemButton") { + return; + } } if(this.clipboardContext === "stage"){ @@ -123,7 +127,9 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component // Don't do anything if an input or other control is focused if(document.activeElement.nodeName !== "BODY") { - return; + if(!document.activeElement.getAttribute("data-montage-id") === "menuItemButton") { + return; + } } //TODO: return if stage is not focussed -- cgit v1.2.3 From 36be3f52a0eaf176213f4d46056e684e0a1b7653 Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Wed, 18 Jul 2012 17:11:40 -0700 Subject: Style Sheets - Show dirty marker when editing media attribute --- js/controllers/styles-controller.js | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'js/controllers') diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 8639bed1..87019cad 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -1433,6 +1433,9 @@ var stylesController = exports.StylesController = Montage.create(Component, { sheetEl.disabled = true; this.userStyleSheets.splice(this.userStyleSheets.indexOf(sheet), 1); + ///// Make sure cached rules from this stylesheet are not used + this._clearCache(); + ///// Check to see if we're removing the default style sheet if(sheet === this._defaultStylesheet) { sheetCount = this.userStyleSheets.length; @@ -1470,6 +1473,18 @@ var stylesController = exports.StylesController = Montage.create(Component, { } }, + setMediaAttribute : { + value: function(sheet, mediaString) { + if(sheet.media.mediaText === mediaString) { return false; } + + sheet.ownerNode.setAttribute('media', mediaString); + + this._clearCache(); + + this.styleSheetModified(sheet); + } + }, + ///// Style Sheet Modified ///// Method to call whenever a stylesheet change is made ///// Dispatches an event, and keeps list of dirty style sheets -- cgit v1.2.3 From fc13ef1e806116bb7ece5bb06604fa4f5714a6ed Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Thu, 19 Jul 2012 10:55:22 -0700 Subject: Squashed commit of the following: commit 0285afe3d4bd458a51f11241f13ea6ffdb0283ed Merge: 2f9f5e3 16d06ba Author: Nivesh Rajbhandari Date: Thu Jul 19 10:54:25 2012 -0700 Merge branch 'refs/heads/ninja-mqg734-master' into StageToolDrawingOptimizations commit 2f9f5e369eb96f6c81b5e4bcbe09b418825e2864 Author: Nivesh Rajbhandari Date: Wed Jul 18 17:15:19 2012 -0700 Fixed selection bounds not drawing in nested tags. Signed-off-by: Nivesh Rajbhandari commit b0a3507f9d27579ad511c69314a09136d7f7c6a0 Author: Nivesh Rajbhandari Date: Wed Jul 18 11:07:44 2012 -0700 Layout info needs to redraw if stage is updated. Signed-off-by: Nivesh Rajbhandari commit 63c5e0bf52c33706ba597cb69f7794e287bd0f06 Author: Nivesh Rajbhandari Date: Tue Jul 17 15:40:54 2012 -0700 Per feedback from QE, we are still going to draw tool feedback on each mouse move so the selection bounds are not out of sync with the elements. Signed-off-by: Nivesh Rajbhandari commit 0599a742092b985c4002977e501e3b457173f1d9 Author: Nivesh Rajbhandari Date: Tue Jul 17 15:28:25 2012 -0700 Fixed grid not drawing correctly when switching documents and when adding/removing elements. Signed-off-by: Nivesh Rajbhandari commit fd9410606ee6358910d65b2cb5f71812fd44a7c4 Author: Nivesh Rajbhandari Date: Tue Jul 17 11:36:09 2012 -0700 Updated drawing feedback to handle matrix 2d values entered via CSS Panel. Signed-off-by: Nivesh Rajbhandari commit 559c16c7ac8c9f40b94a011a6f932d4f97df66a7 Author: Nivesh Rajbhandari Date: Mon Jul 16 17:14:28 2012 -0700 IKNinja-751 - Selection boundary doesn't follow the transform applied in the CSS Panel. Signed-off-by: Nivesh Rajbhandari commit e2da5340159db5cd6f75bf6c9b7eb9cbf959e5cd Merge: 7cc5de3 5146f22 Author: Nivesh Rajbhandari Date: Mon Jul 16 15:36:28 2012 -0700 Merge branch 'refs/heads/ninja-mqg734-master' into StageToolDrawingOptimizations commit 7cc5de39e41b4220f53c91b15b0cf0ed53e0b0f6 Author: Nivesh Rajbhandari Date: Mon Jul 16 14:52:06 2012 -0700 Check if ownerDocument.defaultValue is null. Signed-off-by: Nivesh Rajbhandari commit 5ae97995a28a4b06fb7f8703eb8090ea16d88acd Merge: d17974d 0ede302 Author: Nivesh Rajbhandari Date: Mon Jul 16 09:27:22 2012 -0700 Merge branch 'refs/heads/ninja-mqg734-master' into StageToolDrawingOptimizations commit d17974d77273bb635311cb6466f4427cf4d9e5d4 Author: Nivesh Rajbhandari Date: Mon Jul 16 08:45:05 2012 -0700 Pass in selectedElements array directly to drawUtils when drawing selection bounds instead of creating a duplicate array. Signed-off-by: Nivesh Rajbhandari commit 0b1ea3144cb3e2c1d272f60da32423d0604ace3b Author: Nivesh Rajbhandari Date: Fri Jul 13 14:03:40 2012 -0700 Fixed line tool not drawing the width and height info. Signed-off-by: Nivesh Rajbhandari commit b9c70e8d9ae324aa21fa5490edc71d8503bcefbc Author: Nivesh Rajbhandari Date: Fri Jul 13 12:42:25 2012 -0700 Used cached offsetWidth and offsetHeight. Signed-off-by: Nivesh Rajbhandari commit 9e17ac7124745ba745014efe149b31dee4fe658f Author: Nivesh Rajbhandari Date: Thu Jul 12 16:25:41 2012 -0700 Converting tabs to spaces … again! Signed-off-by: Nivesh Rajbhandari commit 351726c951bb73c28f0e15ea1ab32e85cc735688 Author: Nivesh Rajbhandari Date: Thu Jul 12 16:14:31 2012 -0700 Tabs should be 4 spaces. Signed-off-by: Nivesh Rajbhandari commit 250c419aa2dbcb10f012817ee7039aca77cb2518 Merge: 3f8d61a 2880e1d Author: Nivesh Rajbhandari Date: Thu Jul 12 16:08:31 2012 -0700 Merge branch 'refs/heads/ninja-mqg734-master' into StageToolDrawingOptimizations commit 3f8d61a676da3992947ed9a2ed0e449780fcfbe0 Author: Nivesh Rajbhandari Date: Thu Jul 12 15:53:44 2012 -0700 Rotate tool was not working immediately after switching selection and selection bounds were not drawing after resizing canvases. Signed-off-by: Nivesh Rajbhandari commit e2e1f81e3b6917e1032e1b99b79c266937f3bb25 Author: Nivesh Rajbhandari Date: Thu Jul 12 12:15:59 2012 -0700 Single draw cycle for stage updates and tool drawings. Signed-off-by: Nivesh Rajbhandari commit 95a90b4c95ee3163c97bea317144366674e49ade Author: Nivesh Rajbhandari Date: Mon Jun 18 11:46:38 2012 -0700 Single draw cycle for the stage and layout. Signed-off-by: Nivesh Rajbhandari commit 21966b1515d80d2161a14e5a19bc66f3f49a92ce Author: Nivesh Rajbhandari Date: Fri Jun 15 13:33:14 2012 -0700 Cache element offsets, including offsetParent. Signed-off-by: Nivesh Rajbhandari commit 80c563c8ba06149691c6c1e754dd9a5e43bc7d4b Author: Nivesh Rajbhandari Date: Mon Jul 9 17:30:00 2012 -0700 Open materials editor popup next to PI button. Signed-off-by: Nivesh Rajbhandari Signed-off-by: Nivesh Rajbhandari --- js/controllers/styles-controller.js | 51 +++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 8 deletions(-) (limited to 'js/controllers') diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 89a389a4..b0db1b6a 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -1292,33 +1292,68 @@ var stylesController = exports.StylesController = Montage.create(Component, { ///// Get Matrix From Element ///// Returns the matrix from an element's -webkit-transform - //// TODO - This routine should eventually check for other transform styles, i.e., rotateX, translateZ, etc. getMatrixFromElement : { value: function(element, isStage) { isStage = false; var xformStr = this.getElementStyle(element, "-webkit-transform", true, isStage), - mat; + mat, + index1, + index2, + substr, + numArray, + nNums, + i; if (xformStr) { - var index1 = xformStr.indexOf( "matrix3d("); + // Check for 3d matrix + index1 = xformStr.indexOf( "matrix3d("); + // If style does not contain 'matrix3d', try computed matrix/matrix3d from rotateY, translateZ, etc. + if((index1 === -1) && element.ownerDocument.defaultView) { + xformStr = element.ownerDocument.defaultView.getComputedStyle(element).getPropertyValue("-webkit-transform"); + index1 = xformStr.indexOf( "matrix3d("); + } if (index1 >= 0) { index1 += 9; // do not include 'matrix3d(' - var index2 = xformStr.indexOf( ")", index1 ); + index2 = xformStr.indexOf( ")", index1 ); if (index2 >= 0) { - var substr = xformStr.substr( index1, (index2-index1)); + substr = xformStr.substr( index1, (index2-index1)); if (substr && (substr.length > 0)) { - var numArray = substr.split(','); - var nNums = numArray.length; + numArray = substr.split(','); + nNums = numArray.length; if (nNums == 16) { // gl-matrix wants row order mat = numArray; - for (var i=0; i<16; i++) { + for (i=0; i<16; i++) { mat[i] = Number( mat[i] ); } } } } + } else { + // Check for 2d matrix + index1 = xformStr.indexOf( "matrix("); + if (index1 >= 0) { + index1 += 7; // do not include 'matrix(' + index2 = xformStr.indexOf( ")", index1 ); + if (index2 >= 0) { + substr = xformStr.substr( index1, (index2-index1)); + if (substr && (substr.length > 0)) { + numArray = substr.split(','); + nNums = numArray.length; + if (nNums === 6) { + // gl-matrix wants row order + mat = Matrix.I(4); + mat[0] = Number(numArray[0]); + mat[1] = Number(numArray[1]); + mat[4] = Number(numArray[2]); + mat[5] = Number(numArray[3]); + mat[12] = Number(numArray[4]); + mat[13] = Number(numArray[5]); + } + } + } + } } } return mat; -- cgit v1.2.3 From 0b6e845b4afe8cf3571351bd7b2aa872fab61c71 Mon Sep 17 00:00:00 2001 From: Ananya Sen Date: Thu, 19 Jul 2012 17:08:08 -0700 Subject: copy/paste from external apps - removed unnecessary selection change to fix PI redraw issue Signed-off-by: Ananya Sen Conflicts: js/controllers/clipboard-controller.js Signed-off-by: Ananya Sen --- js/controllers/clipboard-controller.js | 15 --------------- 1 file changed, 15 deletions(-) (limited to 'js/controllers') diff --git a/js/controllers/clipboard-controller.js b/js/controllers/clipboard-controller.js index c3543c95..afc94c8c 100644 --- a/js/controllers/clipboard-controller.js +++ b/js/controllers/clipboard-controller.js @@ -87,11 +87,6 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component } } - //perform clipboard operations only if selection tool is selected - if(this.application.ninja.toolsData.defaultToolsData[this.application.ninja.toolsData.selectionToolIndex].selected === false){ - return; - } - if(this.clipboardContext === "stage"){ ElementsClipboardAgent.copy(clipboardEvent); } @@ -111,11 +106,6 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component } } - //perform clipboard operations only if selection tool is selected - if(this.application.ninja.toolsData.defaultToolsData[this.application.ninja.toolsData.selectionToolIndex].selected === false){ - return; - } - if(this.clipboardContext === "stage"){ ElementsClipboardAgent.cut(clipboardEvent); } @@ -142,11 +132,6 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component } } - //perform clipboard operations only if selection tool is selected - if(this.application.ninja.toolsData.defaultToolsData[this.application.ninja.toolsData.selectionToolIndex].selected === false){ - return; - } - //TODO: return if stage is not focussed if(this.clipboardContext === "stage"){ -- cgit v1.2.3 From 8fdf2fc8aefee68aec4c7b5891e0375f704cbf26 Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Fri, 20 Jul 2012 11:23:39 -0700 Subject: CSS Panel - Fix updating when media changes, sheets are deleted. --- js/controllers/styles-controller.js | 39 ++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) (limited to 'js/controllers') diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 87019cad..703d61f4 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -106,7 +106,17 @@ var stylesController = exports.StylesController = Montage.create(Component, { this.defaultStylesheet = this.getSheetFromElement(this.CONST.DEFAULT_SHEET_ID); this.userStyleSheets = nj.toArray(document.model.views.design.document.styleSheets).filter(function(sheet) { - return sheet !== this._stageStylesheet; + if(sheet === this._stageStylesheet) { return false; } + + var media = sheet.ownerNode.getAttribute('media'); + + ///// If the media attribute contains a query, we'll watch for changes in media + if(/\([0-9A-Za-z-: ]+\)/.test(media)) { + this.watchMedia(media); + } + + return true; + }, this); this.initializeRootStyles(); @@ -115,6 +125,33 @@ var stylesController = exports.StylesController = Montage.create(Component, { }, enumerable : false }, + + _mediaList : { + value: [] + }, + + watchMedia : { + value: function(mediaQuery, doc) { + var _doc = doc || this._currentDocument.model.views.design.document; + + ///// Set a listener for media changes + _doc.defaultView.matchMedia(mediaQuery).addListener(function(e) { + this.handleMediaChange(e); + }.bind(this)); + } + }, + + handleMediaChange : { + value: function(query) { + this._clearCache(); + + NJevent('mediaChange', { + query: query, + source: "stylesController" + }); + } + }, + userStyleSheets : { value : null }, -- cgit v1.2.3 From d7f5d6ffb39d55f2d4f4f366421571826df1e8bb Mon Sep 17 00:00:00 2001 From: Nivesh Rajbhandari Date: Fri, 20 Jul 2012 11:54:04 -0700 Subject: If no material was defined, use Flat material when switching from 2d to WebGL shape. Signed-off-by: Nivesh Rajbhandari --- js/controllers/elements/shapes-controller.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'js/controllers') diff --git a/js/controllers/elements/shapes-controller.js b/js/controllers/elements/shapes-controller.js index 1d945066..6dabff47 100755 --- a/js/controllers/elements/shapes-controller.js +++ b/js/controllers/elements/shapes-controller.js @@ -841,10 +841,10 @@ exports.ShapesController = Montage.create(CanvasController, { child.strokeMat = "Linear Gradient"; } } - else if( (child.strokeMat === "Radial Gradient") || + else if( !child.strokeMat || (child.strokeMat === "Radial Gradient") || (child.strokeMat === "Linear Gradient") ) { - // Set Flat Material for children geometry if color has been changed to solid + // Set Flat Material for children geometry if no material defined or color has been changed to solid child.strokeMat = "Flat"; } } @@ -863,10 +863,10 @@ exports.ShapesController = Montage.create(CanvasController, { child.fillMat = "Linear Gradient"; } } - else if( (child.fillMat === "Radial Gradient") || + else if( !child.fillMat || (child.fillMat === "Radial Gradient") || (child.fillMat === "Linear Gradient") ) { - // Set Flat Material for children geometry if color has been changed to solid + // Set Flat Material for children geometry if no material defined or color has been changed to solid child.fillMat = "Flat"; } } -- cgit v1.2.3 From 0d414eaeae13bb520e52ddace0a83c03eb9e7769 Mon Sep 17 00:00:00 2001 From: Ananya Sen Date: Fri, 20 Jul 2012 12:18:49 -0700 Subject: fixing logical error which was a side-effect of SHA:819348eaf3ff6b4a8c38ecca7c18f6dacac7f03b recently Signed-off-by: Ananya Sen --- js/controllers/clipboard-controller.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'js/controllers') diff --git a/js/controllers/clipboard-controller.js b/js/controllers/clipboard-controller.js index afc94c8c..3eba1bec 100644 --- a/js/controllers/clipboard-controller.js +++ b/js/controllers/clipboard-controller.js @@ -82,7 +82,7 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component // Don't do anything if an input or other control is focused except the copy menu button if(document.activeElement.nodeName !== "BODY") { - if(!document.activeElement.getAttribute("data-montage-id") === "menuItemButton") { + if(!(document.activeElement.getAttribute("data-montage-id") === "menuItemButton")) { return; } } @@ -101,7 +101,7 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component // Don't do anything if an input or other control is focused if(document.activeElement.nodeName !== "BODY") { - if(!document.activeElement.getAttribute("data-montage-id") === "menuItemButton") { + if(!(document.activeElement.getAttribute("data-montage-id") === "menuItemButton")) { return; } } @@ -127,7 +127,7 @@ var ClipboardController = exports.ClipboardController = Montage.create(Component // Don't do anything if an input or other control is focused if(document.activeElement.nodeName !== "BODY") { - if(!document.activeElement.getAttribute("data-montage-id") === "menuItemButton") { + if(!(document.activeElement.getAttribute("data-montage-id") === "menuItemButton")) { return; } } -- cgit v1.2.3 From 74d3af4650e549afe6cd6bf11ba0bcae89fca602 Mon Sep 17 00:00:00 2001 From: Eric Guzman Date: Fri, 20 Jul 2012 16:31:35 -0700 Subject: CSS Panel - Remove data attribute to remove style tags from document. --- js/controllers/styles-controller.js | 1 + 1 file changed, 1 insertion(+) (limited to 'js/controllers') diff --git a/js/controllers/styles-controller.js b/js/controllers/styles-controller.js index 11d53ac0..21321f6d 100755 --- a/js/controllers/styles-controller.js +++ b/js/controllers/styles-controller.js @@ -1516,6 +1516,7 @@ var stylesController = exports.StylesController = Montage.create(Component, { ///// Mark for removal for i/o sheetEl.setAttribute('data-ninja-remove', 'true'); + sheetEl.removeAttribute('data-ninja-node'); NJevent('removeStyleSheet', sheet); } -- cgit v1.2.3