[gedit] Use the interactive search as main search.
- From: Ignacio Casal Quinteiro <icq src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gedit] Use the interactive search as main search.
- Date: Wed, 8 Sep 2010 09:48:30 +0000 (UTC)
commit 40077162bba47bf98f7d808e131ad241a2259e32
Author: Ignacio Casal Quinteiro <icq gnome org>
Date: Wed Sep 8 11:36:45 2010 +0200
Use the interactive search as main search.
Now the interactive search is the main way to search in a document
if you want the dialog you can always use the replace dialog that provides
also a way to search.
gedit/dialogs/gedit-search-dialog.c | 157 ++---------------------------------
gedit/dialogs/gedit-search-dialog.h | 14 +---
gedit/gedit-commands-search.c | 99 ++++------------------
gedit/gedit-ui.h | 2 -
gedit/gedit-ui.xml | 1 -
gedit/gedit-window.c | 6 --
6 files changed, 27 insertions(+), 252 deletions(-)
---
diff --git a/gedit/dialogs/gedit-search-dialog.c b/gedit/dialogs/gedit-search-dialog.c
index 9729581..88da59a 100644
--- a/gedit/dialogs/gedit-search-dialog.c
+++ b/gedit/dialogs/gedit-search-dialog.c
@@ -46,19 +46,8 @@
GEDIT_TYPE_SEARCH_DIALOG, \
GeditSearchDialogPrivate))
-/* Signals */
-enum
-{
- SHOW_REPLACE,
- LAST_SIGNAL
-};
-
-static guint dialog_signals [LAST_SIGNAL] = { 0 };
-
struct _GeditSearchDialogPrivate
{
- gboolean show_replace;
-
GtkWidget *table;
GtkWidget *search_label;
GtkWidget *search_entry;
@@ -79,51 +68,6 @@ struct _GeditSearchDialogPrivate
G_DEFINE_TYPE(GeditSearchDialog, gedit_search_dialog, GTK_TYPE_DIALOG)
-enum
-{
- PROP_0,
- PROP_SHOW_REPLACE
-};
-
-static void
-gedit_search_dialog_set_property (GObject *object,
- guint prop_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- GeditSearchDialog *dlg = GEDIT_SEARCH_DIALOG (object);
-
- switch (prop_id)
- {
- case PROP_SHOW_REPLACE:
- gedit_search_dialog_set_show_replace (dlg,
- g_value_get_boolean (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
-static void
-gedit_search_dialog_get_property (GObject *object,
- guint prop_id,
- GValue *value,
- GParamSpec *pspec)
-{
- GeditSearchDialog *dlg = GEDIT_SEARCH_DIALOG (object);
-
- switch (prop_id)
- {
- case PROP_SHOW_REPLACE:
- g_value_set_boolean (value, dlg->priv->show_replace);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
- break;
- }
-}
-
void
gedit_search_dialog_present_with_time (GeditSearchDialog *dialog,
guint32 timestamp)
@@ -132,53 +76,15 @@ gedit_search_dialog_present_with_time (GeditSearchDialog *dialog,
gtk_window_present_with_time (GTK_WINDOW (dialog), timestamp);
- gtk_widget_grab_focus (dialog->priv->search_text_entry);
-}
-
-static gboolean
-show_replace (GeditSearchDialog *dlg)
-{
- gedit_search_dialog_set_show_replace (dlg, TRUE);
-
- return TRUE;
+ gtk_widget_grab_focus (dialog->priv->search_text_entry);
}
static void
gedit_search_dialog_class_init (GeditSearchDialogClass *klass)
{
GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GtkBindingSet *binding_set;
-
- object_class->set_property = gedit_search_dialog_set_property;
- object_class->get_property = gedit_search_dialog_get_property;
-
- klass->show_replace = show_replace;
-
- dialog_signals[SHOW_REPLACE] =
- g_signal_new ("show_replace",
- G_TYPE_FROM_CLASS (object_class),
- G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION,
- G_STRUCT_OFFSET (GeditSearchDialogClass, show_replace),
- NULL, NULL,
- gedit_marshal_BOOLEAN__NONE,
- G_TYPE_BOOLEAN, 0);
-
- g_object_class_install_property (object_class, PROP_SHOW_REPLACE,
- g_param_spec_boolean ("show-replace",
- "Show Replace",
- "Whether the dialog is used for Search&Replace",
- FALSE,
- G_PARAM_READWRITE));
g_type_class_add_private (object_class, sizeof (GeditSearchDialogPrivate));
-
- binding_set = gtk_binding_set_by_class (klass);
-
- /* Note: we cannot use the keyval/modifier associated with the
- * GTK_STOCK_FIND_AND_REPLACE stock item since GNOME HIG suggests Ctrl+h
- * for Replace while gtk+ uses Ctrl+r */
- gtk_binding_entry_add_signal (binding_set, GDK_h, GDK_CONTROL_MASK, "show_replace", 0);
- gtk_binding_entry_add_signal (binding_set, GDK_H, GDK_CONTROL_MASK, "show_replace", 0);
}
static void
@@ -285,31 +191,6 @@ response_handler (GeditSearchDialog *dialog,
}
static void
-show_replace_widgets (GeditSearchDialog *dlg,
- gboolean show_replace)
-{
- gtk_widget_set_visible (dlg->priv->replace_label, show_replace);
- gtk_widget_set_visible (dlg->priv->replace_entry, show_replace);
- gtk_widget_set_visible (dlg->priv->replace_all_button, show_replace);
- gtk_widget_set_visible (dlg->priv->replace_button, show_replace);
-
- if (show_replace)
- {
- gtk_table_set_row_spacings (GTK_TABLE (dlg->priv->table), 12);
-
- gtk_window_set_title (GTK_WINDOW (dlg), _("Replace"));
- }
- else
- {
- gtk_table_set_row_spacings (GTK_TABLE (dlg->priv->table), 0);
-
- gtk_window_set_title (GTK_WINDOW (dlg), _("Find"));
- }
-
- gtk_widget_show (dlg->priv->find_button);
-}
-
-static void
gedit_search_dialog_init (GeditSearchDialog *dlg)
{
GtkWidget *content;
@@ -325,6 +206,7 @@ gedit_search_dialog_init (GeditSearchDialog *dlg)
gtk_window_set_resizable (GTK_WINDOW (dlg), FALSE);
gtk_window_set_destroy_with_parent (GTK_WINDOW (dlg), TRUE);
+ gtk_window_set_title (GTK_WINDOW (dlg), _("Replace"));
gtk_dialog_add_buttons (GTK_DIALOG (dlg),
GTK_STOCK_CLOSE, GTK_RESPONSE_CANCEL,
@@ -369,6 +251,8 @@ gedit_search_dialog_init (GeditSearchDialog *dlg)
return;
}
+ gtk_table_set_row_spacings (GTK_TABLE (dlg->priv->table), 12);
+
dlg->priv->search_entry = gedit_history_entry_new ("search-for-entry",
TRUE);
gtk_widget_set_size_request (dlg->priv->search_entry, 300, -1);
@@ -380,7 +264,6 @@ gedit_search_dialog_init (GeditSearchDialog *dlg)
(GEDIT_HISTORY_ENTRY (dlg->priv->search_entry));
gtk_entry_set_activates_default (GTK_ENTRY (dlg->priv->search_text_entry),
TRUE);
- gtk_widget_show (dlg->priv->search_entry);
gtk_table_attach_defaults (GTK_TABLE (dlg->priv->table),
dlg->priv->search_entry,
1, 2, 0, 1);
@@ -395,7 +278,6 @@ gedit_search_dialog_init (GeditSearchDialog *dlg)
(GEDIT_HISTORY_ENTRY (dlg->priv->replace_entry));
gtk_entry_set_activates_default (GTK_ENTRY (dlg->priv->replace_text_entry),
TRUE);
- gtk_widget_show (dlg->priv->replace_entry);
gtk_table_attach_defaults (GTK_TABLE (dlg->priv->table),
dlg->priv->replace_entry,
1, 2, 1, 2);
@@ -459,16 +341,16 @@ gedit_search_dialog_init (GeditSearchDialog *dlg)
"response",
G_CALLBACK (response_handler),
NULL);
+
+ gtk_widget_show_all (GTK_WIDGET (dlg));
}
GtkWidget *
-gedit_search_dialog_new (GtkWindow *parent,
- gboolean show_replace)
+gedit_search_dialog_new (GtkWindow *parent)
{
GeditSearchDialog *dlg;
dlg = g_object_new (GEDIT_TYPE_SEARCH_DIALOG,
- "show-replace", show_replace,
NULL);
if (parent != NULL)
@@ -483,29 +365,6 @@ gedit_search_dialog_new (GtkWindow *parent,
return GTK_WIDGET (dlg);
}
-gboolean
-gedit_search_dialog_get_show_replace (GeditSearchDialog *dialog)
-{
- g_return_val_if_fail (GEDIT_IS_SEARCH_DIALOG (dialog), FALSE);
-
- return dialog->priv->show_replace;
-}
-
-void
-gedit_search_dialog_set_show_replace (GeditSearchDialog *dialog,
- gboolean show_replace)
-{
- g_return_if_fail (GEDIT_IS_SEARCH_DIALOG (dialog));
-
- if (dialog->priv->ui_error)
- return;
-
- dialog->priv->show_replace = show_replace != FALSE;
- show_replace_widgets (dialog, dialog->priv->show_replace);
-
- g_object_notify (G_OBJECT (dialog), "show-replace");
-}
-
void
gedit_search_dialog_set_search_text (GeditSearchDialog *dialog,
const gchar *text)
@@ -522,7 +381,7 @@ gedit_search_dialog_set_search_text (GeditSearchDialog *dialog,
gtk_dialog_set_response_sensitive (GTK_DIALOG (dialog),
GEDIT_SEARCH_DIALOG_REPLACE_ALL_RESPONSE,
- (text != '\0'));
+ (text != '\0'));
}
/*
diff --git a/gedit/dialogs/gedit-search-dialog.h b/gedit/dialogs/gedit-search-dialog.h
index 3b07e3d..4ebd3be 100644
--- a/gedit/dialogs/gedit-search-dialog.h
+++ b/gedit/dialogs/gedit-search-dialog.h
@@ -67,12 +67,9 @@ struct _GeditSearchDialog
*/
typedef struct _GeditSearchDialogClass GeditSearchDialogClass;
-struct _GeditSearchDialogClass
+struct _GeditSearchDialogClass
{
GtkDialogClass parent_class;
-
- /* Key bindings */
- gboolean (* show_replace) (GeditSearchDialog *dlg);
};
enum
@@ -87,18 +84,11 @@ enum
*/
GType gedit_search_dialog_get_type (void) G_GNUC_CONST;
-GtkWidget *gedit_search_dialog_new (GtkWindow *parent,
- gboolean show_replace);
+GtkWidget *gedit_search_dialog_new (GtkWindow *parent);
void gedit_search_dialog_present_with_time (GeditSearchDialog *dialog,
guint32 timestamp);
-gboolean gedit_search_dialog_get_show_replace (GeditSearchDialog *dialog);
-
-void gedit_search_dialog_set_show_replace (GeditSearchDialog *dialog,
- gboolean show_replace);
-
-
void gedit_search_dialog_set_search_text (GeditSearchDialog *dialog,
const gchar *text);
const gchar *gedit_search_dialog_get_search_text (GeditSearchDialog *dialog);
diff --git a/gedit/gedit-commands-search.c b/gedit/gedit-commands-search.c
index f267189..3ba8d6c 100644
--- a/gedit/gedit-commands-search.c
+++ b/gedit/gedit-commands-search.c
@@ -483,12 +483,11 @@ search_dialog_destroyed (GeditWindow *window,
}
static GtkWidget *
-create_dialog (GeditWindow *window,
- gboolean show_replace)
+create_dialog (GeditWindow *window)
{
GtkWidget *dialog;
- dialog = gedit_search_dialog_new (GTK_WINDOW (window), show_replace);
+ dialog = gedit_search_dialog_new (GTK_WINDOW (window));
g_signal_connect (dialog,
"response",
@@ -514,57 +513,24 @@ void
_gedit_cmd_search_find (GtkAction *action,
GeditWindow *window)
{
- gpointer data;
- GtkWidget *search_dialog;
- GeditDocument *doc;
- gboolean selection_exists;
- gchar *find_text = NULL;
- gint sel_len;
+ GeditView *active_view;
gedit_debug (DEBUG_COMMANDS);
- data = g_object_get_data (G_OBJECT (window), GEDIT_SEARCH_DIALOG_KEY);
-
- if (data == NULL)
- {
- search_dialog = create_dialog (window, FALSE);
- }
- else
- {
- g_return_if_fail (GEDIT_IS_SEARCH_DIALOG (data));
-
- search_dialog = GTK_WIDGET (data);
-
- /* turn the dialog into a find dialog if needed */
- if (gedit_search_dialog_get_show_replace (GEDIT_SEARCH_DIALOG (search_dialog)))
- {
- gedit_search_dialog_set_show_replace (GEDIT_SEARCH_DIALOG (search_dialog),
- FALSE);
- }
- }
-
- doc = gedit_window_get_active_document (window);
- g_return_if_fail (doc != NULL);
-
- selection_exists = get_selected_text (GTK_TEXT_BUFFER (doc),
- &find_text,
- &sel_len);
-
- if (selection_exists && find_text != NULL && sel_len < 80)
- {
- gedit_search_dialog_set_search_text (GEDIT_SEARCH_DIALOG (search_dialog),
- find_text);
- g_free (find_text);
- }
- else
- {
- g_free (find_text);
- }
+ active_view = gedit_window_get_active_view (window);
+ if (active_view == NULL)
+ return;
- gtk_widget_show (search_dialog);
- last_search_data_restore_position (GEDIT_SEARCH_DIALOG (search_dialog));
- gedit_search_dialog_present_with_time (GEDIT_SEARCH_DIALOG (search_dialog),
- GDK_CURRENT_TIME);
+ /* Focus the view if needed: we need to focus the view otherwise
+ activating the binding for goto line has no effect */
+ gtk_widget_grab_focus (GTK_WIDGET (active_view));
+
+ /* incremental search is builtin in GeditView, just activate
+ * the corresponding binding.
+ */
+ gtk_bindings_activate (GTK_OBJECT (active_view),
+ GDK_k,
+ GDK_CONTROL_MASK);
}
void
@@ -584,20 +550,13 @@ _gedit_cmd_search_replace (GtkAction *action,
if (data == NULL)
{
- replace_dialog = create_dialog (window, TRUE);
+ replace_dialog = create_dialog (window);
}
else
{
g_return_if_fail (GEDIT_IS_SEARCH_DIALOG (data));
replace_dialog = GTK_WIDGET (data);
-
- /* turn the dialog into a find dialog if needed */
- if (!gedit_search_dialog_get_show_replace (GEDIT_SEARCH_DIALOG (replace_dialog)))
- {
- gedit_search_dialog_set_show_replace (GEDIT_SEARCH_DIALOG (replace_dialog),
- TRUE);
- }
}
doc = gedit_window_get_active_document (window);
@@ -701,28 +660,4 @@ _gedit_cmd_search_goto_line (GtkAction *action,
GDK_CONTROL_MASK);
}
-void
-_gedit_cmd_search_incremental_search (GtkAction *action,
- GeditWindow *window)
-{
- GeditView *active_view;
-
- gedit_debug (DEBUG_COMMANDS);
-
- active_view = gedit_window_get_active_view (window);
- if (active_view == NULL)
- return;
-
- /* Focus the view if needed: we need to focus the view otherwise
- activating the binding for goto line has no effect */
- gtk_widget_grab_focus (GTK_WIDGET (active_view));
-
- /* incremental search is builtin in GeditView, just activate
- * the corresponding binding.
- */
- gtk_bindings_activate (GTK_OBJECT (active_view),
- GDK_k,
- GDK_CONTROL_MASK);
-}
-
/* ex:ts=8:noet: */
diff --git a/gedit/gedit-ui.h b/gedit/gedit-ui.h
index 3477e32..f9aa3d4 100644
--- a/gedit/gedit-ui.h
+++ b/gedit/gedit-ui.h
@@ -125,8 +125,6 @@ static const GtkActionEntry gedit_menu_entries[] =
N_("Clear highlighting of search matches"), G_CALLBACK (_gedit_cmd_search_clear_highlight) },
{ "SearchGoToLine", GTK_STOCK_JUMP_TO, N_("Go to _Line..."), "<control>I",
N_("Go to a specific line"), G_CALLBACK (_gedit_cmd_search_goto_line) },
- { "SearchIncrementalSearch", GTK_STOCK_FIND, N_("_Incremental Search..."), "<control>K",
- N_("Incrementally search for text"), G_CALLBACK (_gedit_cmd_search_incremental_search) },
/* Documents menu */
{ "FileSaveAll", GTK_STOCK_SAVE, N_("_Save All"), "<shift><control>L",
diff --git a/gedit/gedit-ui.xml b/gedit/gedit-ui.xml
index a97e679..e8ff81c 100644
--- a/gedit/gedit-ui.xml
+++ b/gedit/gedit-ui.xml
@@ -93,7 +93,6 @@
<menuitem name="SearchFindMenu" action="SearchFind"/>
<menuitem name="SearchFindNextMenu" action="SearchFindNext"/>
<menuitem name="SearchFindPreviousMenu" action="SearchFindPrevious"/>
- <menuitem name="SearchIncrementalSearchMenu" action="SearchIncrementalSearch"/>
<placeholder name="SearchOps_1" />
<separator/>
<placeholder name="SearchOps_2" />
diff --git a/gedit/gedit-window.c b/gedit/gedit-window.c
index 765c306..6da3d66 100644
--- a/gedit/gedit-window.c
+++ b/gedit/gedit-window.c
@@ -932,12 +932,6 @@ set_sensitivity_according_to_tab (GeditWindow *window,
state == GEDIT_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
action = gtk_action_group_get_action (window->priv->action_group,
- "SearchIncrementalSearch");
- gtk_action_set_sensitive (action,
- (state_normal ||
- state == GEDIT_TAB_STATE_EXTERNALLY_MODIFIED_NOTIFICATION));
-
- action = gtk_action_group_get_action (window->priv->action_group,
"SearchReplace");
gtk_action_set_sensitive (action,
state_normal &&
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]