[gnome-builder: 34/34] spellchecker: various fixes
- From: Sébastien Lafargue <slafargue src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-builder: 34/34] spellchecker: various fixes
- Date: Thu, 12 Jan 2017 22:20:18 +0000 (UTC)
commit 83d8694f1f76ce55df25d879df8ee136591c71d7
Author: Sébastien Lafargue <slafargue gnome org>
Date: Thu Jan 12 23:16:58 2017 +0100
spellchecker: various fixes
libide/editor/ide-editor-spell-navigator.c | 77 ++++++++++++++--------------
libide/editor/ide-editor-spell-widget.c | 54 ++++++++++++++++---
2 files changed, 85 insertions(+), 46 deletions(-)
---
diff --git a/libide/editor/ide-editor-spell-navigator.c b/libide/editor/ide-editor-spell-navigator.c
index 02999d8..32a6698 100644
--- a/libide/editor/ide-editor-spell-navigator.c
+++ b/libide/editor/ide-editor-spell-navigator.c
@@ -220,11 +220,14 @@ ide_editor_spell_navigator_new (GtkTextView *view)
}
static void
-delete_mark (GtkTextBuffer *buffer,
- GtkTextMark *mark)
+delete_mark (GtkTextBuffer *buffer,
+ GtkTextMark **mark)
{
- if (mark != NULL)
- gtk_text_buffer_delete_mark (buffer, mark);
+ if (mark != NULL && *mark != NULL)
+ {
+ GtkTextMark *m = g_steal_pointer (mark);
+ gtk_text_buffer_delete_mark (buffer, m);
+ }
}
static void
@@ -236,17 +239,15 @@ ide_editor_spell_navigator_dispose (GObject *object)
gtk_widget_queue_draw (GTK_WIDGET (self->view));
g_clear_object (&self->view);
- g_hash_table_unref (self->words_count);
+ g_clear_pointer (&self->words_count, g_hash_table_unref);
if (self->buffer != NULL)
{
- delete_mark (self->buffer, self->start_boundary);
- delete_mark (self->buffer, self->end_boundary);
- delete_mark (self->buffer, self->word_start);
- delete_mark (self->buffer, self->word_end);
-
- g_object_unref (self->buffer);
- self->buffer = NULL;
+ delete_mark (self->buffer, &self->start_boundary);
+ delete_mark (self->buffer, &self->end_boundary);
+ delete_mark (self->buffer, &self->word_start);
+ delete_mark (self->buffer, &self->word_end);
+ g_clear_object (&self->buffer);
}
G_OBJECT_CLASS (ide_editor_spell_navigator_parent_class)->dispose (object);
@@ -594,33 +595,33 @@ ide_editor_spell_navigator_change_all (GspellNavigator *navigator,
gtk_text_buffer_begin_user_action (self->buffer);
while (TRUE)
- {
- gboolean found;
- GtkTextIter match_start;
- GtkTextIter match_end;
- GtkTextIter limit;
-
- gtk_text_buffer_get_iter_at_mark (self->buffer, &limit, self->end_boundary);
- found = gtk_text_iter_forward_search (&iter,
- word,
- GTK_TEXT_SEARCH_VISIBLE_ONLY |
- GTK_TEXT_SEARCH_TEXT_ONLY,
- &match_start,
- &match_end,
- &limit);
-
- if (!found)
- break;
-
- if (ide_editor_spell_utils_text_iter_starts_word (&match_start) &&
- ide_editor_spell_utils_text_iter_ends_word (&match_end))
- {
- gtk_text_buffer_delete (self->buffer, &match_start, &match_end);
- gtk_text_buffer_insert (self->buffer, &match_end, change_to, -1);
- }
+ {
+ gboolean found;
+ GtkTextIter match_start;
+ GtkTextIter match_end;
+ GtkTextIter limit;
+
+ gtk_text_buffer_get_iter_at_mark (self->buffer, &limit, self->end_boundary);
+ found = gtk_text_iter_forward_search (&iter,
+ word,
+ GTK_TEXT_SEARCH_VISIBLE_ONLY |
+ GTK_TEXT_SEARCH_TEXT_ONLY,
+ &match_start,
+ &match_end,
+ &limit);
+
+ if (!found)
+ break;
+
+ if (ide_editor_spell_utils_text_iter_starts_word (&match_start) &&
+ ide_editor_spell_utils_text_iter_ends_word (&match_end))
+ {
+ gtk_text_buffer_delete (self->buffer, &match_start, &match_end);
+ gtk_text_buffer_insert (self->buffer, &match_end, change_to, -1);
+ }
- iter = match_end;
- }
+ iter = match_end;
+ }
gtk_text_buffer_end_user_action (self->buffer);
}
diff --git a/libide/editor/ide-editor-spell-widget.c b/libide/editor/ide-editor-spell-widget.c
index 5d15f36..fba50e8 100644
--- a/libide/editor/ide-editor-spell-widget.c
+++ b/libide/editor/ide-editor-spell-widget.c
@@ -15,16 +15,19 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ide.h"
+
+#define G_LOG_DOMAIN "ide-spell-check-widget"
#include <glib/gi18n.h>
#include <gspell/gspell.h>
-#include "ide-editor-spell-dict.h"
-#include "ide-editor-spell-navigator.h"
-#include "ide-editor-spell-language-popover.h"
-
-#include "ide-editor-spell-widget.h"
+#include "ide-debug.h"
+#include "buffers/ide-buffer.h"
+#include "editor/ide-editor-spell-dict.h"
+#include "editor/ide-editor-spell-language-popover.h"
+#include "editor/ide-editor-spell-navigator.h"
+#include "editor/ide-editor-spell-widget.h"
+#include "util/ide-gtk.h"
typedef enum
{
@@ -104,6 +107,8 @@ clear_suggestions_box (IdeEditorSpellWidget *self)
{
GList *children;
+ g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+
children = gtk_container_get_children (GTK_CONTAINER (self->suggestions_box));
for (GList *l = children; l != NULL; l = g_list_next (l))
@@ -148,6 +153,8 @@ update_change_ignore_sensibility (IdeEditorSpellWidget *self)
GtkWidget *
ide_editor_spell_widget_get_entry (IdeEditorSpellWidget *self)
{
+ g_return_val_if_fail (IDE_IS_EDITOR_SPELL_WIDGET (self), NULL);
+
return GTK_WIDGET (self->word_entry);
}
@@ -158,6 +165,7 @@ create_suggestion_row (IdeEditorSpellWidget *self,
GtkWidget *row;
g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (!ide_str_empty0 (word));
row = g_object_new (GTK_TYPE_LABEL,
"label", word,
@@ -177,6 +185,9 @@ fill_suggestions_box (IdeEditorSpellWidget *self,
GtkWidget *item;
g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (first_result != NULL);
+
+ *first_result = NULL;
clear_suggestions_box (self);
if (ide_str_empty0 (word))
@@ -187,7 +198,6 @@ fill_suggestions_box (IdeEditorSpellWidget *self,
if (NULL == (suggestions = gspell_checker_get_suggestions (self->checker, word, -1)))
{
- *first_result = NULL;
gtk_label_set_text (GTK_LABEL (self->placeholder), _("No suggestioons"));
gtk_widget_set_sensitive (GTK_WIDGET (self->suggestions_box), FALSE);
}
@@ -211,6 +221,8 @@ update_count_label (IdeEditorSpellWidget *self)
const gchar *word;
guint count;
+ g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+
word = gtk_label_get_text (self->word_label);
if (0 != (count = ide_editor_spell_navigator_get_count (IDE_EDITOR_SPELL_NAVIGATOR (self->navigator),
word)))
{
@@ -322,7 +334,7 @@ check_word_timeout_cb (IdeEditorSpellWidget *self)
ret = gspell_checker_check_word (self->checker, word, -1, &error);
if (error != NULL)
{
- printf ("check error:%s\n", error->message);
+ g_message ("check error:%s\n", error->message);
}
icon_name = ret ? "" : "dialog-warning-symbolic";
@@ -447,6 +459,9 @@ static void
ide_editor_spell_widget__change_button_clicked_cb (IdeEditorSpellWidget *self,
GtkButton *button)
{
+ g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (GTK_IS_BUTTON (button));
+
change_misspelled_word (self, FALSE);
}
@@ -454,6 +469,9 @@ static void
ide_editor_spell_widget__change_all_button_clicked_cb (IdeEditorSpellWidget *self,
GtkButton *button)
{
+ g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (GTK_IS_BUTTON (button));
+
change_misspelled_word (self, TRUE);
}
@@ -465,6 +483,10 @@ ide_editor_spell_widget__row_selected_cb (IdeEditorSpellWidget *self,
const gchar *word;
GtkLabel *label;
+ g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (GTK_IS_LIST_BOX_ROW (row));
+ g_assert (GTK_IS_LIST_BOX (listbox));
+
if (row != NULL)
{
label = GTK_LABEL (gtk_bin_get_child (GTK_BIN (row)));
@@ -485,6 +507,10 @@ ide_editor_spell_widget__row_activated_cb (IdeEditorSpellWidget *self,
GtkListBoxRow *row,
GtkListBox *listbox)
{
+ g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (GTK_IS_LIST_BOX_ROW (row));
+ g_assert (GTK_IS_LIST_BOX (listbox));
+
if (row != NULL)
change_misspelled_word (self, FALSE);
}
@@ -494,6 +520,7 @@ ide_editor_spell_widget__key_press_event_cb (IdeEditorSpellWidget *self,
GdkEventKey *event)
{
g_assert (IDE_IS_SOURCE_VIEW (self->view));
+ g_assert (event != NULL);
switch (event->keyval)
{
@@ -545,6 +572,7 @@ ide_editor_spell_widget__highlight_switch_toggled_cb (IdeEditorSpellWidget *self
GspellTextView *spell_text_view;
g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (GTK_IS_SWITCH (switch_button));
gtk_switch_set_state (switch_button, state);
spell_text_view = gspell_text_view_get_from_gtk_text_view (GTK_TEXT_VIEW (self->view));
@@ -557,6 +585,7 @@ ide_editor_spell_widget__words_counted_cb (IdeEditorSpellWidget *self,
GspellNavigator *navigator)
{
g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (GSPELL_IS_NAVIGATOR (navigator));
update_count_label (self);
}
@@ -724,6 +753,7 @@ dict_row_key_pressed_event_cb (IdeEditorSpellWidget *self,
GtkListBoxRow *row;
g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (event != NULL);
g_assert (GTK_IS_LIST_BOX (listbox));
if (NULL != (row = gtk_list_box_get_selected_row (listbox)) &&
@@ -779,6 +809,8 @@ dict_create_word_row (IdeEditorSpellWidget *self,
static gboolean
check_dict_available (IdeEditorSpellWidget *self)
{
+ g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+
return (self->checker != NULL && self->spellchecker_language != NULL);
}
@@ -823,6 +855,8 @@ dict_clean_listbox (IdeEditorSpellWidget *self)
{
GList *children;
+ g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+
children = gtk_container_get_children (GTK_CONTAINER (self->dict_words_list));
for (GList *l = children; l != NULL; l = g_list_next (l))
gtk_widget_destroy (GTK_WIDGET (l->data));
@@ -837,6 +871,7 @@ dict_fill_listbox (IdeEditorSpellWidget *self,
GtkWidget *item;
g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (words_array != NULL);
dict_clean_listbox (self);
@@ -861,6 +896,7 @@ ide_editor_spell_widget__language_notify_cb (IdeEditorSpellWidget *self,
GtkListBoxRow *row;
g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (GTK_IS_BUTTON (language_chooser_button));
current_language = gspell_checker_get_language (self->checker);
spell_language = gspell_language_chooser_get_language (GSPELL_LANGUAGE_CHOOSER (language_chooser_button));
@@ -923,6 +959,8 @@ ide_editor_spell_widget__populate_popup_cb (IdeEditorSpellWidget *self,
gint count = 0;
g_assert (IDE_IS_EDITOR_SPELL_WIDGET (self));
+ g_assert (GTK_IS_WIDGET (popup));
+ g_assert (GTK_IS_ENTRY (entry));
text = gtk_entry_get_text (entry);
if (self->is_word_entry_valid ||
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]