[gspell/wip/inline-checker: 3/3] Move gspell_text_view_get_inline_checker() in inline-checker-text



commit 51273f3df015a2a429832bb4d95b427aabe86b34
Author: Sébastien Wilmet <swilmet gnome org>
Date:   Thu Jan 7 13:31:57 2016 +0100

    Move gspell_text_view_get_inline_checker() in inline-checker-text
    
    It simplifies the code.

 gspell/Makefile.am                  |    6 +--
 gspell/gspell-inline-checker-text.c |   33 ++++++++++++++++++--
 gspell/gspell-inline-checker-text.h |    8 ++---
 gspell/gspell-text-view.c           |   56 -----------------------------------
 gspell/gspell-text-view.h           |   35 ----------------------
 gspell/gspell.h                     |    1 -
 po/POTFILES.in                      |    1 -
 7 files changed, 34 insertions(+), 106 deletions(-)
---
diff --git a/gspell/Makefile.am b/gspell/Makefile.am
index 31f21c4..2178ee4 100644
--- a/gspell/Makefile.am
+++ b/gspell/Makefile.am
@@ -26,8 +26,7 @@ gspell_public_headers =                               \
        gspell-language-chooser-dialog.h        \
        gspell-navigator.h                      \
        gspell-navigator-gtv.h                  \
-       gspell-text-buffer.h                    \
-       gspell-text-view.h
+       gspell-text-buffer.h
 
 gspell_public_c_files =                                \
        gspell-checker.c                        \
@@ -39,8 +38,7 @@ gspell_public_c_files =                               \
        gspell-language-chooser-dialog.c        \
        gspell-navigator.c                      \
        gspell-navigator-gtv.c                  \
-       gspell-text-buffer.c                    \
-       gspell-text-view.c
+       gspell-text-buffer.c
 
 gspell_private_headers =                       \
        gconstructor.h                          \
diff --git a/gspell/gspell-inline-checker-text.c b/gspell/gspell-inline-checker-text.c
index 8a35280..907c3f5 100644
--- a/gspell/gspell-inline-checker-text.c
+++ b/gspell/gspell-inline-checker-text.c
@@ -58,6 +58,8 @@ enum
        PROP_ENABLED,
 };
 
+#define INLINE_CHECKER_KEY "gspell-inline-checker-text-key"
+
 G_DEFINE_TYPE_WITH_PRIVATE (GspellInlineCheckerText, gspell_inline_checker_text, G_TYPE_OBJECT)
 
 static void
@@ -252,14 +254,37 @@ gspell_inline_checker_text_init (GspellInlineCheckerText *inline_checker)
 {
 }
 
+/**
+ * gspell_text_view_get_inline_checker:
+ * @view: a #GtkTextView.
+ *
+ * Returns the #GspellInlineCheckerText of @view. The returned object is
+ * guaranteed to be the same for the lifetime of @view.
+ *
+ * Returns: (transfer none): the #GspellInlineCheckerText of @view.
+ */
 GspellInlineCheckerText *
-_gspell_inline_checker_text_new (GtkTextView *view)
+gspell_text_view_get_inline_checker (GtkTextView *view)
 {
+       GspellInlineCheckerText *inline_checker;
+
        g_return_val_if_fail (GTK_IS_TEXT_VIEW (view), NULL);
 
-       return g_object_new (GSPELL_TYPE_INLINE_CHECKER_TEXT,
-                            "view", view,
-                            NULL);
+       inline_checker = g_object_get_data (G_OBJECT (view), INLINE_CHECKER_KEY);
+
+       if (inline_checker == NULL)
+       {
+               inline_checker = g_object_new (GSPELL_TYPE_INLINE_CHECKER_TEXT,
+                                              "view", view,
+                                              NULL);
+
+               g_object_set_data_full (G_OBJECT (view),
+                                       INLINE_CHECKER_KEY,
+                                       inline_checker,
+                                       g_object_unref);
+       }
+
+       return inline_checker;
 }
 
 /**
diff --git a/gspell/gspell-inline-checker-text.h b/gspell/gspell-inline-checker-text.h
index a9035a9..4acca07 100644
--- a/gspell/gspell-inline-checker-text.h
+++ b/gspell/gspell-inline-checker-text.h
@@ -41,16 +41,14 @@ struct _GspellInlineCheckerTextClass
        gpointer padding[8];
 };
 
+GspellInlineCheckerText *
+               gspell_text_view_get_inline_checker             (GtkTextView *view);
+
 void           gspell_inline_checker_text_set_enabled          (GspellInlineCheckerText *inline_checker,
                                                                 gboolean                 enabled);
 
 gboolean       gspell_inline_checker_text_get_enabled          (GspellInlineCheckerText *inline_checker);
 
-/* Private functions */
-G_GNUC_INTERNAL
-GspellInlineCheckerText *
-               _gspell_inline_checker_text_new                 (GtkTextView *view);
-
 G_END_DECLS
 
 #endif /* __GSPELL_INLINE_CHECKER_TEXT_H__ */
diff --git a/gspell/gspell.h b/gspell/gspell.h
index 08acd1e..b635a81 100644
--- a/gspell/gspell.h
+++ b/gspell/gspell.h
@@ -32,7 +32,6 @@
 #include <gspell/gspell-navigator.h>
 #include <gspell/gspell-navigator-gtv.h>
 #include <gspell/gspell-text-buffer.h>
-#include <gspell/gspell-text-view.h>
 
 #undef __GSPELL_H_INSIDE__
 
diff --git a/po/POTFILES.in b/po/POTFILES.in
index 86b44c5..656133b 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -12,7 +12,6 @@ gspell/gspell-navigator.c
 gspell/gspell-navigator-gtv.c
 gspell/gspell-osx.c
 gspell/gspell-text-buffer.c
-gspell/gspell-text-view.c
 gspell/gspell-utils.c
 gspell/resources/checker-dialog.ui
 gspell/resources/language-dialog.ui


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]