I#2526 - EWebView: Enable spell checking for editable fields
Closes https://gitlab.gnome.org/GNOME/evolution/-/issues/2526
This commit is contained in:
@ -203,6 +203,39 @@ async_context_free (gpointer ptr)
|
||||
g_slice_free (AsyncContext, async_context);
|
||||
}
|
||||
|
||||
static void
|
||||
e_web_view_update_spell_checking (EWebView *web_view,
|
||||
GSettings *settings)
|
||||
{
|
||||
WebKitWebContext *web_context;
|
||||
|
||||
web_context = webkit_web_view_get_context (WEBKIT_WEB_VIEW (web_view));
|
||||
|
||||
if (g_settings_get_boolean (settings, "composer-inline-spelling")) {
|
||||
gchar **languages;
|
||||
|
||||
languages = g_settings_get_strv (settings, "composer-spell-languages");
|
||||
|
||||
webkit_web_context_set_spell_checking_languages (web_context, (const gchar * const *) languages);
|
||||
webkit_web_context_set_spell_checking_enabled (web_context, languages != NULL);
|
||||
|
||||
g_strfreev (languages);
|
||||
} else {
|
||||
webkit_web_context_set_spell_checking_languages (web_context, NULL);
|
||||
webkit_web_context_set_spell_checking_enabled (web_context, FALSE);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
e_web_view_spell_settings_changed_cb (GSettings *settings,
|
||||
const gchar *key,
|
||||
gpointer user_data)
|
||||
{
|
||||
EWebView *web_view = user_data;
|
||||
|
||||
e_web_view_update_spell_checking (web_view, settings);
|
||||
}
|
||||
|
||||
static void
|
||||
action_copy_clipboard_cb (GtkAction *action,
|
||||
EWebView *web_view)
|
||||
@ -646,6 +679,10 @@ web_view_context_menu_cb (WebKitWebView *webkit_web_view,
|
||||
|
||||
context = webkit_hit_test_result_get_context (hit_test_result);
|
||||
|
||||
/* Show the default menu for an editable */
|
||||
if ((context & WEBKIT_HIT_TEST_RESULT_CONTEXT_EDITABLE) != 0)
|
||||
return FALSE;
|
||||
|
||||
if (context & WEBKIT_HIT_TEST_RESULT_CONTEXT_IMAGE) {
|
||||
gchar *image_uri = NULL;
|
||||
|
||||
@ -1691,6 +1728,14 @@ web_view_constructed (GObject *object)
|
||||
webkit_user_content_manager_register_script_message_handler (manager, "elementClicked");
|
||||
webkit_user_content_manager_register_script_message_handler (manager, "hasSelection");
|
||||
webkit_user_content_manager_register_script_message_handler (manager, "needInputChanged");
|
||||
|
||||
settings = e_util_ref_settings ("org.gnome.evolution.mail");
|
||||
g_signal_connect_object (settings, "changed::composer-inline-spelling",
|
||||
G_CALLBACK (e_web_view_spell_settings_changed_cb), web_view, 0);
|
||||
g_signal_connect_object (settings, "changed::composer-spell-languages",
|
||||
G_CALLBACK (e_web_view_spell_settings_changed_cb), web_view, 0);
|
||||
e_web_view_update_spell_checking (web_view, settings);
|
||||
g_clear_object (&settings);
|
||||
}
|
||||
|
||||
static void
|
||||
|
||||
Reference in New Issue
Block a user