Compare commits

...

1 Commits

Author SHA1 Message Date
Dustin Howett
142eb96d64 Allow file modifications to quiet down before reloading settings
Fixes #1329.
2019-06-19 12:14:05 -07:00
2 changed files with 17 additions and 1 deletions

View File

@@ -595,11 +595,24 @@ namespace winrt::TerminalApp::implementation
if (settingsBasename == modifiedBasename)
{
this->_ReloadSettings();
this->_DispatchReloadSettings();
}
});
}
// Method Description:
// - Dispatches a settings reload with debounce.
fire_and_forget App::_DispatchReloadSettings()
{
static constexpr auto FileActivityQuiesceTime{ std::chrono::milliseconds(50) };
if (!_settingsReloadQueued.exchange(true))
{
co_await winrt::resume_after(FileActivityQuiesceTime);
_ReloadSettings();
_settingsReloadQueued.store(false);
}
}
// Method Description:
// - Reloads the settings from the profile.json.
void App::_ReloadSettings()

View File

@@ -69,6 +69,8 @@ namespace winrt::TerminalApp::implementation
wil::unique_folder_change_reader_nothrow _reader;
std::atomic<bool> _settingsReloadQueued{ false };
void _Create();
void _CreateNewTabFlyout();
@@ -85,6 +87,7 @@ namespace winrt::TerminalApp::implementation
void _HookupKeyBindings(TerminalApp::AppKeyBindings bindings) noexcept;
void _RegisterSettingsChange();
fire_and_forget _DispatchReloadSettings();
void _ReloadSettings();
void _SettingsButtonOnClick(const IInspectable& sender, const Windows::UI::Xaml::RoutedEventArgs& eventArgs);