[gedit] Small refactoring to avoid roundtrip from iter to offset
- From: Paolo Borelli <pborelli src gnome org>
- To: svn-commits-list gnome org
- Cc:
- Subject: [gedit] Small refactoring to avoid roundtrip from iter to offset
- Date: Thu, 7 Jan 2010 13:35:30 +0000 (UTC)
commit c03688db8744252e86c8a6fdd21216ef8cfb2d49
Author: Paolo Borelli <pborelli gnome org>
Date: Thu Jan 7 14:33:48 2010 +0100
Small refactoring to avoid roundtrip from iter to offset
plugins/spell/gedit-spell-plugin.c | 72 +++++++++++++----------------------
1 files changed, 27 insertions(+), 45 deletions(-)
---
diff --git a/plugins/spell/gedit-spell-plugin.c b/plugins/spell/gedit-spell-plugin.c
index 3665b8f..f6bdbd2 100644
--- a/plugins/spell/gedit-spell-plugin.c
+++ b/plugins/spell/gedit-spell-plugin.c
@@ -278,18 +278,13 @@ update_current (GeditDocument *doc,
static void
set_check_range (GeditDocument *doc,
- gint start,
- gint end)
+ GtkTextIter *start,
+ GtkTextIter *end)
{
CheckRange *range;
GtkTextIter iter;
-
- gedit_debug (DEBUG_PLUGINS);
- g_return_if_fail (doc != NULL);
- g_return_if_fail (start >= 0);
- g_return_if_fail (start < gtk_text_buffer_get_char_count (GTK_TEXT_BUFFER (doc)));
- g_return_if_fail ((end >= start) || (end < 0));
+ gedit_debug (DEBUG_PLUGINS);
range = get_check_range (doc);
@@ -298,7 +293,7 @@ set_check_range (GeditDocument *doc,
gedit_debug_message (DEBUG_PLUGINS, "There was not a previous check range");
gtk_text_buffer_get_end_iter (GTK_TEXT_BUFFER (doc), &iter);
-
+
range = g_new0 (CheckRange, 1);
range->start_mark = gtk_text_buffer_create_mark (GTK_TEXT_BUFFER (doc),
@@ -309,50 +304,40 @@ set_check_range (GeditDocument *doc,
range->current_mark = gtk_text_buffer_create_mark (GTK_TEXT_BUFFER (doc),
"check_range_current_mark", &iter, TRUE);
-
+
g_object_set_qdata_full (G_OBJECT (doc),
check_range_id,
range,
(GDestroyNotify)g_free);
}
-
- gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER (doc),
- &iter, start);
gtk_text_buffer_move_mark (GTK_TEXT_BUFFER (doc),
range->start_mark,
- &iter);
-
- if (end < 0)
- end = gtk_text_buffer_get_char_count (GTK_TEXT_BUFFER (doc));
- g_return_if_fail (end >= start);
-
- gtk_text_buffer_get_iter_at_offset (GTK_TEXT_BUFFER (doc),
- &iter, end);
+ start);
- if (!gtk_text_iter_inside_word (&iter))
- {
+ if (!gtk_text_iter_inside_word (end))
+ {
/* if we're neither inside a word,
* we must be in some spaces.
* skip backward to the end of the previous word. */
- if (!gtk_text_iter_is_end (&iter))
+ if (!gtk_text_iter_is_end (end))
{
- gtk_text_iter_backward_word_start (&iter);
- gtk_text_iter_forward_word_end (&iter);
+ gtk_text_iter_backward_word_start (end);
+ gtk_text_iter_forward_word_end (end);
}
}
else
{
- if (!gtk_text_iter_ends_word (&iter))
- gtk_text_iter_forward_word_end (&iter);
+ if (!gtk_text_iter_ends_word (end))
+ gtk_text_iter_forward_word_end (end);
}
- gtk_text_buffer_move_mark (GTK_TEXT_BUFFER (doc), range->end_mark, &iter);
-
+ gtk_text_buffer_move_mark (GTK_TEXT_BUFFER (doc), range->end_mark, end);
+
range->mw_start = -1;
range->mw_end = -1;
-
- update_current (doc, start);
+
+ update_current (doc, gtk_text_iter_get_offset (start));
}
static gchar *
@@ -719,8 +704,7 @@ spell_cb (GtkAction *action,
GeditDocument *doc;
GeditSpellChecker *spell;
GtkWidget *dlg;
- gint start, end;
- GtkTextIter sel_start, sel_end;
+ GtkTextIter start, end;
gchar *word;
gchar *data_dir;
@@ -752,20 +736,18 @@ spell_cb (GtkAction *action,
return;
}
- if (gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
- &sel_start,
- &sel_end))
+ if (!gtk_text_buffer_get_selection_bounds (GTK_TEXT_BUFFER (doc),
+ &start,
+ &end))
{
- /* get selection points */
- start = gtk_text_iter_get_offset (&sel_start);
- end = gtk_text_iter_get_offset (&sel_end);
- set_check_range (doc, start, end);
- }
- else
- {
- set_check_range (doc, 0, -1);
+ /* no selection, get the whole doc */
+ gtk_text_buffer_get_bounds (GTK_TEXT_BUFFER (doc),
+ &start,
+ &end);
}
+ set_check_range (doc, &start, &end);
+
word = get_next_misspelled_word (view);
if (word == NULL)
{
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]