diff options
author | Tobias Markmann <tm@ayena.de> | 2017-06-26 03:58:09 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2017-06-26 09:13:57 (GMT) |
commit | 38b577abe56c76805e2f2bebb5194bee28359145 (patch) | |
tree | cb05fdfd725936c1fbe42e9245220befeadc8f6f /Swift/QtUI | |
parent | 96528818b201c5a250701b58bb9c4d11048b237e (diff) | |
download | swift-38b577abe56c76805e2f2bebb5194bee28359145.zip swift-38b577abe56c76805e2f2bebb5194bee28359145.tar.bz2 |
Use size_t instead of int in SpellParser::PositionPair
Use of int required a lot of casts when using the indices
with std::string methods. Furthermore code used -1 as
error code, which should have used std::optional for invalid
PoistionPair instnaces.
Test-Information:
All tests pass on Debian Stretch with clang-3.9.
Change-Id: Ic5c44ed606deb58b6123d654f25fc50f047dfbc8
Diffstat (limited to 'Swift/QtUI')
-rw-r--r-- | Swift/QtUI/QtTextEdit.cpp | 26 | ||||
-rw-r--r-- | Swift/QtUI/QtTextEdit.h | 6 |
2 files changed, 18 insertions, 14 deletions
diff --git a/Swift/QtUI/QtTextEdit.cpp b/Swift/QtUI/QtTextEdit.cpp index 168e6fc..e63cd4f 100644 --- a/Swift/QtUI/QtTextEdit.cpp +++ b/Swift/QtUI/QtTextEdit.cpp @@ -131,23 +131,25 @@ void QtTextEdit::handleTextChanged() { } } -void QtTextEdit::replaceMisspelledWord(const QString& word, int cursorPosition) { +void QtTextEdit::replaceMisspelledWord(const QString& word, size_t cursorPosition) { QTextCursor cursor = textCursor(); - PositionPair wordPosition = getWordFromCursor(cursorPosition); - cursor.setPosition(boost::get<0>(wordPosition), QTextCursor::MoveAnchor); - cursor.setPosition(boost::get<1>(wordPosition), QTextCursor::KeepAnchor); - QTextCharFormat normalFormat; - cursor.insertText(word, normalFormat); + auto wordPosition = getWordFromCursor(cursorPosition); + if (wordPosition) { + cursor.setPosition(boost::get<0>(*wordPosition), QTextCursor::MoveAnchor); + cursor.setPosition(boost::get<1>(*wordPosition), QTextCursor::KeepAnchor); + QTextCharFormat normalFormat; + cursor.insertText(word, normalFormat); + } } -PositionPair QtTextEdit::getWordFromCursor(int cursorPosition) { +boost::optional<PositionPair> QtTextEdit::getWordFromCursor(size_t cursorPosition) { PositionPairList misspelledPositions = highlighter_->getMisspelledPositions(); for (auto& misspelledPosition : misspelledPositions) { if (cursorPosition >= boost::get<0>(misspelledPosition) && cursorPosition <= boost::get<1>(misspelledPosition)) { return misspelledPosition; } } - return boost::make_tuple(-1,-1); + return boost::optional<PositionPair>(boost::make_tuple(-1,-1)); } QSize QtTextEdit::sizeHint() const { @@ -195,14 +197,14 @@ void QtTextEdit::addSuggestions(QMenu* menu, QContextMenuEvent* event) if (checker_ && highlighter_) { QAction* insertPoint = menu->actions().first(); QTextCursor cursor = cursorForPosition(event->pos()); - PositionPair wordPosition = getWordFromCursor(cursor.position()); - if (boost::get<0>(wordPosition) < 0) { + auto wordPosition = getWordFromCursor(cursor.position()); + if (!wordPosition) { // The click was executed outside a spellable word so no // suggestions are necessary return; } - cursor.setPosition(boost::get<0>(wordPosition), QTextCursor::MoveAnchor); - cursor.setPosition(boost::get<1>(wordPosition), QTextCursor::KeepAnchor); + cursor.setPosition(boost::get<0>(*wordPosition), QTextCursor::MoveAnchor); + cursor.setPosition(boost::get<1>(*wordPosition), QTextCursor::KeepAnchor); std::vector<std::string> wordList; checker_->getSuggestions(Q2PSTRING(cursor.selectedText()), wordList); if (wordList.size() == 0) { diff --git a/Swift/QtUI/QtTextEdit.h b/Swift/QtUI/QtTextEdit.h index 7ce5d88..178f258 100644 --- a/Swift/QtUI/QtTextEdit.h +++ b/Swift/QtUI/QtTextEdit.h @@ -6,6 +6,8 @@ #pragma once +#include <boost/optional.hpp> + #include <QPointer> #include <QTextEdit> @@ -52,10 +54,10 @@ namespace Swift { private: void addSuggestions(QMenu* menu, QContextMenuEvent* event); - void replaceMisspelledWord(const QString& word, int cursorPosition); + void replaceMisspelledWord(const QString& word, size_t cursorPosition); void setUpSpellChecker(); void spellCheckerSettingsWindow(); - PositionPair getWordFromCursor(int cursorPosition); + boost::optional<PositionPair> getWordFromCursor(size_t cursorPosition); void updateStyleSheet(); private: |