diff --git a/atom/renderer/api/atom_api_spell_check_client.cc b/atom/renderer/api/atom_api_spell_check_client.cc index e98f53d7dc..d0e6046f97 100644 --- a/atom/renderer/api/atom_api_spell_check_client.cc +++ b/atom/renderer/api/atom_api_spell_check_client.cc @@ -55,10 +55,13 @@ bool HasWordCharacters(const base::string16& text, int index) { } // namespace -SpellCheckClient::SpellCheckClient(v8::Isolate* isolate, - const std::string& language, +SpellCheckClient::SpellCheckClient(const std::string& language, + bool auto_spell_correct_turned_on, + v8::Isolate* isolate, v8::Handle provider) - : isolate_(isolate), provider_(isolate, provider) { + : auto_spell_correct_turned_on_(auto_spell_correct_turned_on), + isolate_(isolate), + provider_(isolate, provider) { character_attributes_.SetDefaultLanguage(language); // Persistent the method. @@ -141,7 +144,10 @@ void SpellCheckClient::requestCheckingOfText( blink::WebString SpellCheckClient::autoCorrectWord( const blink::WebString& misspelledWord) { - return GetAutoCorrectionWord(base::string16(misspelledWord)); + if (auto_spell_correct_turned_on_) + return GetAutoCorrectionWord(base::string16(misspelledWord)); + else + return blink::WebString(); } void SpellCheckClient::showSpellingUI(bool show) { diff --git a/atom/renderer/api/atom_api_spell_check_client.h b/atom/renderer/api/atom_api_spell_check_client.h index 65aaf10c71..23b26256bf 100644 --- a/atom/renderer/api/atom_api_spell_check_client.h +++ b/atom/renderer/api/atom_api_spell_check_client.h @@ -18,8 +18,9 @@ namespace api { class SpellCheckClient : public blink::WebSpellCheckClient { public: - SpellCheckClient(v8::Isolate* isolate, - const std::string& language, + SpellCheckClient(const std::string& language, + bool auto_spell_correct_turned_on, + v8::Isolate* isolate, v8::Handle provider); virtual ~SpellCheckClient(); @@ -74,6 +75,8 @@ class SpellCheckClient : public blink::WebSpellCheckClient { SpellcheckWordIterator text_iterator_; SpellcheckWordIterator contraction_iterator_; + bool auto_spell_correct_turned_on_; + v8::Isolate* isolate_; mate::ScopedPersistent provider_; mate::ScopedPersistent spell_check_; diff --git a/atom/renderer/api/atom_api_web_frame.cc b/atom/renderer/api/atom_api_web_frame.cc index 0d514e8231..7d43428f4d 100644 --- a/atom/renderer/api/atom_api_web_frame.cc +++ b/atom/renderer/api/atom_api_web_frame.cc @@ -59,14 +59,15 @@ void WebFrame::AttachGuest(int id) { void WebFrame::SetSpellCheckProvider(mate::Arguments* args, const std::string& language, + bool auto_spell_correct_turned_on, v8::Handle provider) { - v8::Isolate* isolate = args->isolate(); - if (!provider->Has(mate::StringToV8(isolate, "spellCheck"))) { + if (!provider->Has(mate::StringToV8(args->isolate(), "spellCheck"))) { args->ThrowError("\"spellCheck\" has to be defined"); return; } - spell_check_client_.reset(new SpellCheckClient(isolate, language, provider)); + spell_check_client_.reset(new SpellCheckClient( + language, auto_spell_correct_turned_on, args->isolate(), provider)); web_frame_->view()->setSpellCheckClient(spell_check_client_.get()); } diff --git a/atom/renderer/api/atom_api_web_frame.h b/atom/renderer/api/atom_api_web_frame.h index d6556621ec..aca4d0f0b5 100644 --- a/atom/renderer/api/atom_api_web_frame.h +++ b/atom/renderer/api/atom_api_web_frame.h @@ -47,6 +47,7 @@ class WebFrame : public mate::Wrappable { // Set the provider that will be used by SpellCheckClient for spell check. void SetSpellCheckProvider(mate::Arguments* args, const std::string& language, + bool auto_spell_correct_turned_on, v8::Handle provider); // mate::Wrappable: