diff options
author | Tobias Markmann <tm@ayena.de> | 2014-12-02 23:54:24 (GMT) |
---|---|---|
committer | Swift Review <review@swift.im> | 2014-12-10 16:07:10 (GMT) |
commit | 92672e17a52d0c86e693183627c8c6b8fa44fb86 (patch) | |
tree | 5064a73aa3e7e84dc1b9d92f3acbe277a41bbaeb /Swift/QtUI/QtSpellCheckHighlighter.cpp | |
parent | 85b66ce2be8fadc671eb35e45d6caeb8930b39c8 (diff) | |
download | swift-92672e17a52d0c86e693183627c8c6b8fa44fb86.zip swift-92672e17a52d0c86e693183627c8c6b8fa44fb86.tar.bz2 |
Fix spell checking by using QSyntaxHighlighter.
This fixes spell checking not interfering with Qt's undo stack management anymore.
Test-Information:
Tested on OS X 10.9.5 with Qt 5.3.2.
Change-Id: Icc3aa9f7213856388e4da317525c75ac97da72e3
Diffstat (limited to 'Swift/QtUI/QtSpellCheckHighlighter.cpp')
-rw-r--r-- | Swift/QtUI/QtSpellCheckHighlighter.cpp | 41 |
1 files changed, 41 insertions, 0 deletions
diff --git a/Swift/QtUI/QtSpellCheckHighlighter.cpp b/Swift/QtUI/QtSpellCheckHighlighter.cpp new file mode 100644 index 0000000..dba6100 --- /dev/null +++ b/Swift/QtUI/QtSpellCheckHighlighter.cpp @@ -0,0 +1,41 @@ +/* + * Copyright (c) 2014 Kevin Smith and Remko Tronçon + * Licensed under the GNU General Public License v3. + * See Documentation/Licenses/GPLv3.txt for more information. + */ + +#include <Swift/QtUI/QtSpellCheckHighlighter.h> + +#include <SwifTools/SpellChecker.h> + +#include <Swift/QtUI/QtSwiftUtil.h> + +namespace Swift { + +QtSpellCheckHighlighter::QtSpellCheckHighlighter(QTextDocument* parent, SpellChecker* spellChecker) : QSyntaxHighlighter(parent), checker_(spellChecker) { + +} + +QtSpellCheckHighlighter::~QtSpellCheckHighlighter() { + +} + +void QtSpellCheckHighlighter::highlightBlock(const QString& text) { + misspelledPositions_.clear(); + std::string fragment = Q2PSTRING(text); + checker_->checkFragment(fragment, misspelledPositions_); + + QTextCharFormat spellingErrorFormat; + spellingErrorFormat.setUnderlineColor(QColor(Qt::red)); + spellingErrorFormat.setUnderlineStyle(QTextCharFormat::SpellCheckUnderline); + + foreach (PositionPair position, misspelledPositions_) { + setFormat(boost::get<0>(position), boost::get<1>(position) - boost::get<0>(position), spellingErrorFormat); + }; +} + +PositionPairList QtSpellCheckHighlighter::getMisspelledPositions() const { + return misspelledPositions_; +} + +} |