diff options
author | vanadiae <vanadiae35@gmail.com> | 2021-02-03 15:19:54 +0100 |
---|---|---|
committer | Michael Catanzaro <mcatanzaro@gnome.org> | 2021-02-08 15:02:14 +0000 |
commit | 4d96c753613f81b2ff08b859c07bac1d5e2bc8fd (patch) | |
tree | 847e8372a98f696eb29db8cc5aa347ea861d2d25 | |
parent | 2c4e11afdb0d83f04bed9320201ca5d9abdbe1bb (diff) | |
download | epiphany-4d96c753613f81b2ff08b859c07bac1d5e2bc8fd.tar.gz |
prefs: Fix already existing engine check
Currently when naming an engine with the same name as an other existing
one, it doesn't trigger the error telling you can't have two engine with
the same name.
So this commit fixes this.
-rw-r--r-- | src/preferences/ephy-search-engine-row.c | 13 |
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); |