diff --git a/src/dialogs/katedialogs.cpp b/src/dialogs/katedialogs.cpp --- a/src/dialogs/katedialogs.cpp +++ b/src/dialogs/katedialogs.cpp @@ -1243,9 +1243,10 @@ void KateDictionaryBar::dictionaryChanged(const QString &dictionary) { - KTextEditor::Range selection = m_view->selectionRange(); + const KTextEditor::Range selection = m_view->selectionRange(); if (selection.isValid() && !selection.isEmpty()) { - m_view->doc()->setDictionary(dictionary, selection); + const bool blockmode = m_view->blockSelection(); + m_view->doc()->setDictionary(dictionary, selection, blockmode); } else { m_view->doc()->setDefaultDictionary(dictionary); } diff --git a/src/document/katedocument.h b/src/document/katedocument.h --- a/src/document/katedocument.h +++ b/src/document/katedocument.h @@ -1234,12 +1234,14 @@ public Q_SLOTS: void clearDictionaryRanges(); - void setDictionary(const QString &dict, const KTextEditor::Range &range); - void revertToDefaultDictionary(const KTextEditor::Range &range); + void setDictionary(const QString &dict, const KTextEditor::Range &range, bool blockmode); void setDefaultDictionary(const QString &dict); void onTheFlySpellCheckingEnabled(bool enable); void refreshOnTheFlyCheck(const KTextEditor::Range &range = KTextEditor::Range::invalid()); +private: + void setDictionary(const QString &dict, const KTextEditor::Range &range); + Q_SIGNALS: void dictionaryRangesPresent(bool yesNo); void defaultDictionaryChanged(KTextEditor::DocumentPrivate *document); diff --git a/src/document/katedocument.cpp b/src/document/katedocument.cpp --- a/src/document/katedocument.cpp +++ b/src/document/katedocument.cpp @@ -5563,6 +5563,19 @@ emit dictionaryRangesPresent(false); } +void KTextEditor::DocumentPrivate::setDictionary(const QString &newDictionary, const KTextEditor::Range &range, bool blockmode) +{ + if (blockmode) { + for (int i = range.start().line(); i <= range.end().line(); ++i) { + setDictionary(newDictionary, rangeOnLine(range, i)); + } + } else { + setDictionary(newDictionary, range); + } + + emit dictionaryRangesPresent(!m_dictionaryRanges.isEmpty()); +} + void KTextEditor::DocumentPrivate::setDictionary(const QString &newDictionary, const KTextEditor::Range &range) { KTextEditor::Range newDictionaryRange = range; @@ -5626,12 +5639,6 @@ if (m_onTheFlyChecker && !newDictionaryRange.isEmpty()) { m_onTheFlyChecker->refreshSpellCheck(newDictionaryRange); } - emit dictionaryRangesPresent(!m_dictionaryRanges.isEmpty()); -} - -void KTextEditor::DocumentPrivate::revertToDefaultDictionary(const KTextEditor::Range &range) -{ - setDictionary(QString(), range); } void KTextEditor::DocumentPrivate::setDefaultDictionary(const QString &dict)