summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/preferences/ephy-search-engine-row.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/preferences/ephy-search-engine-row.c b/src/preferences/ephy-search-engine-row.c
index 142500b18..d3bb9f769 100644
--- a/src/preferences/ephy-search-engine-row.c
+++ b/src/preferences/ephy-search-engine-row.c
@@ -45,6 +45,8 @@ struct _EphySearchEngineRow {
* It is always a valid name.
*/
char *saved_name;
+ /* This is the name that was previously in the entry. Use this only from on_name_entry_text_changed_cb() */
+ char *previous_name;
EphySearchEngineManager *manager;
};
@@ -163,7 +165,7 @@ search_engine_already_exists (EphySearchEngineRow *searched_row,
EphySearchEngineRow *iterated_row;
/* As it iterates on the whole list box, this function will run on the "add search engine" row, which isn't an EphySearchEngineRow. */
- if (EPHY_IS_SEARCH_ENGINE_ROW (children->data))
+ if (!EPHY_IS_SEARCH_ENGINE_ROW (children->data))
continue;
iterated_row = EPHY_SEARCH_ENGINE_ROW (children->data);
@@ -404,9 +406,12 @@ on_name_entry_text_changed_cb (EphySearchEngineRow *row,
* if the name didn't actually change. This could toggle the entry as invalid
* because the engine would already exist, so don't go any further in this case.
*/
- if (g_strcmp0 (row->saved_name, new_name) == 0)
+ if (g_strcmp0 (row->previous_name, new_name) == 0)
return;
+ g_free (row->previous_name);
+ row->previous_name = g_strdup (new_name);
+
hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (row), new_name);
if (g_strcmp0 (new_name, EMPTY_NEW_SEARCH_ENGINE_NAME) == 0)
@@ -488,6 +493,7 @@ ephy_search_engine_row_finalize (GObject *object)
EphySearchEngineRow *self = (EphySearchEngineRow *)object;
g_free (self->saved_name);
+ g_free (self->previous_name);
G_OBJECT_CLASS (ephy_search_engine_row_parent_class)->finalize (object);
}
@@ -504,6 +510,8 @@ ephy_search_engine_row_set_property (GObject *object,
case PROP_SEARCH_ENGINE_NAME:
g_free (self->saved_name);
self->saved_name = g_value_dup_string (value);
+ g_free (self->previous_name);
+ self->previous_name = g_value_dup_string (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -517,6 +525,7 @@ on_ephy_search_engine_row_constructed (GObject *object)
g_autofree char *default_search_engine_name = ephy_search_engine_manager_get_default_engine (self->manager);
g_assert (self->saved_name != NULL);
+ g_assert (g_strcmp0 (self->previous_name, self->saved_name) == 0);
gtk_entry_set_text (GTK_ENTRY (self->name_entry), self->saved_name);
hdy_preferences_row_set_title (HDY_PREFERENCES_ROW (self), self->saved_name);