diff -up evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-dom-functions.c.composer-font-color evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-dom-functions.c --- evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-dom-functions.c.composer-font-color 2017-03-24 13:43:34.992659166 +0100 +++ evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-dom-functions.c 2017-03-24 13:43:34.997659165 +0100 @@ -2834,6 +2834,8 @@ body_keypress_event_cb (WebKitDOMElement g_return_if_fail (E_IS_EDITOR_PAGE (editor_page)); + e_editor_page_set_is_processing_keypress_event (editor_page, TRUE); + document = webkit_dom_node_get_owner_document (WEBKIT_DOM_NODE (element)); dom_window = webkit_dom_document_get_default_view (document); dom_selection = webkit_dom_dom_window_get_selection (dom_window); @@ -3583,7 +3585,13 @@ body_input_event_cb (WebKitDOMElement *e { g_return_if_fail (E_IS_EDITOR_PAGE (editor_page)); - e_editor_dom_body_input_event_process (editor_page, event); + /* Only process the input event if it was triggered by the key press + * and not i.e. by exexCommand. This behavior changed when the support + * for beforeinput event was introduced in WebKit. */ + if (e_editor_page_is_processing_keypress_event (editor_page)) + e_editor_dom_body_input_event_process (editor_page, event); + + e_editor_page_set_is_processing_keypress_event (editor_page, FALSE); } void diff -up evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-page.c.composer-font-color evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-page.c --- evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-page.c.composer-font-color 2017-02-07 17:48:51.000000000 +0100 +++ evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-page.c 2017-03-24 13:43:34.997659165 +0100 @@ -64,6 +64,7 @@ struct _EEditorPagePrivate { gboolean pasting_content_from_itself; gboolean renew_history_after_coordinates; gboolean allow_top_signature; + gboolean processing_keypress_event; GHashTable *inline_images; @@ -246,6 +247,7 @@ e_editor_page_init (EEditorPage *editor_ editor_page->priv->block_format = E_CONTENT_EDITOR_BLOCK_FORMAT_PARAGRAPH; editor_page->priv->force_image_load = FALSE; editor_page->priv->html_mode = TRUE; + editor_page->priv->processing_keypress_event = FALSE; editor_page->priv->return_key_pressed = FALSE; editor_page->priv->space_key_pressed = FALSE; editor_page->priv->smiley_written = FALSE; @@ -559,6 +561,23 @@ e_editor_page_set_alignment (EEditorPage } gboolean +e_editor_page_is_processing_keypress_event (EEditorPage *editor_page) +{ + g_return_val_if_fail (E_IS_EDITOR_PAGE (editor_page), FALSE); + + return editor_page->priv->processing_keypress_event; +} + +void +e_editor_page_set_is_processing_keypress_event (EEditorPage *editor_page, + gboolean processing_keypress_event) +{ + g_return_if_fail (E_IS_EDITOR_PAGE (editor_page)); + + editor_page->priv->processing_keypress_event = processing_keypress_event; +} + +gboolean e_editor_page_get_return_key_pressed (EEditorPage *editor_page) { g_return_val_if_fail (E_IS_EDITOR_PAGE (editor_page), FALSE); diff -up evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-page.h.composer-font-color evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-page.h --- evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-page.h.composer-font-color 2017-02-07 17:48:51.000000000 +0100 +++ evolution-3.22.6/modules/webkit-editor/web-extension/e-editor-page.h 2017-03-24 13:43:34.997659165 +0100 @@ -112,6 +112,11 @@ void e_editor_page_set_alignment (EEdit EContentEditorAlignment value); gint e_editor_page_get_word_wrap_length (EEditorPage *editor_page); +gboolean e_editor_page_is_processing_keypress_event + (EEditorPage *editor_page); +void e_editor_page_set_is_processing_keypress_event + (EEditorPage *editor_page, + gboolean processing_keypress_event); gboolean e_editor_page_get_return_key_pressed (EEditorPage *editor_page); void e_editor_page_set_return_key_pressed