Add a preference Search engines in location completion

It seems that deletion of completion actions can fail, which means
that the actions remain until the next restart. It is not clear
how to fix this.
This commit is contained in:
Christian Dywan 2009-04-18 23:26:54 +02:00
parent 18b66ce7d1
commit 52084a21e1
4 changed files with 48 additions and 4 deletions

View file

@ -4569,6 +4569,15 @@ midori_browser_settings_notify (MidoriWebSettings* web_settings,
browser->show_statusbar = g_value_get_boolean (&value); browser->show_statusbar = g_value_get_boolean (&value);
else if (name == g_intern_string ("progress-in-location")) else if (name == g_intern_string ("progress-in-location"))
browser->progress_in_location = g_value_get_boolean (&value); browser->progress_in_location = g_value_get_boolean (&value);
else if (name == g_intern_string ("search-engines-in-completion"))
{
if (g_value_get_boolean (&value))
midori_location_action_set_search_engines (MIDORI_LOCATION_ACTION (
_action_by_name (browser, "Location")), browser->search_engines);
else
midori_location_action_set_search_engines (MIDORI_LOCATION_ACTION (
_action_by_name (browser, "Location")), NULL);
}
else if (name == g_intern_string ("location-entry-search")) else if (name == g_intern_string ("location-entry-search"))
{ {
katze_assign (browser->location_entry_search, g_value_dup_string (&value)); katze_assign (browser->location_entry_search, g_value_dup_string (&value));
@ -4727,8 +4736,16 @@ midori_browser_set_property (GObject* object,
case PROP_SEARCH_ENGINES: case PROP_SEARCH_ENGINES:
/* FIXME: Disconnect handlers */ /* FIXME: Disconnect handlers */
katze_object_assign (browser->search_engines, g_value_dup_object (value)); katze_object_assign (browser->search_engines, g_value_dup_object (value));
midori_location_action_set_search_engines (MIDORI_LOCATION_ACTION ( if (browser->settings)
_action_by_name (browser, "Location")), browser->search_engines); {
if (katze_object_get_boolean (browser->settings,
"search-engines-in-completion"))
midori_location_action_set_search_engines (MIDORI_LOCATION_ACTION (
_action_by_name (browser, "Location")), browser->search_engines);
else
midori_location_action_set_search_engines (MIDORI_LOCATION_ACTION (
_action_by_name (browser, "Location")), NULL);
}
midori_search_action_set_search_engines (MIDORI_SEARCH_ACTION ( midori_search_action_set_search_engines (MIDORI_SEARCH_ACTION (
_action_by_name (browser, "Search")), browser->search_engines); _action_by_name (browser, "Search")), browser->search_engines);
/* FIXME: Connect to updates */ /* FIXME: Connect to updates */

View file

@ -1246,9 +1246,10 @@ midori_location_action_set_search_engines (MidoriLocationAction* location_action
completion = gtk_entry_get_completion (GTK_ENTRY (child)); completion = gtk_entry_get_completion (GTK_ENTRY (child));
i = 0; i = 0;
/* FIXME: Apparently deleting doesn't always work, but why? */
if (location_action->search_engines) if (location_action->search_engines)
while ((item = katze_array_get_nth_item (location_action->search_engines, i))) while ((item = katze_array_get_nth_item (location_action->search_engines, i++)))
gtk_entry_completion_delete_action (completion, i++); gtk_entry_completion_delete_action (completion, i);
midori_location_action_add_actions (completion, search_engines); midori_location_action_add_actions (completion, search_engines);
} }

View file

@ -553,6 +553,8 @@ midori_preferences_set_settings (MidoriPreferences* preferences,
FILLED_ADD (button, 1, 2, 0, 1); FILLED_ADD (button, 1, 2, 0, 1);
#endif #endif
button = katze_property_proxy (settings, "progress-in-location", NULL); button = katze_property_proxy (settings, "progress-in-location", NULL);
FILLED_ADD (button, 0, 1, 1, 2);
button = katze_property_proxy (settings, "search-engines-in-completion", NULL);
FILLED_ADD (button, 1, 2, 1, 2); FILLED_ADD (button, 1, 2, 1, 2);
FRAME_NEW (_("Browsing")); FRAME_NEW (_("Browsing"));
TABLE_NEW (5, 2); TABLE_NEW (5, 2);

View file

@ -41,6 +41,7 @@ struct _MidoriWebSettings
MidoriToolbarStyle toolbar_style; MidoriToolbarStyle toolbar_style;
gboolean progress_in_location; gboolean progress_in_location;
gboolean search_engines_in_completion;
gchar* toolbar_items; gchar* toolbar_items;
gboolean compact_sidepanel; gboolean compact_sidepanel;
gboolean right_align_sidepanel; gboolean right_align_sidepanel;
@ -110,6 +111,7 @@ enum
PROP_TOOLBAR_STYLE, PROP_TOOLBAR_STYLE,
PROP_PROGRESS_IN_LOCATION, PROP_PROGRESS_IN_LOCATION,
PROP_SEARCH_ENGINES_IN_COMPLETION,
PROP_TOOLBAR_ITEMS, PROP_TOOLBAR_ITEMS,
PROP_COMPACT_SIDEPANEL, PROP_COMPACT_SIDEPANEL,
PROP_RIGHT_ALIGN_SIDEPANEL, PROP_RIGHT_ALIGN_SIDEPANEL,
@ -481,6 +483,22 @@ midori_web_settings_class_init (MidoriWebSettingsClass* class)
TRUE, TRUE,
flags)); flags));
/**
* MidoriWebSettings:search-engines-in-completion:
*
* Whether to show search engines in the location completion.
*
* Since: 0.1.3
*/
g_object_class_install_property (gobject_class,
PROP_SEARCH_ENGINES_IN_COMPLETION,
g_param_spec_boolean (
"search-engines-in-completion",
_("Search engines in location completion"),
_("Whether to show search engines in the location completion"),
TRUE,
flags));
g_object_class_install_property (gobject_class, g_object_class_install_property (gobject_class,
PROP_TOOLBAR_ITEMS, PROP_TOOLBAR_ITEMS,
g_param_spec_string ( g_param_spec_string (
@ -1036,6 +1054,9 @@ midori_web_settings_set_property (GObject* object,
case PROP_PROGRESS_IN_LOCATION: case PROP_PROGRESS_IN_LOCATION:
web_settings->progress_in_location = g_value_get_boolean (value); web_settings->progress_in_location = g_value_get_boolean (value);
break; break;
case PROP_SEARCH_ENGINES_IN_COMPLETION:
web_settings->search_engines_in_completion = g_value_get_boolean (value);
break;
case PROP_TOOLBAR_ITEMS: case PROP_TOOLBAR_ITEMS:
katze_assign (web_settings->toolbar_items, g_value_dup_string (value)); katze_assign (web_settings->toolbar_items, g_value_dup_string (value));
break; break;
@ -1232,6 +1253,9 @@ midori_web_settings_get_property (GObject* object,
case PROP_PROGRESS_IN_LOCATION: case PROP_PROGRESS_IN_LOCATION:
g_value_set_boolean (value, web_settings->progress_in_location); g_value_set_boolean (value, web_settings->progress_in_location);
break; break;
case PROP_SEARCH_ENGINES_IN_COMPLETION:
g_value_set_boolean (value, web_settings->search_engines_in_completion);
break;
case PROP_TOOLBAR_ITEMS: case PROP_TOOLBAR_ITEMS:
g_value_set_string (value, web_settings->toolbar_items); g_value_set_string (value, web_settings->toolbar_items);
break; break;