[gedit: 11/14] ViewFrame: smaller search_entry_changed_cb()
- From: Sébastien Wilmet <swilmet src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit: 11/14] ViewFrame: smaller search_entry_changed_cb()
- Date: Thu, 8 Aug 2013 15:31:08 +0000 (UTC)
commit 924abd087793afbffd19628d1fdc1146f7a75719
Author: Sébastien Wilmet <swilmet gnome org>
Date: Wed Aug 7 21:12:43 2013 +0200
ViewFrame: smaller search_entry_changed_cb()
gedit/gedit-view-frame.c | 148 +++++++++++++++++++++++++--------------------
1 files changed, 82 insertions(+), 66 deletions(-)
---
diff --git a/gedit/gedit-view-frame.c b/gedit/gedit-view-frame.c
index 97ba7fb..c5b0ca8 100644
--- a/gedit/gedit-view-frame.c
+++ b/gedit/gedit-view-frame.c
@@ -260,7 +260,7 @@ finish_search (GeditViewFrame *frame,
{
const gchar *entry_text = gtk_entry_get_text (GTK_ENTRY (frame->priv->search_entry));
- if (found || (*entry_text == '\0'))
+ if (found || (entry_text[0] == '\0'))
{
gedit_view_scroll_to_cursor (frame->priv->view);
@@ -624,7 +624,7 @@ install_update_entry_tag_idle (GeditViewFrame *frame)
}
static void
-update_search (GeditViewFrame *frame)
+update_search_settings (GeditViewFrame *frame)
{
GtkSourceBuffer *buffer;
const gchar *entry_text;
@@ -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);
+ doc = gedit_view_frame_get_document (frame);
- gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (doc),
- &iter,
- frame->priv->start_mark);
+ gtk_text_buffer_get_iter_at_mark (GTK_TEXT_BUFFER (doc),
+ &iter,
+ frame->priv->start_mark);
- split_text = g_strsplit (entry_text, ":", -1);
+ split_text = g_strsplit (entry_text, ":", -1);
- if (g_strv_length (split_text) > 1)
- {
- text = split_text[0];
- }
- else
- {
- text = entry_text;
- }
-
- 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_settings (frame);
+ start_search (frame);
+ }
+ else
+ {
+ update_goto_line (frame);
}
}
@@ -1354,7 +1370,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]