[gnote: 1/2] use gspell instead of gtkspell for spellchecking
- From: Aurimas Černius <aurimasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnote: 1/2] use gspell instead of gtkspell for spellchecking
- Date: Mon, 1 Jul 2019 20:00:18 +0000 (UTC)
commit 5f042aa146d62e4c5f47eeb28dcfd37f2bebc653
Author: Günther Wagner <info gunibert de>
Date: Sun Jun 9 12:38:08 2019 +0200
use gspell instead of gtkspell for spellchecking
configure.ac | 16 ++++++++--------
src/Makefile.am | 4 ++--
src/contrast.cpp | 1 -
src/preferencesdialog.cpp | 2 +-
src/watchers.cpp | 24 +++++++++++++++---------
src/watchers.hpp | 10 +++++-----
6 files changed, 31 insertions(+), 26 deletions(-)
---
diff --git a/configure.ac b/configure.ac
index 89f70dbd..987c8444 100644
--- a/configure.ac
+++ b/configure.ac
@@ -26,7 +26,7 @@ dnl if one is harcoded elsewhere, it is a bug
GTK_VERSION=3.20
LIBGLIBMM_VERSION=2.32
LIBGTKMM_VERSION=3.18
-GTKSPELL_VERSION=3.0.0
+GSPELL_VERSION=1.8.0
LIBSECRET_VERSION=0.8
UNITTESTCPP_VERSION=1.5.1
@@ -74,13 +74,13 @@ PKG_CHECK_MODULES(LIBXML, [libxml-2.0])
PKG_CHECK_MODULES(LIBXSLT, [libxslt])
PKG_CHECK_MODULES(UUID, [uuid])
-PKG_CHECK_MODULES(GTKSPELL, gtkspell3-3.0 >= $GTKSPELL_VERSION,
- [FIXED_GTKSPELL="yes";AC_DEFINE([FIXED_GTKSPELL], [1], [Set if the GtkSpell
library is recent enough.])
- ], FIXED_GTKSPELL="no")
-AC_SUBST(GTKSPELL_CFLAGS)
-AC_SUBST(GTKSPELL_LIBS)
-AM_CONDITIONAL(FIXED_GTKSPELL, test "$FIXED_GTKSPELL" = "yes")
+PKG_CHECK_MODULES(GSPELL, gspell-1 >= $GSPELL_VERSION,
+ [ENABLE_GSPELL="yes";AC_DEFINE([ENABLE_GSPELL], [1], [Set if the GSpell library is
recent enough.])
+ ], ENABLE_GSPELL="no")
+AC_SUBST(GSPELL_CFLAGS)
+AC_SUBST(GSPELL_LIBS)
+AM_CONDITIONAL(ENABLE_GSPELL, test "$ENABLE_GSPELL" = "yes")
PKG_CHECK_MODULES(LIBSECRET, [libsecret-1 >= $LIBSECRET_VERSION])
@@ -207,7 +207,7 @@ AC_OUTPUT
echo "
Options:
- Spellchecking support: ${FIXED_GTKSPELL}
+ Spellchecking support: ${ENABLE_GSPELL}
Unit test support: ${HAVE_UNITTESTCPP}
"
diff --git a/src/Makefile.am b/src/Makefile.am
index e132fb59..1af17b43 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -4,7 +4,7 @@ SUBDIRS = addins
AM_CPPFLAGS= -I$(top_srcdir) @LIBGTKMM_CFLAGS@ @LIBGLIBMM_CFLAGS@ \
@GTK_CFLAGS@ \
- @GTKSPELL_CFLAGS@ @LIBXML_CFLAGS@ \
+ @GSPELL_CFLAGS@ @LIBXML_CFLAGS@ \
@LIBXSLT_CFLAGS@ \
@UUID_CFLAGS@ \
@LIBSECRET_CFLAGS@ \
@@ -16,7 +16,7 @@ AM_LDFLAGS=-export-dynamic
LIBGNOTE_LIBS = \
@LIBGLIBMM_LIBS@ @LIBGTKMM_LIBS@ \
@LIBXSLT_LIBS@ \
- @GTKSPELL_LIBS@ @GTK_LIBS@ \
+ @GSPELL_LIBS@ @GTK_LIBS@ \
@UUID_LIBS@ \
@LIBSECRET_LIBS@
GNOTE_LIBS = libgnote.la $(LIBGNOTE_LIBS)
diff --git a/src/contrast.cpp b/src/contrast.cpp
index 9d93a28c..81167f64 100644
--- a/src/contrast.cpp
+++ b/src/contrast.cpp
@@ -23,7 +23,6 @@
* SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
*/
-#include <config.h>
#include <math.h>
#include "contrast.hpp"
diff --git a/src/preferencesdialog.cpp b/src/preferencesdialog.cpp
index be2b94a8..925d3305 100644
--- a/src/preferencesdialog.cpp
+++ b/src/preferencesdialog.cpp
@@ -243,7 +243,7 @@ namespace gnote {
// Spell checking...
-#if FIXED_GTKSPELL
+#if ENABLE_GSPELL
// TODO I'm not sure there is a proper reason to do that.
// it is in or NOT. if not, disable the UI.
if (NoteSpellChecker::gtk_spell_available()) {
diff --git a/src/watchers.cpp b/src/watchers.cpp
index 83c60558..848d6ba6 100644
--- a/src/watchers.cpp
+++ b/src/watchers.cpp
@@ -280,7 +280,7 @@ namespace gnote {
}
-#if FIXED_GTKSPELL
+#if ENABLE_GSPELL
const char *NoteSpellChecker::LANG_PREFIX = "spellchecklang:";
const char *NoteSpellChecker::LANG_DISABLED = "disabled";
@@ -341,12 +341,15 @@ namespace gnote {
Glib::ustring lang = get_language();
if (!m_obj_ptr && lang != LANG_DISABLED) {
- m_obj_ptr = gtk_spell_checker_new();
- if(lang != "") {
- gtk_spell_checker_set_language(m_obj_ptr, lang.c_str(), NULL);
- }
- g_signal_connect(G_OBJECT(m_obj_ptr), "language-changed", G_CALLBACK(language_changed), this);
- gtk_spell_checker_attach(m_obj_ptr, get_window()->editor()->gobj());
+ const GspellLanguage *language = gspell_language_lookup(lang.c_str());
+ m_obj_ptr = gspell_checker_new(language);
+ g_signal_connect(G_OBJECT(m_obj_ptr), "notify::language", G_CALLBACK(language_changed), this);
+ Glib::RefPtr<Gtk::TextBuffer> buffer = get_window()->editor()->get_buffer();
+ GspellTextBuffer *gspell_buffer = gspell_text_buffer_get_from_gtk_text_buffer (buffer->gobj());
+ gspell_text_buffer_set_spell_checker (gspell_buffer, m_obj_ptr);
+ GspellTextView *gspell_view = gspell_text_view_get_from_gtk_text_view (get_window()->editor()->gobj());
+ gspell_text_view_set_inline_spell_checking (gspell_view, TRUE);
+ gspell_text_view_set_enable_language_menu (gspell_view, TRUE);
m_enabled = true;
}
else {
@@ -368,7 +371,9 @@ namespace gnote {
m_tag_applied_cid.disconnect();
if(m_obj_ptr) {
- gtk_spell_checker_detach(m_obj_ptr);
+ Glib::RefPtr<Gtk::TextBuffer> buffer = get_window()->editor()->get_buffer();
+ GspellTextBuffer *gspell_buffer = gspell_text_buffer_get_from_gtk_text_buffer (buffer->gobj());
+ gspell_text_buffer_set_spell_checker (gspell_buffer, NULL);
m_obj_ptr = NULL;
}
}
@@ -422,9 +427,10 @@ namespace gnote {
}
}
- void NoteSpellChecker::language_changed(GtkSpellChecker*, gchar *lang, NoteSpellChecker *checker)
+ void NoteSpellChecker::language_changed(GspellChecker* self, GParamSpec *pspec, NoteSpellChecker *checker)
{
try {
+ const gchar *lang = gspell_language_get_code (gspell_checker_get_language (self));
checker->on_language_changed(lang);
}
catch(...) {
diff --git a/src/watchers.hpp b/src/watchers.hpp
index f6fe0982..cce0a5df 100644
--- a/src/watchers.hpp
+++ b/src/watchers.hpp
@@ -28,9 +28,9 @@
#include <config.h>
#endif
-#if FIXED_GTKSPELL
+#if ENABLE_GSPELL
extern "C" {
-#include <gtkspell/gtkspell.h>
+#include <gspell/gspell.h>
}
#endif
@@ -84,7 +84,7 @@ namespace gnote {
utils::HIGMessageDialog *m_title_taken_dialog;
};
-#if FIXED_GTKSPELL
+#if ENABLE_GSPELL
class NoteSpellChecker
: public NoteAddin
{
@@ -105,7 +105,7 @@ namespace gnote {
private:
static const char *LANG_PREFIX;
static const char *LANG_DISABLED;
- static void language_changed(GtkSpellChecker*, gchar *lang, NoteSpellChecker *checker);
+ static void language_changed(GspellChecker*, GParamSpec *pspec, NoteSpellChecker *checker);
void attach();
void attach_checker();
void detach();
@@ -120,7 +120,7 @@ namespace gnote {
void on_note_window_backgrounded();
void on_spell_check_enable_action(const Glib::VariantBase & state);
- GtkSpellChecker *m_obj_ptr;
+ GspellChecker *m_obj_ptr;
sigc::connection m_tag_applied_cid;
sigc::connection m_enable_cid;
bool m_enabled;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]