From dbc2fe9cdb1b78a9aa6dfa09c5667752da0d7854 Mon Sep 17 00:00:00 2001 From: Mark Walker Date: Thu, 30 Apr 2015 02:22:25 -0700 Subject: [PATCH] onSettingsShown/Hidden call only on parent dialog shown/hidden jQuery bubbles all children show/hide events up to the parent so the event gets called whenever a settings pane is chosen by the user. Intent of the viewmodel callback was just on first show and final dismiss. --- .../static/js/app/viewmodels/settings.js | 26 +++++++++++-------- 1 file changed, 15 insertions(+), 11 deletions(-) diff --git a/src/octoprint/static/js/app/viewmodels/settings.js b/src/octoprint/static/js/app/viewmodels/settings.js index 9fbdd38b..001946c4 100644 --- a/src/octoprint/static/js/app/viewmodels/settings.js +++ b/src/octoprint/static/js/app/viewmodels/settings.js @@ -143,19 +143,23 @@ $(function() { }; self.onAllBound = function(allViewModels) { - self.settingsDialog.on('show', function() { - _.each(allViewModels, function(viewModel) { - if (viewModel.hasOwnProperty("onSettingsShown")) { - viewModel.onSettingsShown(); - } - }); + self.settingsDialog.on('show', function(event) { + if (event.target.id == "settings_dialog") { + _.each(allViewModels, function(viewModel) { + if (viewModel.hasOwnProperty("onSettingsShown")) { + viewModel.onSettingsShown(); + } + }); + } }); self.settingsDialog.on('hidden', function() { - _.each(allViewModels, function(viewModel) { - if (viewModel.hasOwnProperty("onSettingsHidden")) { - viewModel.onSettingsHidden(); - } - }); + if (event.target.id == "settings_dialog") { + _.each(allViewModels, function(viewModel) { + if (viewModel.hasOwnProperty("onSettingsHidden")) { + viewModel.onSettingsHidden(); + } + }); + } }); self.settingsDialog.on('beforeSave', function () { _.each(allViewModels, function (viewModel) {