diff --git a/apps/common/main/lib/component/MetricSpinner.js b/apps/common/main/lib/component/MetricSpinner.js index 584db251d..51b9a38f7 100644 --- a/apps/common/main/lib/component/MetricSpinner.js +++ b/apps/common/main/lib/component/MetricSpinner.js @@ -347,6 +347,7 @@ define([ var value = this.getRawValue(); if (this.value != value) { this.onEnterValue(); + this.trigger('inputleave', this); return (this.value == value); } } else { @@ -355,6 +356,8 @@ define([ } else { this._fromKeyDown = true; } + if (e.keyCode==Common.UI.Keys.RETURN || e.keyCode==Common.UI.Keys.ESC) + this.trigger('inputleave', this); }, onKeyUp: function (e) { diff --git a/apps/documenteditor/main/app/view/HeaderFooterSettings.js b/apps/documenteditor/main/app/view/HeaderFooterSettings.js index ae792ce79..f61c6c93a 100644 --- a/apps/documenteditor/main/app/view/HeaderFooterSettings.js +++ b/apps/documenteditor/main/app/view/HeaderFooterSettings.js @@ -158,7 +158,6 @@ define([ onNumPositionChange: function(field, newValue, oldValue, eOpts){ if (this.api) this.api.put_HeadersAndFootersDistance(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); - this.fireEvent('editcomplete', this); }, onDiffFirstChange: function(field, newValue, oldValue, eOpts){ @@ -206,7 +205,6 @@ define([ this.radioFrom.setValue(true, true); this.api.asc_SetSectionStartPage(field.getNumberValue()); } - this.fireEvent('editcomplete', this); }, updateMetricUnit: function() { @@ -220,6 +218,7 @@ define([ }, createDelayedControls: function() { + var me = this; var _arrPosition = [ [c_pageNumPosition.PAGE_NUM_POSITION_TOP, c_pageNumPosition.PAGE_NUM_POSITION_LEFT, 'icon-right-panel btn-colontitul-tl', 'headerfooter-button-top-left', this.textTopLeft], [c_pageNumPosition.PAGE_NUM_POSITION_TOP, c_pageNumPosition.PAGE_NUM_POSITION_CENTER, 'icon-right-panel btn-colontitul-tc', 'headerfooter-button-top-center', this.textTopCenter], @@ -276,6 +275,7 @@ define([ }); this.numPosition.on('change', _.bind(this.onNumPositionChange, this)); + this.numPosition.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.chDiffFirst.on('change', _.bind(this.onDiffFirstChange, this)); this.chDiffOdd.on('change', _.bind(this.onDiffOddChange, this)); this.chSameAs.on('change', _.bind(this.onSameAsChange, this)); @@ -313,6 +313,7 @@ define([ }); this.lockedControls.push(this.numFrom); this.numFrom.on('change', _.bind(this.onNumFromChange, this)); + this.numFrom.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); }, createDelayedElements: function() { diff --git a/apps/documenteditor/main/app/view/ParagraphSettings.js b/apps/documenteditor/main/app/view/ParagraphSettings.js index 60f1d58ac..c683aa42f 100644 --- a/apps/documenteditor/main/app/view/ParagraphSettings.js +++ b/apps/documenteditor/main/app/view/ParagraphSettings.js @@ -98,6 +98,8 @@ define([ scope: this })); + var me = this; + // Short Size this.cmbLineRule = new Common.UI.ComboBox({ el: $markup.findById('#paragraph-combo-line-rule'), @@ -170,6 +172,9 @@ define([ this.numLineHeight.on('change', this.onNumLineHeightChange.bind(this)); this.numSpacingBefore.on('change', this.onNumSpacingBeforeChange.bind(this)); this.numSpacingAfter.on('change', this.onNumSpacingAfterChange.bind(this)); + this.numLineHeight.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); + this.numSpacingBefore.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); + this.numSpacingAfter.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.chAddInterval.on('change', this.onAddIntervalChange.bind(this)); this.cmbLineRule.on('selected', this.onLineRuleSelect.bind(this)); this.cmbLineRule.on('hide:after', this.onHideMenus.bind(this)); @@ -199,7 +204,6 @@ define([ var type = c_paragraphLinerule.LINERULE_AUTO; if (this.api) this.api.put_PrLineSpacing(this.cmbLineRule.getValue(), (this.cmbLineRule.getValue()==c_paragraphLinerule.LINERULE_AUTO) ? field.getNumberValue() : Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); - this.fireEvent('editcomplete', this); }, onNumSpacingBeforeChange: function(field, newValue, oldValue, eOpts){ @@ -208,8 +212,6 @@ define([ this._state.LineSpacingBefore = (num<0) ? -1 : Common.Utils.Metric.fnRecalcToMM(num); this.api.put_LineSpacingBeforeAfter(0, this._state.LineSpacingBefore); } - - this.fireEvent('editcomplete', this); }, onNumSpacingAfterChange: function(field, newValue, oldValue, eOpts){ @@ -218,7 +220,6 @@ define([ this._state.LineSpacingAfter = (num<0) ? -1 : Common.Utils.Metric.fnRecalcToMM(num); this.api.put_LineSpacingBeforeAfter(1, this._state.LineSpacingAfter); } - this.fireEvent('editcomplete', this); }, onAddIntervalChange: function(field, newValue, oldValue, eOpts){ diff --git a/apps/documenteditor/main/app/view/ShapeSettings.js b/apps/documenteditor/main/app/view/ShapeSettings.js index 3086a5103..d6a64fa25 100644 --- a/apps/documenteditor/main/app/view/ShapeSettings.js +++ b/apps/documenteditor/main/app/view/ShapeSettings.js @@ -364,7 +364,6 @@ define([ this.imgprops.put_ShapeProperties(props); this.api.ImgApply(this.imgprops); } - this.fireEvent('editcomplete', this); }, onTransparencyChange: function(field, newValue, oldValue){ @@ -1258,6 +1257,7 @@ define([ minValue: 0 }); this.numTransparency.on('change', _.bind(this.onNumTransparencyChange, this)); + this.numTransparency.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.fillControls.push(this.numTransparency); this.sldrTransparency = new Common.UI.SingleSlider({ diff --git a/apps/documenteditor/main/app/view/TableSettings.js b/apps/documenteditor/main/app/view/TableSettings.js index f16be045d..553f08134 100644 --- a/apps/documenteditor/main/app/view/TableSettings.js +++ b/apps/documenteditor/main/app/view/TableSettings.js @@ -246,6 +246,8 @@ define([ }, createDelayedControls: function() { + var me = this; + this.chHeader = new Common.UI.CheckBox({ el: $('#table-checkbox-header'), labelText: this.textHeader @@ -384,6 +386,7 @@ define([ _props.put_RowHeight(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); this.api.tblApply(_props); }, this)); + this.numHeight.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.lockedControls.push(this.numHeight); this.spinners.push(this.numHeight); @@ -401,6 +404,7 @@ define([ _props.put_ColumnWidth(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); this.api.tblApply(_props); }, this)); + this.numWidth.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.lockedControls.push(this.numWidth); this.spinners.push(this.numWidth); diff --git a/apps/documenteditor/main/app/view/TextArtSettings.js b/apps/documenteditor/main/app/view/TextArtSettings.js index 9cd76b657..603dfc809 100644 --- a/apps/documenteditor/main/app/view/TextArtSettings.js +++ b/apps/documenteditor/main/app/view/TextArtSettings.js @@ -232,7 +232,6 @@ define([ this.shapeprops.put_TextArtProperties(props); this.api.ImgApply(this.imgprops); } - this.fireEvent('editcomplete', this); }, onTransparencyChange: function(field, newValue, oldValue){ @@ -847,6 +846,7 @@ define([ minValue: 0 }); this.numTransparency.on('change', _.bind(this.onNumTransparencyChange, this)); + this.numTransparency.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.lockedControls.push(this.numTransparency); this.sldrTransparency = new Common.UI.SingleSlider({ diff --git a/apps/presentationeditor/main/app/view/ChartSettings.js b/apps/presentationeditor/main/app/view/ChartSettings.js index d4e3cff37..8bedf958a 100644 --- a/apps/presentationeditor/main/app/view/ChartSettings.js +++ b/apps/presentationeditor/main/app/view/ChartSettings.js @@ -254,6 +254,8 @@ define([ this.spnWidth.on('change', _.bind(this.onWidthChange, this)); this.spnHeight.on('change', _.bind(this.onHeightChange, this)); + this.spnWidth.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); + this.spnHeight.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.btnRatio = new Common.UI.Button({ cls: 'btn-toolbar', @@ -416,8 +418,6 @@ define([ props.put_Height(Common.Utils.Metric.fnRecalcToMM(h)); this.api.ChartApply(props); } - - this.fireEvent('editcomplete', this); }, onHeightChange: function(field, newValue, oldValue, eOpts){ @@ -437,8 +437,6 @@ define([ props.put_Height(Common.Utils.Metric.fnRecalcToMM(h)); this.api.ChartApply(props); } - - this.fireEvent('editcomplete', this); }, openAdvancedSettings: function(e) { diff --git a/apps/presentationeditor/main/app/view/ParagraphSettings.js b/apps/presentationeditor/main/app/view/ParagraphSettings.js index c848e9748..7311f8923 100644 --- a/apps/presentationeditor/main/app/view/ParagraphSettings.js +++ b/apps/presentationeditor/main/app/view/ParagraphSettings.js @@ -101,7 +101,6 @@ define([ return; if (this.api) this.api.put_PrLineSpacing(this.cmbLineRule.getValue(), (this.cmbLineRule.getValue()==c_paragraphLinerule.LINERULE_AUTO) ? field.getNumberValue() : Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); - this.fireEvent('editcomplete', this); }, onNumSpacingBeforeChange: function(field, newValue, oldValue, eOpts){ @@ -112,8 +111,6 @@ define([ else this.api.put_LineSpacingBeforeAfter(0, Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); } - - this.fireEvent('editcomplete', this); }, onNumSpacingAfterChange: function(field, newValue, oldValue, eOpts){ @@ -124,7 +121,6 @@ define([ else this.api.put_LineSpacingBeforeAfter(1, Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); } - this.fireEvent('editcomplete', this); }, onLineRuleSelect: function(combo, record) { @@ -310,6 +306,9 @@ define([ this.numLineHeight.on('change', _.bind(this.onNumLineHeightChange, this)); this.numSpacingBefore.on('change', _.bind(this.onNumSpacingBeforeChange, this)); this.numSpacingAfter.on('change', _.bind(this.onNumSpacingAfterChange, this)); + this.numLineHeight.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); + this.numSpacingBefore.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); + this.numSpacingAfter.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.cmbLineRule.on('selected', _.bind(this.onLineRuleSelect, this)); this.cmbLineRule.on('hide:after', _.bind(this.onHideMenus, this)); $(this.el).on('click', '#paragraph-advanced-link', _.bind(this.openAdvancedSettings, this)); diff --git a/apps/presentationeditor/main/app/view/ShapeSettings.js b/apps/presentationeditor/main/app/view/ShapeSettings.js index c6eed5c4e..cda326877 100644 --- a/apps/presentationeditor/main/app/view/ShapeSettings.js +++ b/apps/presentationeditor/main/app/view/ShapeSettings.js @@ -349,7 +349,6 @@ define([ props.put_fill(fill); this.api.ShapeApply(props); } - this.fireEvent('editcomplete', this); }, onTransparencyChange: function(field, newValue, oldValue){ @@ -1171,6 +1170,7 @@ define([ minValue: 0 }); this.numTransparency.on('change', _.bind(this.onNumTransparencyChange, this)); + this.numTransparency.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.fillControls.push(this.numTransparency); this.sldrTransparency = new Common.UI.SingleSlider({ diff --git a/apps/presentationeditor/main/app/view/SlideSettings.js b/apps/presentationeditor/main/app/view/SlideSettings.js index 695bbc8e7..8ac00a7a3 100644 --- a/apps/presentationeditor/main/app/view/SlideSettings.js +++ b/apps/presentationeditor/main/app/view/SlideSettings.js @@ -112,6 +112,7 @@ define([ this.render(); + var me = this; this._arrFillSrc = [ {displayValue: this.textColor, value: Asc.c_oAscFill.FILL_TYPE_SOLID}, {displayValue: this.textGradientFill, value: Asc.c_oAscFill.FILL_TYPE_GRAD}, @@ -221,6 +222,7 @@ define([ disabled: true }); this.numDuration.on('change', _.bind(this.onDurationChange, this)); + this.numDuration.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.numDelay = new Common.UI.MetricSpinner({ el: $('#slide-spin-delay'), @@ -233,6 +235,7 @@ define([ disabled: true }); this.numDelay.on('change', _.bind(this.onDelayChange, this)); + this.numDelay.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.chStartOnClick = new Common.UI.CheckBox({ el: $('#slide-checkbox-start-click'), @@ -1022,7 +1025,6 @@ define([ props.put_timing(timing); this.api.SetSlideProps(props); } - this.fireEvent('editcomplete', this); }, onDelayChange: function(field, newValue, oldValue, eOpts){ @@ -1033,7 +1035,6 @@ define([ props.put_timing(timing); this.api.SetSlideProps(props); } - this.fireEvent('editcomplete', this); }, onStartOnClickChange: function(field, newValue, oldValue, eOpts){ diff --git a/apps/presentationeditor/main/app/view/TableSettings.js b/apps/presentationeditor/main/app/view/TableSettings.js index 9c0caf84b..dae5bb44a 100644 --- a/apps/presentationeditor/main/app/view/TableSettings.js +++ b/apps/presentationeditor/main/app/view/TableSettings.js @@ -367,6 +367,7 @@ define([ _props.put_RowHeight(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); this.api.tblApply(_props); }, this)); + this.numHeight.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.lockedControls.push(this.numHeight); this.spinners.push(this.numHeight); @@ -384,6 +385,7 @@ define([ _props.put_ColumnWidth(Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); this.api.tblApply(_props); }, this)); + this.numWidth.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.lockedControls.push(this.numWidth); this.spinners.push(this.numWidth); diff --git a/apps/presentationeditor/main/app/view/TextArtSettings.js b/apps/presentationeditor/main/app/view/TextArtSettings.js index 6b83ad489..f49ff4feb 100644 --- a/apps/presentationeditor/main/app/view/TextArtSettings.js +++ b/apps/presentationeditor/main/app/view/TextArtSettings.js @@ -354,7 +354,6 @@ define([ this.shapeprops.put_TextArtProperties(props); this.api.ShapeApply(this.shapeprops); } - this.fireEvent('editcomplete', this); }, onTransparencyChange: function(field, newValue, oldValue){ @@ -1156,6 +1155,7 @@ define([ minValue: 0 }); this.numTransparency.on('change', _.bind(this.onNumTransparencyChange, this)); + this.numTransparency.on('inputleave', function(){ me.fireEvent('editcomplete', me);}); this.lockedControls.push(this.numTransparency); this.sldrTransparency = new Common.UI.SingleSlider({ diff --git a/apps/spreadsheeteditor/main/app/view/CellSettings.js b/apps/spreadsheeteditor/main/app/view/CellSettings.js index 136c3d444..d77aafa17 100644 --- a/apps/spreadsheeteditor/main/app/view/CellSettings.js +++ b/apps/spreadsheeteditor/main/app/view/CellSettings.js @@ -204,6 +204,7 @@ define([ }); this.lockedControls.push(this.numGradientAngle); this.numGradientAngle.on('change', _.bind(this.onGradientAngleChange, this)); + this.numGradientAngle.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); /*this._arrGradType = [ {displayValue: this.textLinear, value: Asc.c_oAscFillGradType.GRAD_LINEAR}, @@ -438,6 +439,7 @@ define([ }); this.lockedControls.push(this.spnAngle); this.spnAngle.on('change', _.bind(this.onAngleChange, this)); + this.spnAngle.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); }, createDelayedElements: function() { diff --git a/apps/spreadsheeteditor/main/app/view/ChartSettings.js b/apps/spreadsheeteditor/main/app/view/ChartSettings.js index caa33fc40..18ae392ad 100644 --- a/apps/spreadsheeteditor/main/app/view/ChartSettings.js +++ b/apps/spreadsheeteditor/main/app/view/ChartSettings.js @@ -703,6 +703,8 @@ define([ this.spnWidth.on('change', _.bind(this.onWidthChange, this)); this.spnHeight.on('change', _.bind(this.onHeightChange, this)); + this.spnWidth.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); + this.spnHeight.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); this.btnRatio = new Common.UI.Button({ cls: 'btn-toolbar', @@ -848,8 +850,6 @@ define([ props.asc_putHeight(Common.Utils.Metric.fnRecalcToMM(h)); this.api.asc_setGraphicObjectProps(props); } - - Common.NotificationCenter.trigger('edit:complete', this); }, onHeightChange: function(field, newValue, oldValue, eOpts){ @@ -869,8 +869,6 @@ define([ props.asc_putHeight(Common.Utils.Metric.fnRecalcToMM(h)); this.api.asc_setGraphicObjectProps(props); } - - Common.NotificationCenter.trigger('edit:complete', this); }, openAdvancedSettings: function() { diff --git a/apps/spreadsheeteditor/main/app/view/ImageSettings.js b/apps/spreadsheeteditor/main/app/view/ImageSettings.js index 4dc37feff..e0d6d93fb 100644 --- a/apps/spreadsheeteditor/main/app/view/ImageSettings.js +++ b/apps/spreadsheeteditor/main/app/view/ImageSettings.js @@ -183,6 +183,8 @@ define([ this.spnWidth.on('change', _.bind(this.onWidthChange, this)); this.spnHeight.on('change', _.bind(this.onHeightChange, this)); + this.spnWidth.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); + this.spnHeight.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); this.btnOriginalSize.on('click', _.bind(this.setOriginalSize, this)); this.btnInsertFromFile.on('click', _.bind(function(btn){ if (this._isFromFile) return; @@ -392,7 +394,6 @@ define([ props.asc_putHeight(Common.Utils.Metric.fnRecalcToMM(h)); this.api.asc_setGraphicObjectProps(props); } - Common.NotificationCenter.trigger('edit:complete', this); }, onHeightChange: function(field, newValue, oldValue, eOpts){ @@ -412,7 +413,6 @@ define([ props.asc_putHeight(Common.Utils.Metric.fnRecalcToMM(h)); this.api.asc_setGraphicObjectProps(props); } - Common.NotificationCenter.trigger('edit:complete', this); }, setOriginalSize: function() { diff --git a/apps/spreadsheeteditor/main/app/view/ParagraphSettings.js b/apps/spreadsheeteditor/main/app/view/ParagraphSettings.js index 8dd4adc6c..2faa1701f 100644 --- a/apps/spreadsheeteditor/main/app/view/ParagraphSettings.js +++ b/apps/spreadsheeteditor/main/app/view/ParagraphSettings.js @@ -107,8 +107,6 @@ define([ return; if (this.api) this.api.asc_putPrLineSpacing(this.cmbLineRule.getValue(), (this.cmbLineRule.getValue()==c_paragraphLinerule.LINERULE_AUTO) ? field.getNumberValue() : Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); - - Common.NotificationCenter.trigger('edit:complete', this); }, onNumSpacingBeforeChange: function(field, newValue, oldValue, eOpts){ @@ -119,8 +117,6 @@ define([ else this.api.asc_putLineSpacingBeforeAfter(0, Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); } - - Common.NotificationCenter.trigger('edit:complete', this); }, onNumSpacingAfterChange: function(field, newValue, oldValue, eOpts){ @@ -131,8 +127,6 @@ define([ else this.api.asc_putLineSpacingBeforeAfter(1, Common.Utils.Metric.fnRecalcToMM(field.getNumberValue())); } - - Common.NotificationCenter.trigger('edit:complete', this); }, onLineRuleSelect: function(combo, record) { @@ -317,6 +311,9 @@ define([ this.numLineHeight.on('change', _.bind(this.onNumLineHeightChange, this)); this.numSpacingBefore.on('change', _.bind(this.onNumSpacingBeforeChange, this)); this.numSpacingAfter.on('change', _.bind(this.onNumSpacingAfterChange, this)); + this.numLineHeight.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); + this.numSpacingBefore.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); + this.numSpacingAfter.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); this.cmbLineRule.on('selected', _.bind(this.onLineRuleSelect, this)); this.cmbLineRule.on('hide:after', _.bind(this.onHideMenus, this)); $(this.el).on('click', '#paragraph-advanced-link', _.bind(this.openAdvancedSettings, this)); diff --git a/apps/spreadsheeteditor/main/app/view/ShapeSettings.js b/apps/spreadsheeteditor/main/app/view/ShapeSettings.js index 54616a135..a08c020bb 100644 --- a/apps/spreadsheeteditor/main/app/view/ShapeSettings.js +++ b/apps/spreadsheeteditor/main/app/view/ShapeSettings.js @@ -360,7 +360,6 @@ define([ this.imgprops.asc_putShapeProperties(props); this.api.asc_setGraphicObjectProps(this.imgprops); } - Common.NotificationCenter.trigger('edit:complete', this); }, onTransparencyChange: function(field, newValue, oldValue){ @@ -1195,6 +1194,7 @@ define([ minValue: 0 }); this.numTransparency.on('change', _.bind(this.onNumTransparencyChange, this)); + this.numTransparency.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); this.fillControls.push(this.numTransparency); this.sldrTransparency = new Common.UI.SingleSlider({ diff --git a/apps/spreadsheeteditor/main/app/view/TextArtSettings.js b/apps/spreadsheeteditor/main/app/view/TextArtSettings.js index 57762926b..0e420d1cd 100644 --- a/apps/spreadsheeteditor/main/app/view/TextArtSettings.js +++ b/apps/spreadsheeteditor/main/app/view/TextArtSettings.js @@ -355,7 +355,6 @@ define([ this.shapeprops.put_TextArtProperties(props); this.api.asc_setGraphicObjectProps(this.imgprops); } - Common.NotificationCenter.trigger('edit:complete', this); }, onTransparencyChange: function(field, newValue, oldValue){ @@ -1160,6 +1159,7 @@ define([ minValue: 0 }); this.numTransparency.on('change', _.bind(this.onNumTransparencyChange, this)); + this.numTransparency.on('inputleave', function(){ Common.NotificationCenter.trigger('edit:complete', me);}); this.lockedControls.push(this.numTransparency); this.sldrTransparency = new Common.UI.SingleSlider({