Hello community,

here is the log from the commit of package sonnet for openSUSE:Factory checked 
in at 2018-04-19 15:20:07
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/sonnet (Old)
 and      /work/SRC/openSUSE:Factory/.sonnet.new (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "sonnet"

Thu Apr 19 15:20:07 2018 rev:54 rq:596917 version:5.45.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/sonnet/sonnet.changes    2018-03-20 
21:49:02.282142850 +0100
+++ /work/SRC/openSUSE:Factory/.sonnet.new/sonnet.changes       2018-04-19 
15:20:08.937776549 +0200
@@ -1,0 +2,22 @@
+Sat Apr 14 13:19:09 CEST 2018 - [email protected]
+
+- Update to 5.45.0
+  * New feature release
+  * For more details please see:
+  * https://www.kde.org/announcements/kde-frameworks-5.45.0.php
+- Changes since 5.44.0:
+  * Don't impose using the default client
+  * Remove deprecated cmake code
+  * Remove not necessary QtCore and co
+  * NSSpellChecker plugin cleanup
+  * Include replacement strings in the suggestion list
+  * implement NSSpellCheckerDict::addPersonal()
+  * NSSpellCheckerDict::suggest() returns a list of suggestions
+  * initialise NSSpellChecker language in NSSpellCheckerDict ctor
+  * implement NSSpellChecker logging category
+  * NSSpellChecker requires AppKit
+  * Move NSSpellCheckerClient::reliability() out of line
+  * use the preferred Mac platform token
+  * Use correct directory to lookup trigrams in windows build dir
+
+-------------------------------------------------------------------

Old:
----
  sonnet-5.44.0.tar.xz

New:
----
  sonnet-5.45.0.tar.xz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ sonnet.spec ++++++
--- /var/tmp/diff_new_pack.vtZUyL/_old  2018-04-19 15:20:09.645748139 +0200
+++ /var/tmp/diff_new_pack.vtZUyL/_new  2018-04-19 15:20:09.645748139 +0200
@@ -18,13 +18,13 @@
 
 %bcond_without lang
 %define sonum   5
-%define _tar_path 5.44
+%define _tar_path 5.45
 # Full KF5 version (e.g. 5.33.0)
 %{!?_kf5_version: %global _kf5_version %{version}}
 # Last major and minor KF5 version (e.g. 5.33)
 %{!?_kf5_bugfix_version: %global _kf5_bugfix_version %(echo %{_kf5_version} | 
awk -F. '{print $1"."$2}')}
 Name:           sonnet
-Version:        5.44.0
+Version:        5.45.0
 Release:        0
 #BuildRequires:  aspell-devel
 BuildRequires:  cmake >= 3.0

++++++ sonnet-5.44.0.tar.xz -> sonnet-5.45.0.tar.xz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/CMakeLists.txt 
new/sonnet-5.45.0/CMakeLists.txt
--- old/sonnet-5.44.0/CMakeLists.txt    2018-03-03 11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/CMakeLists.txt    2018-04-07 21:41:09.000000000 +0200
@@ -1,11 +1,11 @@
 
 cmake_minimum_required(VERSION 3.0)
 
-set(KF5_VERSION "5.44.0") # handled by release scripts
+set(KF5_VERSION "5.45.0") # handled by release scripts
 project(Sonnet VERSION ${KF5_VERSION})
 
 include(FeatureSummary)
-find_package(ECM 5.44.0  NO_MODULE)
+find_package(ECM 5.45.0  NO_MODULE)
 set_package_properties(ECM PROPERTIES TYPE REQUIRED DESCRIPTION "Extra CMake 
Modules." URL 
"https://projects.kde.org/projects/kdesupport/extra-cmake-modules";)
 feature_summary(WHAT REQUIRED_PACKAGES_NOT_FOUND 
FATAL_ON_MISSING_REQUIRED_PACKAGES)
 
@@ -17,7 +17,7 @@
 include(KDECMakeSettings)
 include(ECMQtDeclareLoggingCategory)
 
-set(REQUIRED_QT_VERSION 5.7.0)
+set(REQUIRED_QT_VERSION 5.8.0)
 option(SONNET_USE_WIDGETS "Build components using Qt5Widgets" ON)
 if(SONNET_USE_WIDGETS)
     find_package(Qt5 ${REQUIRED_QT_VERSION} CONFIG REQUIRED Widgets)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/autotests/test_core.h 
new/sonnet-5.45.0/autotests/test_core.h
--- old/sonnet-5.44.0/autotests/test_core.h     2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/autotests/test_core.h     2018-04-07 21:41:09.000000000 
+0200
@@ -19,7 +19,7 @@
 #ifndef TEST_CORE_H
 #define TEST_CORE_H
 
-#include <QtCore/QObject>
+#include <QObject>
 
 class SonnetCoreTest : public QObject
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/data/CMakeLists.txt 
new/sonnet-5.45.0/data/CMakeLists.txt
--- old/sonnet-5.44.0/data/CMakeLists.txt       2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/data/CMakeLists.txt       2018-04-07 21:41:09.000000000 
+0200
@@ -14,7 +14,6 @@
 INSTALL(TARGETS parsetrigrams ${KF5_INSTALL_TARGETS_DEFAULT_ARGS})
 INSTALL(TARGETS gentrigrams ${KF5_INSTALL_TARGETS_DEFAULT_ARGS})
 
-cmake_policy(SET CMP0026 OLD) # FIXME: make this work with CMP0026 set to NEW
 if(CMAKE_CROSSCOMPILING AND PARSETRIGRAMS_EXECUTABLE)
     add_executable(KF5::parsetrigrams IMPORTED GLOBAL)
     set_target_properties(KF5::parsetrigrams PROPERTIES IMPORTED_LOCATION 
${PARSETRIGRAMS_EXECUTABLE})
@@ -22,15 +21,14 @@
     add_executable(KF5::parsetrigrams ALIAS parsetrigrams)
 endif()
 
-macro(create_trigrams_map _target_name _in_DIR _out_FILE)
-    get_target_property(PARSETRIGRAMS_EXECUTABLE parsetrigrams LOCATION)
+function(create_trigrams_map _target_name _in_DIR _out_FILE)
     add_custom_target(trigrams_${_target_name} ALL)
     add_custom_command(TARGET trigrams_${_target_name}
                        COMMAND $<TARGET_FILE:KF5::parsetrigrams> "${_in_DIR}" 
> "${_out_FILE}"
                       )
 
     add_dependencies(trigrams_${_target_name} parsetrigrams)
-endmacro(create_trigrams_map)
+endfunction(create_trigrams_map)
 
 create_trigrams_map(sonnet
                     ${CMAKE_SOURCE_DIR}/data/trigrams
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/data/gentrigrams.cpp 
new/sonnet-5.45.0/data/gentrigrams.cpp
--- old/sonnet-5.44.0/data/gentrigrams.cpp      2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/data/gentrigrams.cpp      2018-04-07 21:41:09.000000000 
+0200
@@ -21,10 +21,10 @@
  * 02110-1301  USA
  */
 
-#include <QtCore/QFile>
-#include <QtCore/QHash>
-#include <QtCore/QString>
-#include <QtCore/QDebug>
+#include <QFile>
+#include <QHash>
+#include <QString>
+#include <QDebug>
 #include "guesslanguage.h"
 
 int main(int argc, char *argv[])
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/data/parsetrigrams.cpp 
new/sonnet-5.45.0/data/parsetrigrams.cpp
--- old/sonnet-5.44.0/data/parsetrigrams.cpp    2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/data/parsetrigrams.cpp    2018-04-07 21:41:09.000000000 
+0200
@@ -21,15 +21,15 @@
  * 02110-1301  USA
  */
 
-#include <QtCore/QString>
-#include <QtCore/QTextStream>
-#include <QtCore/QDir>
-#include <QtCore/QFile>
-#include <QtCore/QHash>
-#include <QtCore/QRegExp>
-#include <QtCore/QStringList>
-#include <QtCore/QDebug>
-#include <QtCore/QDataStream>
+#include <QString>
+#include <QTextStream>
+#include <QDir>
+#include <QFile>
+#include <QHash>
+#include <QRegExp>
+#include <QStringList>
+#include <QDebug>
+#include <QDataStream>
 
 int main(int argc, char **argv)
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/examples/dialogexample.h 
new/sonnet-5.45.0/examples/dialogexample.h
--- old/sonnet-5.44.0/examples/dialogexample.h  2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/examples/dialogexample.h  2018-04-07 21:41:09.000000000 
+0200
@@ -23,7 +23,7 @@
 
 #include "dialog.h"
 
-#include <QtCore/QObject>
+#include <QObject>
 
 class TestDialog : public QObject
 {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/po/ca@valencia/sonnet5_qt.po 
new/sonnet-5.45.0/po/ca@valencia/sonnet5_qt.po
--- old/sonnet-5.44.0/po/ca@valencia/sonnet5_qt.po      2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/po/ca@valencia/sonnet5_qt.po      2018-04-07 
21:41:09.000000000 +0200
@@ -263,8 +263,8 @@
 "All</b>.</p>\n"
 "</qt>"
 msgstr ""
-"<qt><p>Esta paraula s'ha considerat una «paraula desconeguda» perquè no casa "
-"amb cap entrada del diccionari actualment en ús. També podria ser una "
+"<qt><p>Aquesta paraula s'ha considerat una «paraula desconeguda» perquè no "
+"casa amb cap entrada del diccionari actualment en ús. També podria ser una "
 "paraula en un idioma estranger.</p>\n"
 "<p>Si la paraula no està mal escrita, podeu afegir-la al diccionari clicant "
 "a <b>Afig al diccionari</b>. Si no voleu afegir la paraula desconeguda al "
@@ -324,7 +324,7 @@
 msgstr ""
 "<qt>\n"
 "<p>Ací podeu veure un extracte del text que mostra la paraula desconeguda en "
-"el seu context. Si esta informació no és suficient per a triar la millor "
+"el seu context. Si aquesta informació no és suficient per a triar la millor "
 "substitució per a la paraula desconeguda, podeu clicar al document que esteu "
 "revisant, llegir una part més gran del text i llavors tornar ací per a "
 "continuar la verificació.</p>\n"
@@ -384,9 +384,9 @@
 "està disponible la seua correcció, i si ho està, cliqueu-hi. Si cap de les "
 "paraules de la llista és una substitució bona, podeu teclejar la paraula "
 "correcta al quadre d'edició de sobre.</p>\n"
-"<p>Per a corregir esta paraula cliqueu <b>Substitueix</b> si voleu corregir "
-"només esta ocurrència o <b>Substitueix-ho tot</b> si voleu corregir totes "
-"les ocurrències.</p>\n"
+"<p>Per a corregir aquesta paraula cliqueu <b>Substitueix</b> si voleu "
+"corregir només aquesta ocurrència o <b>Substitueix-ho tot</b> si voleu "
+"corregir totes les ocurrències.</p>\n"
 "</qt>"
 
 #: ui/sonnetui.ui:151 ui/sonnetui.ui:167
@@ -403,7 +403,7 @@
 "<qt>\n"
 "<p>Si la paraula desconeguda està mal escrita, heu de teclejar la correcció "
 "de l'error ortogràfic ací o seleccionar-la de la llista de sota.</p>\n"
-"<p>Llavors podeu clicar <b>Substitueix</b> si voleu corregir només esta "
+"<p>Llavors podeu clicar <b>Substitueix</b> si voleu corregir només aquesta "
 "ocurrència de la paraula o <b>Substitueix-ho tot</b> si voleu corregir totes "
 "les ocurrències.</p>\n"
 "</qt>"
@@ -432,8 +432,8 @@
 "</qt>"
 msgstr ""
 "<qt>\n"
-"<p>Cliqueu ací per a substituir esta ocurrència del text desconegut amb el "
-"text del quadre d'edició de sobre (a l'esquerra).</p>\n"
+"<p>Cliqueu ací per a substituir aquesta ocurrència del text desconegut amb "
+"el text del quadre d'edició de sobre (a l'esquerra).</p>\n"
 "</qt>"
 
 #: ui/sonnetui.ui:218
@@ -470,9 +470,9 @@
 "</qt>"
 msgstr ""
 "<qt>\n"
-"<p>Cliqueu ací per a deixar esta ocurrència de la paraula desconeguda tal "
+"<p>Cliqueu ací per a deixar aquesta ocurrència de la paraula desconeguda tal "
 "com està.</p>\n"
-"<p>Esta acció és útil quan una paraula és un nom, un acrònim, una paraula "
+"<p>Aquesta acció és útil quan una paraula és un nom, un acrònim, una paraula "
 "estrangera o qualsevol altra paraula desconeguda que voleu usar però no "
 "voleu afegir al diccionari.</p>\n"
 "</qt>"
@@ -496,7 +496,7 @@
 "<qt>\n"
 "<p>Cliqueu ací per a deixar totes les ocurrències de la paraula desconeguda "
 "tal com estan.</p>\n"
-"<p>Esta acció és útil quan una paraula és un nom, un acrònim, una paraula "
+"<p>Aquesta acció és útil quan una paraula és un nom, un acrònim, una paraula "
 "estrangera o qualsevol altra paraula desconeguda que voleu usar però no "
 "voleu afegir al diccionari.</p>\n"
 "</qt>"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/po/id/sonnet5_qt.po 
new/sonnet-5.45.0/po/id/sonnet5_qt.po
--- old/sonnet-5.44.0/po/id/sonnet5_qt.po       2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/po/id/sonnet5_qt.po       2018-04-07 21:41:09.000000000 
+0200
@@ -9,7 +9,7 @@
 "Project-Id-Version: kdelibs4\n"
 "Report-Msgid-Bugs-To: http://bugs.kde.org\n";
 "POT-Creation-Date: 2014-03-23 01:50+0000\n"
-"PO-Revision-Date: 2018-02-18 11:18+0700\n"
+"PO-Revision-Date: 2018-04-03 21:50+0700\n"
 "Last-Translator: Wantoyo <[email protected]>\n"
 "Language-Team: Indonesian <[email protected]>\n"
 "Language: id\n"
@@ -17,6 +17,7 @@
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Lokalize 2.0\n"
 "X-Qt-Contexts: true\n"
 
 #: core/loader.cpp:172
@@ -375,7 +376,7 @@
 "<p>Jika kata tak dikenal salah eja, anda harus memeriksa apakah koreksi "
 "untuk hal itu tersedia dan jika ada, klik pada koreksinya. Jika tidak ada "
 "kata dalam senarai ini yang cukup pantas sebagai pengganti anda dapat "
-"mengetikkan kata yang benar di kotak sunting di atas.</p>\n"
+"mengetikkan kata yang benar di kotak edit di atas.</p>\n"
 "<p>Untuk mengoreksi kata ini klik <b>Ganti</b> jika anda ingin mengoreksi "
 "hanya kecocokan kata ini atau <b>Ganti Semua</b> jika anda ingin mengoreksi "
 "semua kecocokan kata.</p>\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/po/zh_CN/sonnet5_qt.po 
new/sonnet-5.45.0/po/zh_CN/sonnet5_qt.po
--- old/sonnet-5.44.0/po/zh_CN/sonnet5_qt.po    2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/po/zh_CN/sonnet5_qt.po    2018-04-07 21:41:09.000000000 
+0200
@@ -14,7 +14,7 @@
 msgid ""
 msgstr ""
 "Project-Id-Version: kdeorg\n"
-"PO-Revision-Date: 2018-02-28 02:23-0500\n"
+"PO-Revision-Date: 2018-04-05 09:22-0400\n"
 "Last-Translator: guoyunhebrave <[email protected]>\n"
 "Language-Team: Chinese Simplified\n"
 "Language: zh_CN\n"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/backgroundchecker.h 
new/sonnet-5.45.0/src/core/backgroundchecker.h
--- old/sonnet-5.44.0/src/core/backgroundchecker.h      2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/core/backgroundchecker.h      2018-04-07 
21:41:09.000000000 +0200
@@ -25,7 +25,7 @@
 
 #include "sonnetcore_export.h"
 
-#include <QtCore/QObject>
+#include <QObject>
 class BackgroundCheckerPrivate;
 
 /**
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/client_p.h 
new/sonnet-5.45.0/src/core/client_p.h
--- old/sonnet-5.44.0/src/core/client_p.h       2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/core/client_p.h       2018-04-07 21:41:09.000000000 
+0200
@@ -20,9 +20,9 @@
 #ifndef SONNET_CLIENT_P_H
 #define SONNET_CLIENT_P_H
 
-#include <QtCore/QObject>
-#include <QtCore/QStringList>
-#include <QtCore/QString>
+#include <QObject>
+#include <QStringList>
+#include <QString>
 
 #include "sonnetcore_export.h"
 /*
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/guesslanguage.cpp 
new/sonnet-5.45.0/src/core/guesslanguage.cpp
--- old/sonnet-5.44.0/src/core/guesslanguage.cpp        2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/core/guesslanguage.cpp        2018-04-07 
21:41:09.000000000 +0200
@@ -19,12 +19,12 @@
     Boston, MA 02110-1301, USA.
 */
 
-#include <QtCore/QCoreApplication>
-#include <QtCore/QFile>
-#include <QtCore/QFileInfo>
-#include <QtCore/QStandardPaths>
-#include <QtCore/QTime>
-#include <QtCore/QDataStream>
+#include <QCoreApplication>
+#include <QFile>
+#include <QFileInfo>
+#include <QStandardPaths>
+#include <QTime>
+#include <QDataStream>
 #include <QLocale>
 
 #include "guesslanguage.h"
@@ -630,8 +630,13 @@
                                      "kf5/sonnet/trigrams.map"));
 
     if (triMapFile.isEmpty()) {
+#ifdef Q_OS_WIN
+        triMapFile = QStringLiteral("%1/data/kf5/sonnet/trigrams.map").arg(
+                    QCoreApplication::applicationDirPath());
+#else
         triMapFile = QStringLiteral("%1/../share/kf5/sonnet/trigrams.map").arg(
             QCoreApplication::applicationDirPath());
+#endif
     }
     qCDebug(SONNET_LOG_CORE) << "Loading trigrams from" << triMapFile;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/guesslanguage.h 
new/sonnet-5.45.0/src/core/guesslanguage.h
--- old/sonnet-5.44.0/src/core/guesslanguage.h  2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/core/guesslanguage.h  2018-04-07 21:41:09.000000000 
+0200
@@ -20,8 +20,8 @@
 #ifndef GUESSLANGUAGE_H
 #define GUESSLANGUAGE_H
 
-#include <QtCore/QString>
-#include <QtCore/QLocale>
+#include <QString>
+#include <QLocale>
 
 #include "sonnetcore_export.h"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/languagefilter.cpp 
new/sonnet-5.45.0/src/core/languagefilter.cpp
--- old/sonnet-5.44.0/src/core/languagefilter.cpp       2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/core/languagefilter.cpp       2018-04-07 
21:41:09.000000000 +0200
@@ -18,7 +18,7 @@
     Boston, MA 02110-1301, USA.
 */
 
-#include <QtCore/QString>
+#include <QString>
 
 #include "languagefilter_p.h"
 #include "guesslanguage.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/languagefilter_p.h 
new/sonnet-5.45.0/src/core/languagefilter_p.h
--- old/sonnet-5.44.0/src/core/languagefilter_p.h       2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/core/languagefilter_p.h       2018-04-07 
21:41:09.000000000 +0200
@@ -21,7 +21,7 @@
 #ifndef LANGUAGEFILTER_H
 #define LANGUAGEFILTER_H
 
-#include <QtCore/QString>
+#include <QString>
 #include <tokenizer_p.h>
 #include "sonnetcore_export.h"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/loader.cpp 
new/sonnet-5.45.0/src/core/loader.cpp
--- old/sonnet-5.44.0/src/core/loader.cpp       2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/core/loader.cpp       2018-04-07 21:41:09.000000000 
+0200
@@ -23,17 +23,19 @@
 #include "client_p.h"
 #include "spellerplugin_p.h"
 
-#include <QtCore/QHash>
-#include <QtCore/QMap>
-#include <QtCore/QLocale>
-#include <QtCore/QCoreApplication>
-#include <QtCore/QPluginLoader>
+#include <QHash>
+#include <QMap>
+#include <QLocale>
+#include <QCoreApplication>
+#include <QPluginLoader>
 #include "core_debug.h"
-#include <QtCore/QDir>
+#include <QDir>
+
+#include <algorithm>
 
 #ifdef SONNET_STATIC
 #include "../plugins/hunspell/hunspellclient.h"
-#ifdef Q_OS_MAC
+#ifdef Q_OS_MACOS
 #include "../plugins/nsspellchecker/nsspellcheckerclient.h"
 #endif
 #endif
@@ -84,13 +86,9 @@
     QString backend = clientName;
     QString plang = language;
 
-    if (backend.isEmpty()) {
-        backend = d->settings->defaultClient();
-    }
     if (plang.isEmpty()) {
         plang = d->settings->defaultLanguage();
     }
-
     const QVector<Client *> lClients = d->languageClients[plang];
 
     if (lClients.isEmpty()) {
@@ -98,22 +96,39 @@
         return nullptr;
     }
 
+    if (backend.isEmpty()) {
+        backend = d->settings->defaultClient();
+        if (!backend.isEmpty()) {
+            // check if the default client supports the requested language;
+            // if it does it will be an element of lClients.
+            bool unknown = !std::any_of(lClients.constBegin(), 
lClients.constEnd(), [backend] (const Client *client) {
+                    return client->name() == backend; });
+            if (unknown) {
+                qCWarning(SONNET_LOG_CORE) << "Default client" << backend << 
"doesn't support language:" << plang;
+                backend = QString();
+            }
+        }
+    }
+
     QVectorIterator<Client *> itr(lClients);
     while (itr.hasNext()) {
         Client *item = itr.next();
         if (!backend.isEmpty()) {
             if (backend == item->name()) {
                 SpellerPlugin *dict = item->createSpeller(plang);
+                qCDebug(SONNET_LOG_CORE) << "Using the" << item->name() << 
"plugin for language" << plang;
                 return dict;
             }
         } else {
             //the first one is the one with the highest
             //reliability
             SpellerPlugin *dict = item->createSpeller(plang);
+            qCDebug(SONNET_LOG_CORE) << "Using the" << item->name() << "plugin 
for language" << plang;
             return dict;
         }
     }
 
+    qCWarning(SONNET_LOG_CORE) << "The default client" << backend << "has no 
language dictionaries for the language:" << plang;
     return nullptr;
 }
 
