Added application name as exception word for spell checker.
This commit is contained in:
		
							parent
							
								
									759fa14759
								
							
						
					
					
						commit
						15db48b0cc
					
				
					 1 changed files with 41 additions and 11 deletions
				
			
		| 
						 | 
					@ -31,6 +31,11 @@ using namespace Storage::CloudBlob;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
constexpr auto kDictExtensions = { "dic", "aff" };
 | 
					constexpr auto kDictExtensions = { "dic", "aff" };
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					constexpr auto kExceptions = {
 | 
				
			||||||
 | 
						AppFile,
 | 
				
			||||||
 | 
						"\xd0\xa2\xd0\xb5\xd0\xbb\xd0\xb5\xd0\xb3\xd1\x80\xd0\xb0\xd0\xbc"_cs,
 | 
				
			||||||
 | 
					};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
// 31 - QLocale::English, 91 - QLocale::Portuguese.
 | 
					// 31 - QLocale::English, 91 - QLocale::Portuguese.
 | 
				
			||||||
constexpr auto kLangsForLWC = { 31, 91 };
 | 
					constexpr auto kLangsForLWC = { 31, 91 };
 | 
				
			||||||
// 225 - QLocale::UnitesStates, 30 - QLocale::Brazil.
 | 
					// 225 - QLocale::UnitesStates, 30 - QLocale::Brazil.
 | 
				
			||||||
| 
						 | 
					@ -167,6 +172,19 @@ void DownloadDictionaryInBackground(
 | 
				
			||||||
	BackgroundLoaderChanged.fire_copy(id);
 | 
						BackgroundLoaderChanged.fire_copy(id);
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					void AddExceptions() {
 | 
				
			||||||
 | 
						const auto exceptions = ranges::view::all(
 | 
				
			||||||
 | 
							kExceptions
 | 
				
			||||||
 | 
						) | ranges::views::transform([](const auto &word) {
 | 
				
			||||||
 | 
							return word.utf16();
 | 
				
			||||||
 | 
						}) | ranges::views::filter([](const auto &word) {
 | 
				
			||||||
 | 
							return !(Platform::Spellchecker::IsWordInDictionary(word)
 | 
				
			||||||
 | 
								|| Spellchecker::IsWordSkippable(&word));
 | 
				
			||||||
 | 
						}) | ranges::to_vector;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						ranges::for_each(exceptions, Platform::Spellchecker::AddWord);
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
} // namespace
 | 
					} // namespace
 | 
				
			||||||
 | 
					
 | 
				
			||||||
DictLoaderPtr GlobalLoader() {
 | 
					DictLoaderPtr GlobalLoader() {
 | 
				
			||||||
| 
						 | 
					@ -358,17 +376,34 @@ void Start(not_null<Main::Session*> session) {
 | 
				
			||||||
	} });
 | 
						} });
 | 
				
			||||||
	const auto settings = &session->settings();
 | 
						const auto settings = &session->settings();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const auto guard = gsl::finally([=]{
 | 
						const auto onEnabled = [=](auto enabled) {
 | 
				
			||||||
		if (settings->spellcheckerEnabled()) {
 | 
					 | 
				
			||||||
		Platform::Spellchecker::UpdateLanguages(
 | 
							Platform::Spellchecker::UpdateLanguages(
 | 
				
			||||||
				settings->dictionariesEnabled());
 | 
								enabled
 | 
				
			||||||
		}
 | 
									? settings->dictionariesEnabled()
 | 
				
			||||||
 | 
									: std::vector<int>());
 | 
				
			||||||
 | 
						};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						const auto guard = gsl::finally([=] {
 | 
				
			||||||
 | 
							onEnabled(settings->spellcheckerEnabled());
 | 
				
			||||||
	});
 | 
						});
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if (Platform::Spellchecker::IsSystemSpellchecker()) {
 | 
						if (Platform::Spellchecker::IsSystemSpellchecker()) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							const auto scriptsLifetime =
 | 
				
			||||||
 | 
								session->lifetime().make_state<rpl::lifetime>();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
							Spellchecker::SupportedScriptsChanged(
 | 
				
			||||||
 | 
							) | rpl::start_with_next([=] {
 | 
				
			||||||
 | 
								AddExceptions();
 | 
				
			||||||
 | 
								scriptsLifetime->destroy();
 | 
				
			||||||
 | 
							}, *scriptsLifetime);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
		return;
 | 
							return;
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						Spellchecker::SupportedScriptsChanged(
 | 
				
			||||||
 | 
						) | rpl::start_with_next(AddExceptions, session->lifetime());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Spellchecker::SetWorkingDirPath(DictionariesPath());
 | 
						Spellchecker::SetWorkingDirPath(DictionariesPath());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	settings->dictionariesEnabledChanges(
 | 
						settings->dictionariesEnabledChanges(
 | 
				
			||||||
| 
						 | 
					@ -377,12 +412,7 @@ void Start(not_null<Main::Session*> session) {
 | 
				
			||||||
	}, session->lifetime());
 | 
						}, session->lifetime());
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	settings->spellcheckerEnabledChanges(
 | 
						settings->spellcheckerEnabledChanges(
 | 
				
			||||||
	) | rpl::start_with_next([=](auto enabled) {
 | 
						) | rpl::start_with_next(onEnabled, session->lifetime());
 | 
				
			||||||
		Platform::Spellchecker::UpdateLanguages(
 | 
					 | 
				
			||||||
			enabled
 | 
					 | 
				
			||||||
				? settings->dictionariesEnabled()
 | 
					 | 
				
			||||||
				: std::vector<int>());
 | 
					 | 
				
			||||||
	}, session->lifetime());
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	const auto method = QGuiApplication::inputMethod();
 | 
						const auto method = QGuiApplication::inputMethod();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		
		Reference in a new issue