summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Catanzaro <mcatanzaro@gnome.org>2017-01-26 08:38:44 -0600
committerMichael Catanzaro <mcatanzaro@gnome.org>2017-01-26 08:38:44 -0600
commita0545a9e59f982b381e2e2329756edd89ac04aed (patch)
tree0c223556520065d6c5f1de4335ba49a8128f65eb
parent860573d9b1f655c1e0915863fbd5fa256b0b0412 (diff)
downloadepiphany-a0545a9e59f982b381e2e2329756edd89ac04aed.tar.gz
Revert "Implement search engine manager"
This reverts commit 2829c4330285ddc50243aaabb3ab89971c540af9. Didn't mean to commit this, it's not quite ready yet.
-rw-r--r--data/Makefile.am6
-rw-r--r--data/org.gnome.epiphany.search.engines.gschema.xml24
-rw-r--r--embed/ephy-embed-shell.c14
-rw-r--r--embed/ephy-embed-shell.h3
-rw-r--r--embed/ephy-embed-utils.c25
-rw-r--r--lib/Makefile.am2
-rw-r--r--lib/ephy-search-engine-manager.c215
-rw-r--r--lib/ephy-search-engine-manager.h47
-rw-r--r--src/prefs-dialog.c115
-rw-r--r--src/search-provider/ephy-search-provider.c26
10 files changed, 103 insertions, 374 deletions
diff --git a/data/Makefile.am b/data/Makefile.am
index 6d1b85047..d6aa63e4e 100644
--- a/data/Makefile.am
+++ b/data/Makefile.am
@@ -10,9 +10,7 @@ $(desktop_DATA): $(desktop_in_files)
gsettings_ENUM_NAMESPACE = org.gnome.Epiphany
gsettings_ENUM_FILES = $(top_srcdir)/lib/ephy-prefs.h
-gsettings_SCHEMAS = org.gnome.epiphany.gschema.xml \
- org.gnome.epiphany.host.gschema.xml \
- org.gnome.epiphany.search.engines.gschema.xml
+gsettings_SCHEMAS = org.gnome.epiphany.gschema.xml org.gnome.epiphany.host.gschema.xml
@GSETTINGS_RULES@
appstream_in_files = org.gnome.Epiphany.appdata.xml.in
@@ -26,7 +24,7 @@ $(appstream_XML): $(appstream_in_files)
servicedir = $(datadir)/dbus-1/services
service_in_files = org.gnome.EpiphanySearchProvider.service.in
service_DATA = $(service_in_files:.service.in=.service)
-
+
# Rule to make the service file with bindir expanded
$(service_DATA): $(service_in_files) Makefile
$(AM_V_GEN) sed -e "s|\@libexecdir[@]|$(libexecdir)|g" $< > $@
diff --git a/data/org.gnome.epiphany.search.engines.gschema.xml b/data/org.gnome.epiphany.search.engines.gschema.xml
deleted file mode 100644
index 0c31c4975..000000000
--- a/data/org.gnome.epiphany.search.engines.gschema.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<schemalist>
- <schema id="org.gnome.Epiphany.search-engines" gettext-domain="">
- <key type="s" name="default-search-engine">
- <default>'DuckDuckGo'</default>
- <summary>Default search engine.</summary>
- <description>Name of the search engine selected by default.</description>
- </key>
- <key type="as" name="search-engines-names">
- <default>['DuckDuckGo', 'Google', 'Bing' ]</default>
- <summary>Default search engines.</summary>
- <description>List of the names of the default search engines.</description>
- </key>
- <key type="as" name="search-engines-urls">
- <!-- Array of default search engines. Must exactly match the URLs used
- in the preferences dialog, except this stringes are surrounded by single quotes
- and use &amp; instead of simply &. If the match is not otherwise exact,
- there will be a spurious, ugly entry in the preferences combo, so please
- test this. -->
- <default l10n="messages">['https://duckduckgo.com/?q=%s&amp;t=epiphany', 'https://google.com/search?q=%s', 'https://www.bing.com/search?q=%s' ]</default>
- <summary>Default search engines urls.</summary>
- <description>List of all the urls of the default search engines.</description>
- </key>
- </schema>
-</schemalist>
diff --git a/embed/ephy-embed-shell.c b/embed/ephy-embed-shell.c
index 4556ae9d8..101caf900 100644
--- a/embed/ephy-embed-shell.c
+++ b/embed/ephy-embed-shell.c
@@ -70,7 +70,6 @@ typedef struct {
GList *web_extensions;
EphyFiltersManager *filters_manager;
GCancellable *cancellable;
- EphySearchEngineManager *search_engine_manager;
} EphyEmbedShellPrivate;
enum {
@@ -125,7 +124,6 @@ ephy_embed_shell_dispose (GObject *object)
g_clear_object (&priv->web_context);
g_clear_object (&priv->dbus_server);
g_clear_object (&priv->filters_manager);
- g_clear_object (&priv->search_engine_manager);
G_OBJECT_CLASS (ephy_embed_shell_parent_class)->dispose (object);
}
@@ -957,8 +955,6 @@ ephy_embed_shell_startup (GApplication *application)
ephy_embed_prefs_set_cookie_accept_policy (cookie_manager, cookie_policy);
g_free (cookie_policy);
- priv->search_engine_manager = ephy_search_engine_manager_new ();
-
#ifdef HAVE_LIBHTTPSEVERYWHERE
/* We might want to be smarter about this in the future. For now,
* trigger an update of the rulesets once each time Epiphany is started.
@@ -1441,13 +1437,3 @@ ephy_embed_shell_get_hosts_manager (EphyEmbedShell *shell)
priv->hosts_manager = ephy_hosts_manager_new ();
return priv->hosts_manager;
}
-
-EphySearchEngineManager *
-ephy_embed_shell_get_search_engine_manager (EphyEmbedShell *shell)
-{
- EphyEmbedShellPrivate *priv = ephy_embed_shell_get_instance_private (shell);
-
- if (!priv->search_engine_manager)
- priv->search_engine_manager = ephy_search_engine_manager_new ();
- return priv->search_engine_manager;
-}
diff --git a/embed/ephy-embed-shell.h b/embed/ephy-embed-shell.h
index 4fc5d05a9..e327e7e69 100644
--- a/embed/ephy-embed-shell.h
+++ b/embed/ephy-embed-shell.h
@@ -25,7 +25,6 @@
#include "ephy-downloads-manager.h"
#include "ephy-history-service.h"
#include "ephy-hosts-manager.h"
-#include "ephy-search-engine-manager.h"
G_BEGIN_DECLS
@@ -80,5 +79,5 @@ void ephy_embed_shell_schedule_thumbnail_update (EphyEmbedShell
WebKitUserContentManager *ephy_embed_shell_get_user_content_manager (EphyEmbedShell *shell);
EphyDownloadsManager *ephy_embed_shell_get_downloads_manager (EphyEmbedShell *shell);
EphyHostsManager *ephy_embed_shell_get_hosts_manager (EphyEmbedShell *shell);
-EphySearchEngineManager *ephy_embed_shell_get_search_engine_manager (EphyEmbedShell *shell);
+
G_END_DECLS
diff --git a/embed/ephy-embed-utils.c b/embed/ephy-embed-utils.c
index 81bb4b9a1..90dcd9572 100644
--- a/embed/ephy-embed-utils.c
+++ b/embed/ephy-embed-utils.c
@@ -29,10 +29,10 @@
#include "ephy-string.h"
#include "ephy-view-source-handler.h"
-#include <JavaScriptCore/JavaScript.h>
+#include <string.h>
#include <glib/gi18n.h>
#include <libsoup/soup.h>
-#include <string.h>
+#include <JavaScriptCore/JavaScript.h>
static GRegex *non_search_regex;
static GRegex *domain_regex;
@@ -230,20 +230,15 @@ ephy_embed_utils_normalize_address (const char *address)
char *
ephy_embed_utils_autosearch_address (const char *search_key)
{
- char *query_param;
- const char *url_search;
- char *default_name;
+ char *query_param, *url_search;
char *effective_address;
- EphyEmbedShell *shell;
- EphySearchEngineManager *search_engine_manager;
-
- shell = ephy_embed_shell_get_default ();
- search_engine_manager = ephy_embed_shell_get_search_engine_manager (shell);
- default_name = ephy_search_engine_manager_get_default_engine (search_engine_manager);
- url_search = ephy_search_engine_manager_get_url (search_engine_manager, default_name);
- if (url_search == NULL || url_search[0] == '\0')
- url_search = _("https://duckduckgo.com/?q=%s&amp;t=epiphany");
+ url_search = g_settings_get_string (EPHY_SETTINGS_MAIN,
+ EPHY_PREFS_KEYWORD_SEARCH_URL);
+ if (url_search == NULL || url_search[0] == '\0') {
+ g_free (url_search);
+ url_search = g_strdup (_("https://duckduckgo.com/?q=%s&amp;t=epiphany"));
+ }
query_param = soup_form_encode ("q", search_key, NULL);
#pragma GCC diagnostic push
@@ -253,7 +248,7 @@ ephy_embed_utils_autosearch_address (const char *search_key)
effective_address = g_strdup_printf (url_search, query_param + 2);
#pragma GCC diagnostic pop
g_free (query_param);
- g_free (default_name);
+ g_free (url_search);
return effective_address;
}
diff --git a/lib/Makefile.am b/lib/Makefile.am
index 07b99fa8b..784dc1ce3 100644
--- a/lib/Makefile.am
+++ b/lib/Makefile.am
@@ -30,8 +30,6 @@ libephymisc_la_SOURCES = \
ephy-prefs.h \
ephy-profile-utils.c \
ephy-profile-utils.h \
- ephy-search-engine-manager.c \
- ephy-search-engine-manager.h \
ephy-security-levels.c \
ephy-security-levels.h \
ephy-settings.c \
diff --git a/lib/ephy-search-engine-manager.c b/lib/ephy-search-engine-manager.c
deleted file mode 100644
index 8bb451d16..000000000
--- a/lib/ephy-search-engine-manager.c
+++ /dev/null
@@ -1,215 +0,0 @@
-/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/*
- * Copyright © 2017 Cedric Le Moigne <cedlemo@gmx.com>
- *
- * This file is part of Epiphany.
- *
- * Epiphany is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Epiphany is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Epiphany. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#include "config.h"
-#include "ephy-search-engine-manager.h"
-
-#include "ephy-file-helpers.h"
-#include "ephy-string.h"
-
-#define G_SETTINGS_ENABLE_BACKEND 1
-#include <gio/gsettingsbackend.h>
-
-struct _EphySearchEngineManager
-{
- GObject parent_instance;
- GSettingsBackend *backend;
- GSettings *settings;
- GHashTable *search_engines;
-};
-
-G_DEFINE_TYPE (EphySearchEngineManager, ephy_search_engine_manager, G_TYPE_OBJECT)
-
-static void
-ephy_search_engine_manager_init (EphySearchEngineManager *manager)
-{
- char *key_file = NULL;
- char **search_engine_urls;
- char **search_engine_names;
- uint n_engines;
-
- manager->search_engines = g_hash_table_new_full (g_str_hash, g_str_equal, g_free, g_free);
- key_file = g_build_filename (ephy_dot_dir (), G_DIR_SEPARATOR_S "search-engines.ini", NULL);
-
- manager->backend = g_keyfile_settings_backend_new (key_file, "/", "SearchEngines");
- g_free (key_file);
-
- manager->settings = g_settings_new_with_backend_and_path ("org.gnome.Epiphany.search-engines",
- manager->backend,
- "/org/gnome/epiphany/search-engines/");
-
- search_engine_names = g_settings_get_strv (manager->settings,
- "search-engines-names");
- search_engine_urls = g_settings_get_strv (manager->settings,
- "search-engines-urls");
- n_engines = g_strv_length (search_engine_names);
-
- for (uint i = 0; i < n_engines; ++i) {
- const char *name = search_engine_names[i];
- const char *url = search_engine_urls[i];
- g_hash_table_insert (manager->search_engines,
- g_strdup (name),
- g_strdup (url));
- }
-
- g_strfreev (search_engine_names);
- g_strfreev (search_engine_urls);
-}
-
-static void
-ephy_search_engine_manager_dispose (GObject *object)
-{
- EphySearchEngineManager *manager = EPHY_SEARCH_ENGINE_MANAGER (object);
-
- g_clear_pointer (&manager->search_engines, g_hash_table_destroy);
- g_clear_object (&manager->backend);
- g_clear_object (&manager->settings);
-
- G_OBJECT_CLASS (ephy_search_engine_manager_parent_class)->dispose (object);
-}
-
-static void
-ephy_search_engine_manager_class_init (EphySearchEngineManagerClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- object_class->dispose = ephy_search_engine_manager_dispose;
-}
-
-EphySearchEngineManager *
-ephy_search_engine_manager_new (void)
-{
- return EPHY_SEARCH_ENGINE_MANAGER (g_object_new (EPHY_TYPE_SEARCH_ENGINE_MANAGER, NULL));
-}
-
-const char *
-ephy_search_engine_manager_get_url (EphySearchEngineManager *manager,
- const char *name)
-{
- if (!manager->search_engines)
- return NULL;
-
- return g_hash_table_lookup (manager->search_engines, name);
-}
-
-char *
-ephy_search_engine_manager_get_default_engine (EphySearchEngineManager *manager)
-{
- if (!manager->settings)
- return NULL;
-
- return g_settings_get_string (manager->settings, "default-search-engine");
-}
-
-char **
-ephy_search_engine_manager_get_names (EphySearchEngineManager *manager)
-{
- if (!manager->settings)
- return NULL;
-
- return g_settings_get_strv (manager->settings, "search-engines-names");
-}
-
-GSettings *
-ephy_search_engine_manager_get_settings (EphySearchEngineManager *manager)
-{
- return g_settings_new_with_backend_and_path ("org.gnome.Epiphany.search-engines",
- manager->backend,
- "/org/gnome/epiphany/search-engines/");
-}
-
-static void
-ephy_search_engine_manager_apply_settings (EphySearchEngineManager *manager)
-{
- GHashTableIter iter;
- gpointer key, value;
- int size;
- int i = 0;
- char **search_engine_names;
- char **search_engine_urls;
-
- if (!manager->search_engines)
- return;
-
- size = g_hash_table_size (manager->search_engines);
-
- search_engine_names = g_malloc(size + 1);
- search_engine_urls = g_malloc(size + 1);
-
- g_hash_table_iter_init (&iter, manager->search_engines);
- while (g_hash_table_iter_next (&iter, &key, &value))
- {
- search_engine_names[i] = key;
- search_engine_urls[i] = value;
- i++;
- }
- search_engine_names[size] = NULL;
- search_engine_urls[size] = NULL;
-
- if (!manager->settings)
- return;
-
- g_settings_set_strv (manager->settings,
- "search-engines-names",
- (const char * const*) search_engine_names);
- g_settings_set_strv (manager->settings,
- "search-engines-urls",
- (const char * const*) search_engine_urls);
-
- g_strfreev (search_engine_names);
- g_strfreev (search_engine_urls);
-}
-
-void
-ephy_search_engine_manager_add_engine (EphySearchEngineManager *manager,
- const char *name,
- const char *url)
-{
- if (!manager->search_engines)
- return;
-
- g_hash_table_insert (manager->search_engines, g_strdup (name), g_strdup (url));
- ephy_search_engine_manager_apply_settings (manager);
-}
-
-void
-ephy_search_engine_manager_delete_engine (EphySearchEngineManager *manager,
- const char *name)
-{
- if (!manager->search_engines)
- return;
-
- g_hash_table_remove (manager->search_engines, name);
- ephy_search_engine_manager_apply_settings (manager);
-}
-
-void
-ephy_search_engine_manager_modify_engine (EphySearchEngineManager *manager,
- const char *name,
- const char *url)
-{
- if (!manager->search_engines)
- return;
-
- g_hash_table_replace (manager->search_engines,
- g_strdup (name),
- g_strdup (url));
- ephy_search_engine_manager_apply_settings (manager);
-}
diff --git a/lib/ephy-search-engine-manager.h b/lib/ephy-search-engine-manager.h
deleted file mode 100644
index 701e02e35..000000000
--- a/lib/ephy-search-engine-manager.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/*
- * Copyright © 2017 Cedric Le Moigne <cedlemo@gmx.com>
- *
- * This file is part of Epiphany.
- *
- * Epiphany is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
- *
- * Epiphany is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with Epiphany. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#pragma once
-
-#include <gio/gio.h>
-#include <glib-object.h>
-
-G_BEGIN_DECLS
-
-#define EPHY_TYPE_SEARCH_ENGINE_MANAGER (ephy_search_engine_manager_get_type ())
-
-G_DECLARE_FINAL_TYPE (EphySearchEngineManager, ephy_search_engine_manager, EPHY, SEARCH_ENGINE_MANAGER, GObject)
-
-EphySearchEngineManager *ephy_search_engine_manager_new (void);
-const char *ephy_search_engine_manager_get_url (EphySearchEngineManager *manager,
- const char *name);
-char *ephy_search_engine_manager_get_default_engine (EphySearchEngineManager *manager);
-char **ephy_search_engine_manager_get_names (EphySearchEngineManager *manager);
-GSettings *ephy_search_engine_manager_get_settings (EphySearchEngineManager *manager);
-void ephy_search_engine_manager_add_engine (EphySearchEngineManager *manager,
- const char *name,
- const char *url);
-void ephy_search_engine_manager_delete_engine (EphySearchEngineManager *manager,
- const char *name);
-void ephy_search_engine_manager_modify_engine (EphySearchEngineManager *manager,
- const char *name,
- const char *url);
-
-G_END_DECLS
diff --git a/src/prefs-dialog.c b/src/prefs-dialog.c
index 3f9e16b66..d1c16a433 100644
--- a/src/prefs-dialog.c
+++ b/src/prefs-dialog.c
@@ -147,6 +147,7 @@ typedef struct {
enum {
SEARCH_ENGINE_COL_NAME,
+ SEARCH_ENGINE_COL_STOCK_URL,
SEARCH_ENGINE_COL_URL,
SEARCH_ENGINE_NUM_COLS
};
@@ -659,7 +660,7 @@ combo_get_mapping (GValue *value,
while (valid) {
char *item_name;
- gtk_tree_model_get (model, &iter, 0, &item_name, -1);
+ gtk_tree_model_get (model, &iter, 1, &item_name, -1);
if (g_strcmp0 (item_name, settings_name) == 0) {
g_value_set_int (value, i);
@@ -692,7 +693,7 @@ combo_set_mapping (const GValue *value,
if (valid) {
char *item_name;
- gtk_tree_model_get (model, &iter, 0, &item_name, -1);
+ gtk_tree_model_get (model, &iter, 1, &item_name, -1);
variant = g_variant_new_string (item_name);
@@ -1340,23 +1341,82 @@ cookies_set_mapping (const GValue *value,
}
static void
-search_engine_combo_add_search_engines (GtkListStore *store,
- EphySearchEngineManager *manager)
+search_engine_combo_add_default_engines (GtkListStore *store)
{
- guint i, n_engines;
- gchar **engines_names ;
- engines_names = ephy_search_engine_manager_get_names (manager);
- n_engines = g_strv_length (engines_names);
-
- for (i = 0; i < n_engines; i++) {
- const char *name = engines_names[i];
- const char *url = ephy_search_engine_manager_get_url (manager, name);
+ guint i;
+ const char *default_engines[][3] = { /* Search engine option in the preferences dialog */
+ { N_("DuckDuckGo"),
+ "https://duckduckgo.com/?q=%s&t=epiphany",
+ /* For the preferences dialog. Must exactly match the URL
+ * you chose in the gschema, but with & instead of &amp;
+ * If the match is not exact, there will be a spurious, ugly
+ * entry in the preferences combo, so please test this. */
+ N_("https://duckduckgo.com/?q=%s&t=epiphany") },
+ /* Search engine option in the preferences dialog */
+ { N_("Google"),
+ "https://google.com/search?q=%s",
+ /* For the preferences dialog. Consider a regional variant, like google.co.uk */
+ N_("https://google.com/search?q=%s") },
+ /* Search engine option in the preferences dialog */
+ { N_("Bing"),
+ "https://www.bing.com/search?q=%s",
+ /* For the preferences dialog. Consider a regional variant, like uk.bing.com */
+ N_("https://www.bing.com/search?q=%s") }
+ };
+
+ for (i = 0; i < G_N_ELEMENTS (default_engines); ++i) {
gtk_list_store_insert_with_values (store, NULL, -1,
- SEARCH_ENGINE_COL_NAME, name,
- SEARCH_ENGINE_COL_URL, url,
+ SEARCH_ENGINE_COL_NAME,
+ _(default_engines[i][0]),
+ SEARCH_ENGINE_COL_STOCK_URL,
+ default_engines[i][1],
+ SEARCH_ENGINE_COL_URL,
+ _(default_engines[i][2]),
-1);
}
- g_strfreev (engines_names);
+}
+
+/* Has the user manually set the engine to something not in the combo?
+ * If so, add that URL as an extra item in the combo. */
+static void
+search_engine_combo_add_current_engine (GtkListStore *store)
+{
+ GtkTreeIter iter;
+ char *original_url;
+ gboolean in_combo = FALSE;
+ gboolean has_next = FALSE;
+
+ original_url = g_settings_get_string (EPHY_SETTINGS_MAIN,
+ EPHY_PREFS_KEYWORD_SEARCH_URL);
+ if (!original_url)
+ return;
+
+ has_next = gtk_tree_model_get_iter_first (GTK_TREE_MODEL (store), &iter);
+
+ while (!in_combo && has_next) {
+ char *stock_url, *url;
+
+ gtk_tree_model_get (GTK_TREE_MODEL (store), &iter,
+ SEARCH_ENGINE_COL_STOCK_URL, &stock_url,
+ SEARCH_ENGINE_COL_URL, &url, -1);
+
+ if (strcmp (original_url, stock_url) == 0 ||
+ strcmp (original_url, url) == 0)
+ in_combo = TRUE;
+
+ g_free (stock_url);
+ g_free (url);
+ has_next = gtk_tree_model_iter_next (GTK_TREE_MODEL (store), &iter);
+ }
+
+ if (!in_combo)
+ gtk_list_store_insert_with_values (store, NULL, -1,
+ SEARCH_ENGINE_COL_NAME, original_url,
+ SEARCH_ENGINE_COL_STOCK_URL, original_url,
+ SEARCH_ENGINE_COL_URL, original_url,
+ -1);
+
+ g_free (original_url);
}
static void
@@ -1364,45 +1424,30 @@ create_search_engine_combo (GtkComboBox *combo)
{
GtkCellRenderer *renderer;
GtkListStore *store;
- char *default_search_engine;
- GSettings *search_engine_settings;
- EphyEmbedShell *shell;
- EphySearchEngineManager *search_engine_manager;
-
- shell = ephy_embed_shell_get_default ();
- search_engine_manager = ephy_embed_shell_get_search_engine_manager (shell);
store = GTK_LIST_STORE (gtk_combo_box_get_model (combo));
- search_engine_combo_add_search_engines (store, search_engine_manager);
+ search_engine_combo_add_default_engines (store);
+ search_engine_combo_add_current_engine (store);
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store),
- SEARCH_ENGINE_COL_NAME,
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE (store), SEARCH_ENGINE_COL_NAME,
GTK_SORT_ASCENDING);
gtk_combo_box_set_model (combo, GTK_TREE_MODEL (store));
- default_search_engine = ephy_search_engine_manager_get_default_engine (search_engine_manager);
-
- gtk_combo_box_set_id_column (combo, SEARCH_ENGINE_COL_NAME);
- gtk_combo_box_set_active_id (combo, default_search_engine);
-
renderer = gtk_cell_renderer_text_new ();
gtk_cell_layout_pack_start (GTK_CELL_LAYOUT (combo), renderer, TRUE);
gtk_cell_layout_set_attributes (GTK_CELL_LAYOUT (combo), renderer,
"text", SEARCH_ENGINE_COL_NAME,
NULL);
- search_engine_settings = ephy_search_engine_manager_get_settings (search_engine_manager);
-
- g_settings_bind_with_mapping (search_engine_settings,
- "default-search-engine",
+ g_settings_bind_with_mapping (EPHY_SETTINGS_MAIN,
+ EPHY_PREFS_KEYWORD_SEARCH_URL,
combo, "active",
G_SETTINGS_BIND_DEFAULT,
combo_get_mapping,
combo_set_mapping,
combo,
NULL);
- g_free (default_search_engine);
}
static gboolean
diff --git a/src/search-provider/ephy-search-provider.c b/src/search-provider/ephy-search-provider.c
index b91288685..0926a381e 100644
--- a/src/search-provider/ephy-search-provider.c
+++ b/src/search-provider/ephy-search-provider.c
@@ -29,11 +29,11 @@
#include "ephy-profile-utils.h"
#include "ephy-shell.h"
+#include <string.h>
+#include <glib/gi18n.h>
#include <gio/gio.h>
#include <gio/gdesktopappinfo.h>
-#include <glib/gi18n.h>
#include <libsoup/soup.h>
-#include <string.h>
struct _EphySearchProvider {
GApplication parent_instance;
@@ -278,21 +278,15 @@ launch_search (EphySearchProvider *self,
char **terms,
guint timestamp)
{
- char *search_string;
- const char *url_search;
- char *query_param;
- char *effective_url;
- char *default_name;
- EphyEmbedShell *shell;
- EphySearchEngineManager *search_engine_manager;
+ char *search_string, *url_search, *query_param, *effective_url;
+
+ url_search = g_settings_get_string (self->settings, EPHY_PREFS_KEYWORD_SEARCH_URL);
- shell = ephy_embed_shell_get_default ();
- search_engine_manager = ephy_embed_shell_get_search_engine_manager (shell);
- default_name = ephy_search_engine_manager_get_default_engine (search_engine_manager);
- url_search = ephy_search_engine_manager_get_url (search_engine_manager, default_name);
+ if (url_search == NULL || url_search[0] == '\0') {
+ g_free (url_search);
- if (url_search == NULL || url_search[0] == '\0')
- url_search = _("https://duckduckgo.com/?q=%s&amp;t=epiphany");
+ url_search = g_strdup (_("https://duckduckgo.com/?q=%s&amp;t=epiphany"));
+ }
search_string = g_strjoinv (" ", terms);
query_param = soup_form_encode ("q", search_string, NULL);
@@ -307,9 +301,9 @@ launch_search (EphySearchProvider *self,
launch_uri (effective_url, timestamp);
g_free (query_param);
+ g_free (url_search);
g_free (effective_url);
g_free (search_string);
- g_free (default_name);
}
static gboolean