@@ -289,7 +304,7 @@
         qCWarning(SONNET_LOG_CORE) << "Sonnet: No speller backends available!";
     }
 #else
-#ifdef Q_OS_MAC
+#ifdef Q_OS_MACOS
     loadPlugin(QString());
 #endif
     loadPlugin(QStringLiteral("Hunspell"));
@@ -317,7 +332,7 @@
     if (pluginPath == QLatin1String("Hunspell")) {
         client = new HunspellClient(this);
     }
-#ifdef Q_OS_MAC
+#ifdef Q_OS_MACOS
     else {
         client = new NSSpellCheckerClient(this);
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/loader_p.h 
new/sonnet-5.45.0/src/core/loader_p.h
--- old/sonnet-5.44.0/src/core/loader_p.h       2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/core/loader_p.h       2018-04-07 21:41:09.000000000 
+0200
@@ -22,9 +22,9 @@
 
 #include "sonnetcore_export.h"
 
-#include <QtCore/QObject>
-#include <QtCore/QStringList>
-#include <QtCore/QString>
+#include <QObject>
+#include <QStringList>
+#include <QString>
 #include <QSharedPointer>
 
 namespace Sonnet {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/settings.cpp 
new/sonnet-5.45.0/src/core/settings.cpp
--- old/sonnet-5.44.0/src/core/settings.cpp     2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/core/settings.cpp     2018-04-07 21:41:09.000000000 
+0200
@@ -23,10 +23,10 @@
 
 #include "loader_p.h"
 
-#include <QtCore/QMap>
-#include <QtCore/QMutableStringListIterator>
-#include <QtCore/QLocale>
-#include <QtCore/QSettings>
+#include <QMap>
+#include <QMutableStringListIterator>
+#include <QLocale>
+#include <QSettings>
 
 namespace Sonnet {
 class SettingsPrivate
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/settings_p.h 
new/sonnet-5.45.0/src/core/settings_p.h
--- old/sonnet-5.44.0/src/core/settings_p.h     2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/core/settings_p.h     2018-04-07 21:41:09.000000000 
+0200
@@ -20,8 +20,8 @@
 #ifndef SONNET_SETTINGS_P_H
 #define SONNET_SETTINGS_P_H
 
-#include <QtCore/QStringList>
-#include <QtCore/QString>
+#include <QStringList>
+#include <QString>
 #include "sonnetcore_export.h"
 
 namespace Sonnet {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/speller.h 
new/sonnet-5.45.0/src/core/speller.h
--- old/sonnet-5.44.0/src/core/speller.h        2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/core/speller.h        2018-04-07 21:41:09.000000000 
+0200
@@ -20,9 +20,9 @@
 #ifndef SONNET_SPELLER_H
 #define SONNET_SPELLER_H
 
-#include <QtCore/QStringList>
-#include <QtCore/QString>
-#include <QtCore/QMap>
+#include <QStringList>
+#include <QString>
+#include <QMap>
 
 #include "sonnetcore_export.h"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/spellerplugin_p.h 
new/sonnet-5.45.0/src/core/spellerplugin_p.h
--- old/sonnet-5.44.0/src/core/spellerplugin_p.h        2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/core/spellerplugin_p.h        2018-04-07 
21:41:09.000000000 +0200
@@ -20,8 +20,8 @@
 #ifndef SONNET_SPELLERPLUGIN_P_H
 #define SONNET_SPELLERPLUGIN_P_H
 
-#include <QtCore/QStringList>
-#include <QtCore/QString>
+#include <QStringList>
+#include <QString>
 
 #include "sonnetcore_export.h"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/textbreaks.cpp 
new/sonnet-5.45.0/src/core/textbreaks.cpp
--- old/sonnet-5.44.0/src/core/textbreaks.cpp   2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/core/textbreaks.cpp   2018-04-07 21:41:09.000000000 
+0200
@@ -18,8 +18,8 @@
     Boston, MA 02110-1301, USA.
 */
 
-#include <QtCore/QHash>
-#include <QtCore/QString>
+#include <QHash>
+#include <QString>
 #include <QTextBoundaryFinder>
 
 #include "textbreaks_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/tokenizer.cpp 
new/sonnet-5.45.0/src/core/tokenizer.cpp
--- old/sonnet-5.44.0/src/core/tokenizer.cpp    2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/core/tokenizer.cpp    2018-04-07 21:41:09.000000000 
+0200
@@ -20,8 +20,8 @@
     Boston, MA 02110-1301, USA.
 */
 
-#include <QtCore/QList>
-#include <QtCore/QString>
+#include <QList>
+#include <QString>
 
 #include "tokenizer_p.h"
 #include "textbreaks_p.h"
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/core/tokenizer_p.h 
new/sonnet-5.45.0/src/core/tokenizer_p.h
--- old/sonnet-5.44.0/src/core/tokenizer_p.h    2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/core/tokenizer_p.h    2018-04-07 21:41:09.000000000 
+0200
@@ -21,7 +21,7 @@
 #ifndef ABSTRACTTOKENIZER_H
 #define ABSTRACTTOKENIZER_H
 
-#include <QtCore/QString>
+#include <QString>
 #include "sonnetcore_export.h"
 
 namespace Sonnet {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/plugins/aspell/aspelldict.cpp 
new/sonnet-5.45.0/src/plugins/aspell/aspelldict.cpp
--- old/sonnet-5.44.0/src/plugins/aspell/aspelldict.cpp 2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/aspell/aspelldict.cpp 2018-04-07 
21:41:09.000000000 +0200
@@ -22,7 +22,7 @@
 
 #include "aspell_debug.h"
 
-#include <QtCore/QTextCodec>
+#include <QTextCodec>
 #ifdef Q_OS_WIN
 #include <QCoreApplication>
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/plugins/enchant/enchantclient.cpp 
new/sonnet-5.45.0/src/plugins/enchant/enchantclient.cpp
--- old/sonnet-5.44.0/src/plugins/enchant/enchantclient.cpp     2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/enchant/enchantclient.cpp     2018-04-07 
21:41:09.000000000 +0200
@@ -20,7 +20,7 @@
 #include "enchantdict.h"
 
 #include <QtPlugin>
-#include <QtCore/QDebug>
+#include <QDebug>
 
 using namespace Sonnet;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/plugins/enchant/enchantclient.h 
new/sonnet-5.45.0/src/plugins/enchant/enchantclient.h
--- old/sonnet-5.44.0/src/plugins/enchant/enchantclient.h       2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/enchant/enchantclient.h       2018-04-07 
21:41:09.000000000 +0200
@@ -22,8 +22,8 @@
 #include "spellerplugin_p.h"
 #include "client_p.h"
 
-#include <QtCore/QSet>
-#include <QtCore/QVariantList>
+#include <QSet>
+#include <QVariantList>
 #include <enchant.h>
 
 namespace Sonnet {
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/plugins/enchant/enchantdict.cpp 
new/sonnet-5.45.0/src/plugins/enchant/enchantdict.cpp
--- old/sonnet-5.44.0/src/plugins/enchant/enchantdict.cpp       2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/enchant/enchantdict.cpp       2018-04-07 
21:41:09.000000000 +0200
@@ -19,8 +19,8 @@
 #include "enchantdict.h"
 #include "enchantclient.h"
 
-#include <QtCore/QTextCodec>
-#include <QtCore/QDebug>
+#include <QTextCodec>
+#include <QDebug>
 
 using namespace Sonnet;
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/plugins/hspell/hspelldict.cpp 
new/sonnet-5.45.0/src/plugins/hspell/hspelldict.cpp
--- old/sonnet-5.44.0/src/plugins/hspell/hspelldict.cpp 2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/hspell/hspelldict.cpp 2018-04-07 
21:41:09.000000000 +0200
@@ -25,7 +25,7 @@
 
 #include "hspell_debug.h"
 
-#include <QtCore/QTextCodec>
+#include <QTextCodec>
 #include <QSettings>
 
 using namespace Sonnet;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/plugins/hspell/hspelldict.h 
new/sonnet-5.45.0/src/plugins/hspell/hspelldict.h
--- old/sonnet-5.44.0/src/plugins/hspell/hspelldict.h   2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/hspell/hspelldict.h   2018-04-07 
21:41:09.000000000 +0200
@@ -22,8 +22,8 @@
 #ifndef KSPELL_HSPELLDICT_H
 #define KSPELL_HSPELLDICT_H
 
-#include <QtCore/QMap>
-#include <QtCore/QSet>
+#include <QMap>
+#include <QSet>
 
 #include "spellerplugin_p.h"
 /* libhspell is a C library and it does not have #ifdef __cplusplus */
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/plugins/hunspell/CMakeLists.txt 
new/sonnet-5.45.0/src/plugins/hunspell/CMakeLists.txt
--- old/sonnet-5.44.0/src/plugins/hunspell/CMakeLists.txt       2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/hunspell/CMakeLists.txt       2018-04-07 
21:41:09.000000000 +0200
@@ -1,12 +1,6 @@
 
 ########### next target ###############
 
-if (EXISTS "/usr/share/hunspell/")
-add_definitions(-DHUNSPELL_MAIN_DICT_PATH="/usr/share/hunspell")
-elseif (EXISTS "/usr/share/myspell/")
-add_definitions(-DHUNSPELL_MAIN_DICT_PATH="/usr/share/myspell")
-endif (EXISTS "/usr/share/hunspell/")
-
 include_directories( ${HUNSPELL_INCLUDE_DIRS} )
 set(sonnet_hunspell_PART_SRCS
     hunspellclient.cpp
@@ -17,6 +11,7 @@
 add_library(sonnet_hunspell MODULE ${sonnet_hunspell_PART_SRCS})
 
 target_link_libraries(sonnet_hunspell PRIVATE KF5::SonnetCore 
${HUNSPELL_LIBRARIES})
+target_compile_definitions(sonnet_hunspell PRIVATE DEFINITIONS 
SONNET_INSTALL_PREFIX="${CMAKE_INSTALL_PREFIX}")
 
 install(TARGETS sonnet_hunspell  DESTINATION 
${KDE_INSTALL_PLUGINDIR}/kf5/sonnet/)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sonnet-5.44.0/src/plugins/hunspell/hunspellclient.cpp 
new/sonnet-5.45.0/src/plugins/hunspell/hunspellclient.cpp
--- old/sonnet-5.44.0/src/plugins/hunspell/hunspellclient.cpp   2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/hunspell/hunspellclient.cpp   2018-04-07 
21:41:09.000000000 +0200
@@ -35,36 +35,29 @@
     qCDebug(SONNET_HUNSPELL) << " HunspellClient::HunspellClient";
 
     QStringList dirList;
-    const QString AFF_MASK = QStringLiteral("*.aff");
-
-#if defined(Q_OS_MAC) || defined(Q_OS_WIN)
-#ifdef Q_OS_MAC
-    QDir 
lodir(QStringLiteral("/Applications/LibreOffice.app/Contents/Resources/extensions"));
-#endif
-#ifdef Q_OS_WIN
-    QDir lodir(QStringLiteral("C:/Program Files (x86)/LibreOffice 
5/share/extensions"));
-#endif
-    const QString DIR_MASK = QStringLiteral("dict-*");
-    if (lodir.exists()) {
-        foreach (const QString &d, lodir.entryList(QStringList(DIR_MASK), 
QDir::Dirs)) {
-            dirList.append(lodir.absoluteFilePath(d));
-        }
-    }
-#endif
-
     // search QStandardPaths
     dirList.append(QStandardPaths::locateAll(
                        QStandardPaths::GenericDataLocation,
                        QStringLiteral("hunspell"),
                        QStandardPaths::LocateDirectory));
 
-    dirList.append(QStringLiteral(HUNSPELL_MAIN_DICT_PATH));
-    dirList.append(QStringLiteral("%1/../share/hunspell").arg(
-                       QCoreApplication::applicationDirPath()));
+    auto maybeAddPath = [&dirList](const QString &path)
+    {
+        if (QFileInfo::exists(path)) {
+            dirList.append(path);
+        }
+    };
+#ifdef Q_OS_WIN
+    maybeAddPath(QStringLiteral(SONNET_INSTALL_PREFIX "/bin/data/hunspell/"));
+#else
+    maybeAddPath(QStringLiteral("/System/Library/Spelling"));
+    maybeAddPath(QStringLiteral("/usr/share/hunspell/"));
+    maybeAddPath(QStringLiteral("/usr/share/myspell/"));
+#endif
 
     for (const QString &dirString : dirList) {
         QDir dir(dirString);
-        for (const QFileInfo &dict : dir.entryInfoList(QStringList(AFF_MASK), 
QDir::Files)) {
+        for (const QFileInfo &dict : 
dir.entryInfoList({QStringLiteral("*.aff")}, QDir::Files)) {
             m_languagePaths.insert(dict.baseName(), dict.canonicalPath());
         }
     }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/plugins/hunspell/hunspelldict.h 
new/sonnet-5.45.0/src/plugins/hunspell/hunspelldict.h
--- old/sonnet-5.44.0/src/plugins/hunspell/hunspelldict.h       2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/hunspell/hunspelldict.h       2018-04-07 
21:41:09.000000000 +0200
@@ -24,14 +24,6 @@
 #include "spellerplugin_p.h"
 #include "hunspell.hxx"
 
-#ifndef HUNSPELL_MAIN_DICT_PATH
-#ifdef Q_OS_MAC
-#define HUNSPELL_MAIN_DICT_PATH "/System/Library/Spelling"
-#else
-#define HUNSPELL_MAIN_DICT_PATH "/usr/share/hunspell"
-#endif
-#endif
-
 class HunspellDict : public Sonnet::SpellerPlugin
 {
 public:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sonnet-5.44.0/src/plugins/nsspellchecker/CMakeLists.txt 
new/sonnet-5.45.0/src/plugins/nsspellchecker/CMakeLists.txt
--- old/sonnet-5.44.0/src/plugins/nsspellchecker/CMakeLists.txt 2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/nsspellchecker/CMakeLists.txt 2018-04-07 
21:41:09.000000000 +0200
@@ -2,10 +2,14 @@
     nsspellcheckerclient.mm
     nsspellcheckerdict.mm
 )
+ecm_qt_declare_logging_category(sonnet_nsspellchecker_PART_SRCS
+    HEADER nsspellcheckerdebug.h
+    IDENTIFIER SONNET_NSSPELLCHECKER
+    CATEGORY_NAME sonnet.plugins.nsspellchecker)
 
 add_library(sonnet_nsspellchecker MODULE ${sonnet_nsspellchecker_PART_SRCS})
 
-target_link_libraries(sonnet_nsspellchecker PRIVATE KF5::SonnetCore 
"-framework Cocoa")
+target_link_libraries(sonnet_nsspellchecker PRIVATE KF5::SonnetCore 
"-framework AppKit")
 
 install(TARGETS sonnet_nsspellchecker  DESTINATION 
${KDE_INSTALL_PLUGINDIR}/kf5/sonnet/)
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sonnet-5.44.0/src/plugins/nsspellchecker/nsspellcheckerclient.h 
new/sonnet-5.45.0/src/plugins/nsspellchecker/nsspellcheckerclient.h
--- old/sonnet-5.44.0/src/plugins/nsspellchecker/nsspellcheckerclient.h 
2018-03-03 11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/nsspellchecker/nsspellcheckerclient.h 
2018-04-07 21:41:09.000000000 +0200
@@ -37,10 +37,7 @@
     explicit NSSpellCheckerClient(QObject *parent = nullptr);
     ~NSSpellCheckerClient();
 
-    int reliability() const
-    {
-        return 30;
-    }
+    int reliability() const;
 
     SpellerPlugin *createSpeller(const QString &language);
     QStringList languages() const;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sonnet-5.44.0/src/plugins/nsspellchecker/nsspellcheckerclient.mm 
new/sonnet-5.45.0/src/plugins/nsspellchecker/nsspellcheckerclient.mm
--- old/sonnet-5.44.0/src/plugins/nsspellchecker/nsspellcheckerclient.mm        
2018-03-03 11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/nsspellchecker/nsspellcheckerclient.mm        
2018-04-07 21:41:09.000000000 +0200
@@ -21,7 +21,7 @@
 #include "nsspellcheckerclient.h"
 #include "nsspellcheckerdict.h"
 
-#import <Cocoa/Cocoa.h>
+#import <AppKit/AppKit.h>
 
 using namespace Sonnet;
 
@@ -34,6 +34,11 @@
 {
 }
 
+int NSSpellCheckerClient::reliability() const
+{
+    return qEnvironmentVariableIsSet("SONNET_PREFER_NSSPELLCHECKER") ? 9999 : 
30;
+}
+
 SpellerPlugin *NSSpellCheckerClient::createSpeller(const QString &language)
 {
     return new NSSpellCheckerDict(language);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sonnet-5.44.0/src/plugins/nsspellchecker/nsspellcheckerdict.h 
new/sonnet-5.45.0/src/plugins/nsspellchecker/nsspellcheckerdict.h
--- old/sonnet-5.44.0/src/plugins/nsspellchecker/nsspellcheckerdict.h   
2018-03-03 11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/nsspellchecker/nsspellcheckerdict.h   
2018-04-07 21:41:09.000000000 +0200
@@ -37,7 +37,11 @@
     virtual bool addToPersonal(const QString &word);
     virtual bool addToSession(const QString &word);
 private:
+#ifdef __OBJC__
+    NSString *m_langCode;
+#else
     void *m_langCode;
+#endif
 };
 
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/sonnet-5.44.0/src/plugins/nsspellchecker/nsspellcheckerdict.mm 
new/sonnet-5.45.0/src/plugins/nsspellchecker/nsspellcheckerdict.mm
--- old/sonnet-5.44.0/src/plugins/nsspellchecker/nsspellcheckerdict.mm  
2018-03-03 11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/nsspellchecker/nsspellcheckerdict.mm  
2018-04-07 21:41:09.000000000 +0200
@@ -19,45 +19,95 @@
  * 02110-1301  USA
  */
 #include "nsspellcheckerdict.h"
+#include "nsspellcheckerdebug.h"
 
-#import <Cocoa/Cocoa.h>
+#import <AppKit/AppKit.h>
 
 using namespace Sonnet;
 
 NSSpellCheckerDict::NSSpellCheckerDict(const QString &lang)
     : SpellerPlugin(lang)
-    , m_langCode(lang.toNSString())
+    , m_langCode([lang.toNSString() retain])
 {
+    NSSpellChecker *checker = [NSSpellChecker sharedSpellChecker];
+    if ([checker setLanguage:m_langCode]) {
+        qCDebug(SONNET_NSSPELLCHECKER) << "Loading dictionary for" << lang;
+        [checker updatePanels];
+    } else {
+        qCWarning(SONNET_NSSPELLCHECKER) << "Loading dictionary for 
unsupported language" << lang;
+    }
 }
 
 NSSpellCheckerDict::~NSSpellCheckerDict()
 {
+    [m_langCode release];
 }
 
 bool NSSpellCheckerDict::isCorrect(const QString &word) const
 {
-    NSRange range = [[NSSpellChecker sharedSpellChecker] 
checkSpellingOfString:word.toNSString() startingAt:0 
language:reinterpret_cast<NSString*>(m_langCode) wrap:NO 
inSpellDocumentWithTag:0 wordCount:0];
-    return range.length==0;
+    NSString *nsWord = word.toNSString();
+    NSSpellChecker *checker = [NSSpellChecker sharedSpellChecker];
+    NSRange range = [checker checkSpellingOfString:nsWord
+        startingAt:0 language:m_langCode
+        wrap:NO inSpellDocumentWithTag:0 wordCount:nullptr];
+    if (range.length == 0) {
+        // Check if the user configured a replacement text for this string. 
Sadly
+        // we can only signal an error if that's the case, Sonnet has no other 
way
+        // to take such substitutions into account.
+        if (NSDictionary *replacements = [checker userReplacementsDictionary]) 
{
+            return [replacements objectForKey:nsWord] == nil;
+        } else {
+            return true;
+        }
+    }
+    return false;
 }
 
 QStringList NSSpellCheckerDict::suggest(const QString &word) const
 {
-    NSString* correction = [[NSSpellChecker sharedSpellChecker] 
correctionForWordRange:NSMakeRange(0, word.length()) inString:word.toNSString() 
language:reinterpret_cast<NSString*>(m_langCode) inSpellDocumentWithTag:0];
-    return QStringList(QString::fromNSString(correction));
+    NSString *nsWord = word.toNSString();
+    NSSpellChecker *checker = [NSSpellChecker sharedSpellChecker];
+    NSArray *suggestions = [checker guessesForWordRange:NSMakeRange(0, 
word.length())
+        inString:nsWord language:m_langCode inSpellDocumentWithTag:0];
+    QStringList lst;
+    NSDictionary *replacements = [checker userReplacementsDictionary];
+    QString replacement;
+    if ([replacements objectForKey:nsWord]) {
+        // return the replacement text from the userReplacementsDictionary 
first.
+        replacement = QString::fromNSString([replacements valueForKey:nsWord]);
+        lst << replacement;
+    }
+    for (NSString *suggestion in suggestions) {
+        // the replacement text from the userReplacementsDictionary will be in
+        // the suggestions list; don't add it again.
+        QString str = QString::fromNSString(suggestion);
+        if (str != replacement) {
+            lst << str;
+        }
+    }
+    return lst;
 }
 
 bool NSSpellCheckerDict::storeReplacement(const QString &bad,
                                     const QString &good)
 {
+    qCDebug(SONNET_NSSPELLCHECKER) << "Not storing replacement" << good << 
"for" << bad;
     return false;
 }
 
 bool NSSpellCheckerDict::addToPersonal(const QString &word)
 {
-    return false;
+    NSString *nsWord = word.toNSString();
+    NSSpellChecker *checker = [NSSpellChecker sharedSpellChecker];
+    if (![checker hasLearnedWord:nsWord]) {
+        [checker learnWord:nsWord];
+        [checker updatePanels];
+    }
+    return true;
 }
 
 bool NSSpellCheckerDict::addToSession(const QString &word)
 {
+    qCDebug(SONNET_NSSPELLCHECKER) << "Not storing" << word << "in the session 
dictionary";
     return false;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/plugins/voikko/voikkodict.cpp 
new/sonnet-5.45.0/src/plugins/voikko/voikkodict.cpp
--- old/sonnet-5.44.0/src/plugins/voikko/voikkodict.cpp 2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/voikko/voikkodict.cpp 2018-04-07 
21:41:09.000000000 +0200
@@ -22,16 +22,16 @@
 #include "voikkodict.h"
 #include "voikkodebug.h"
 
-#include <QtCore/QDir>
-#include <QtCore/QStandardPaths>
-#include <QtCore/QVector>
+#include <QDir>
+#include <QStandardPaths>
+#include <QVector>
 #ifdef Q_IS_WIN
-    #include <QtCore/QSysInfo>
+    #include <QSysInfo>
 #endif
 
-#include <QtCore/QJsonArray>
-#include <QtCore/QJsonDocument>
-#include <QtCore/QJsonObject>
+#include <QJsonArray>
+#include <QJsonDocument>
+#include <QJsonObject>
 
 namespace {
 // QString literals used in loading and storing user dictionary
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/plugins/voikko/voikkodict.h 
new/sonnet-5.45.0/src/plugins/voikko/voikkodict.h
--- old/sonnet-5.44.0/src/plugins/voikko/voikkodict.h   2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/plugins/voikko/voikkodict.h   2018-04-07 
21:41:09.000000000 +0200
@@ -25,9 +25,9 @@
 #include "spellerplugin_p.h"
 #include <libvoikko/voikko.h>
 
-#include <QtCore/QHash>
-#include <QtCore/QSet>
-#include <QtCore/QScopedPointer>
+#include <QHash>
+#include <QSet>
+#include <QScopedPointer>
 
 class VoikkoClient;
 class VoikkoDictPrivate;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/ui/dialog.cpp 
new/sonnet-5.45.0/src/ui/dialog.cpp
--- old/sonnet-5.44.0/src/ui/dialog.cpp 2018-03-03 11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/ui/dialog.cpp 2018-04-07 21:41:09.000000000 +0200
@@ -34,8 +34,8 @@
 #include <QPushButton>
 #include <QComboBox>
 #include <QLabel>
-#include <QtCore/QTimer>
-#include <QtWidgets/QMessageBox>
+#include <QTimer>
+#include <QMessageBox>
 
 namespace Sonnet {
 //to initially disable sorting in the suggestions listview
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/ui/dictionarycombobox.h 
new/sonnet-5.45.0/src/ui/dictionarycombobox.h
--- old/sonnet-5.44.0/src/ui/dictionarycombobox.h       2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/ui/dictionarycombobox.h       2018-04-07 
21:41:09.000000000 +0200
@@ -23,7 +23,7 @@
 
 #include "sonnetui_export.h"
 
-#include <QtWidgets/QComboBox>
+#include <QComboBox>
 
 namespace Sonnet {
 class DictionaryComboBoxPrivate;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/ui/highlighter.h 
new/sonnet-5.45.0/src/ui/highlighter.h
--- old/sonnet-5.44.0/src/ui/highlighter.h      2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/src/ui/highlighter.h      2018-04-07 21:41:09.000000000 
+0200
@@ -23,7 +23,7 @@
 #define SONNET_HIGHLIGHTER_H
 
 #include <QSyntaxHighlighter>
-#include <QtCore/QStringList>
+#include <QStringList>
 #include "sonnetui_export.h"
 
 class QTextEdit;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/src/ui/spellcheckdecorator.h 
new/sonnet-5.45.0/src/ui/spellcheckdecorator.h
--- old/sonnet-5.44.0/src/ui/spellcheckdecorator.h      2018-03-03 
11:08:31.000000000 +0100
+++ new/sonnet-5.45.0/src/ui/spellcheckdecorator.h      2018-04-07 
21:41:09.000000000 +0200
@@ -21,7 +21,7 @@
 #ifndef SPELLCHECKDECORATOR_H
 #define SPELLCHECKDECORATOR_H
 
-#include <QtCore/QObject>
+#include <QObject>
 
 #include "sonnetui_export.h"
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/sonnet-5.44.0/tests/backgroundtest.h 
new/sonnet-5.45.0/tests/backgroundtest.h
--- old/sonnet-5.44.0/tests/backgroundtest.h    2018-03-03 11:08:31.000000000 
+0100
+++ new/sonnet-5.45.0/tests/backgroundtest.h    2018-04-07 21:41:09.000000000 
+0200
@@ -21,8 +21,8 @@
 #ifndef BACKGROUNDTEST_H
 #define BACKGROUNDTEST_H
 
-#include <QtCore/QObject>
-#include <QtCore/QDate>
+#include <QObject>
+#include <QDate>
 
 #include "backgroundchecker.h"
 


Reply via email to