summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2014-12-02 23:54:24 (GMT)
committerSwift Review <review@swift.im>2014-12-10 16:07:10 (GMT)
commit92672e17a52d0c86e693183627c8c6b8fa44fb86 (patch)
tree5064a73aa3e7e84dc1b9d92f3acbe277a41bbaeb /Swift/QtUI/QtSpellCheckHighlighter.cpp
parent85b66ce2be8fadc671eb35e45d6caeb8930b39c8 (diff)
downloadswift-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.cpp41
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_;
+}
+
+}