From 34c44bd647fa66985fbb230f187bde4c2b261ea5 Mon Sep 17 00:00:00 2001 From: Allan Odgaard Date: Fri, 26 Jul 2013 22:45:36 +0200 Subject: [PATCH] =?UTF-8?q?Don=E2=80=99t=20create=20NSSpellChecker=20tags?= =?UTF-8?q?=20until=20needed?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Frameworks/ns/src/spellcheck.h | 7 +++++-- Frameworks/ns/src/spellcheck.mm | 18 +++++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/Frameworks/ns/src/spellcheck.h b/Frameworks/ns/src/spellcheck.h index 90f9ebc0..83f46ee6 100644 --- a/Frameworks/ns/src/spellcheck.h +++ b/Frameworks/ns/src/spellcheck.h @@ -14,14 +14,17 @@ namespace ns struct spelling_tag_t { spelling_tag_t () : _helper(new helper_t) { } - operator long int () const { return _helper->_tag; } + operator long int () const { return _helper->tag(); } private: struct PUBLIC helper_t { - helper_t (); ~helper_t (); + long int tag (); + + private: long int _tag; + bool _did_setup = false; }; std::shared_ptr _helper; diff --git a/Frameworks/ns/src/spellcheck.mm b/Frameworks/ns/src/spellcheck.mm index f3b932b3..fd6637e1 100644 --- a/Frameworks/ns/src/spellcheck.mm +++ b/Frameworks/ns/src/spellcheck.mm @@ -5,20 +5,28 @@ namespace ns { - spelling_tag_t::helper_t::helper_t () + long int spelling_tag_t::helper_t::tag () { - _tag = [NSSpellChecker uniqueSpellDocumentTag]; + if(!_did_setup) + { + _tag = [NSSpellChecker uniqueSpellDocumentTag]; + _did_setup = true; + } + return _tag; } spelling_tag_t::helper_t::~helper_t () { - @autoreleasepool { - [[NSSpellChecker sharedSpellChecker] closeSpellDocumentWithTag:_tag]; + if(_did_setup) + { + @autoreleasepool { + [[NSSpellChecker sharedSpellChecker] closeSpellDocumentWithTag:_tag]; + } } } template - _OutputIter spellcheck (char const* first, char const* last, std::string const& language, int tag, size_t offset, _OutputIter out) + _OutputIter spellcheck (char const* first, char const* last, std::string const& language, long int tag, size_t offset, _OutputIter out) { NSSpellChecker* spellChecker = [NSSpellChecker sharedSpellChecker]; NSString* lang = [NSString stringWithCxxString:language];