[gedit/wip/view-frame-cleanup] ViewFrame: move some code in update_goto_line()
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit/wip/view-frame-cleanup] ViewFrame: move some code in update_goto_line()
- Date: Wed, 7 Aug 2013 19:13:55 +0000 (UTC)
commit f3c167b2bb1aad023b3b3b04196e5bf181ccb7ba
Author: Sébastien Wilmet <swilmet gnome org>
Date: Wed Aug 7 21:12:43 2013 +0200
ViewFrame: move some code in update_goto_line()
Now search_entry_changed_cb() is smaller and more obvious.
gedit/gedit-view-frame.c | 144 +++++++++++++++++++++++++--------------------
1 files changed, 80 insertions(+), 64 deletions(-)
---
diff --git a/gedit/gedit-view-frame.c b/gedit/gedit-view-frame.c
index 4fae52b..ebc92d1 100644
--- a/gedit/gedit-view-frame.c
+++ b/gedit/gedit-view-frame.c
@@ -910,90 +910,106 @@ customize_for_search_mode (GeditViewFrame *frame)
}
static void
-search_init (GtkWidget *entry,
- GeditViewFrame *frame)
+update_goto_line (GeditViewFrame *frame)
{
- const gchar *entry_text = gtk_entry_get_text (GTK_ENTRY (entry));
+ const gchar *entry_text;
+ gboolean moved;
+ gboolean moved_offset;
+ gint line;
+ gint offset_line = 0;
+ gint line_offset = 0;
+ gchar **split_text = NULL;
+ const gchar *text;
+ GtkTextIter iter;
+ GeditDocument *doc;
- renew_flush_timeout (frame);
+ entry_text = gtk_entry_get_text (GTK_ENTRY (frame->priv->search_entry));
- if (frame->priv->search_mode == SEARCH)
+ if (entry_text[0] == '\0')
{
- update_search (frame);
- start_search (frame);
+ return;
}
- else if (*entry_text != '\0')
- {
- gboolean moved, moved_offset;
- gint line;
- gint offset_line = 0;
- gint line_offset = 0;
- gchar **split_text = NULL;
- const gchar *text;
- GtkTextIter iter;
- GeditDocument *doc;
- doc = gedit_view_frame_get_document (frame);
-
- gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (doc),
- &iter,
- frame->priv->start_mark);
+ doc = gedit_view_frame_get_document (frame);
- split_text = g_strsplit (entry_text, ":", -1);
+ gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (doc),
+ &iter,
+ frame->priv->start_mark);
- if (g_strv_length (split_text) > 1)
- {
- text = split_text[0];
- }
- else
- {
- text = entry_text;
- }
+ split_text = g_strsplit (entry_text, ":", -1);
- if (*text == '-')
- {
- gint cur_line = gtk_text_iter_get_line (&iter);
+ if (g_strv_length (split_text) > 1)
+ {
+ text = split_text[0];
+ }
+ else
+ {
+ text = entry_text;
+ }
- if (*(text + 1) != '\0')
- offset_line = MAX (atoi (text + 1), 0);
+ if (text[0] == '-')
+ {
+ gint cur_line = gtk_text_iter_get_line (&iter);
- line = MAX (cur_line - offset_line, 0);
- }
- else if (*entry_text == '+')
+ if (text[1] != '\0')
{
- gint cur_line = gtk_text_iter_get_line (&iter);
+ offset_line = MAX (atoi (text + 1), 0);
+ }
- if (*(text + 1) != '\0')
- offset_line = MAX (atoi (text + 1), 0);
+ line = MAX (cur_line - offset_line, 0);
+ }
+ else if (entry_text[0] == '+')
+ {
+ gint cur_line = gtk_text_iter_get_line (&iter);
- line = cur_line + offset_line;
- }
- else
+ if (text[1] != '\0')
{
- line = MAX (atoi (text) - 1, 0);
+ offset_line = MAX (atoi (text + 1), 0);
}
- if (split_text[1] != NULL)
- {
- line_offset = atoi (split_text[1]);
- }
+ line = cur_line + offset_line;
+ }
+ else
+ {
+ line = MAX (atoi (text) - 1, 0);
+ }
- g_strfreev (split_text);
+ if (split_text[1] != NULL)
+ {
+ line_offset = atoi (split_text[1]);
+ }
- moved = gedit_document_goto_line (doc, line);
- moved_offset = gedit_document_goto_line_offset (doc, line,
- line_offset);
+ g_strfreev (split_text);
- gedit_view_scroll_to_cursor (frame->priv->view);
+ moved = gedit_document_goto_line (doc, line);
+ moved_offset = gedit_document_goto_line_offset (doc, line, line_offset);
- if (!moved || !moved_offset)
- {
- set_search_state (frame, SEARCH_STATE_NOT_FOUND);
- }
- else
- {
- set_search_state (frame, SEARCH_STATE_NORMAL);
- }
+ gedit_view_scroll_to_cursor (frame->priv->view);
+
+ if (!moved || !moved_offset)
+ {
+ set_search_state (frame, SEARCH_STATE_NOT_FOUND);
+ }
+ else
+ {
+ set_search_state (frame, SEARCH_STATE_NORMAL);
+ }
+}
+
+static void
+search_entry_changed_cb (GtkEntry *entry,
+ GeditViewFrame *frame)
+{
+ renew_flush_timeout (frame);
+
+ if (frame->priv->search_mode == SEARCH)
+ {
+ update_search (frame);
+ start_search (frame);
+ }
+ else
+ {
+ update_goto_line (frame);
}
}
@@ -1351,7 +1367,7 @@ gedit_view_frame_init (GeditViewFrame *frame)
frame->priv->search_entry_changed_id =
g_signal_connect (frame->priv->search_entry,
"changed",
- G_CALLBACK (search_init),
+ G_CALLBACK (search_entry_changed_cb),
frame);
frame->priv->search_entry_focus_out_id =
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]