[evolution/wip/webkit2] Bug 751225 - Spell check selection changes font settings to initial settings
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/webkit2] Bug 751225 - Spell check selection changes font settings to initial settings
- Date: Fri, 26 Feb 2016 11:01:23 +0000 (UTC)
commit e0990d9edda274643f07ef0992db7c26f46bc46a
Author: Tomas Popela <tpopela redhat com>
Date: Fri Feb 26 11:42:33 2016 +0100
Bug 751225 - Spell check selection changes font settings to initial settings
.../e-html-editor-selection-dom-functions.c | 36 ++++++++++++++++++--
1 files changed, 33 insertions(+), 3 deletions(-)
---
diff --git a/web-extensions/composer/e-html-editor-selection-dom-functions.c
b/web-extensions/composer/e-html-editor-selection-dom-functions.c
index 3a41076..19b953d 100644
--- a/web-extensions/composer/e-html-editor-selection-dom-functions.c
+++ b/web-extensions/composer/e-html-editor-selection-dom-functions.c
@@ -6100,6 +6100,8 @@ dom_replace_caret_word (WebKitDOMDocument *document,
{
WebKitDOMDOMWindow *dom_window;
WebKitDOMDOMSelection *dom_selection;
+ WebKitDOMDocumentFragment *fragment;
+ WebKitDOMNode *node;
WebKitDOMRange *range;
dom_window = webkit_dom_document_get_default_view (document);
@@ -6109,12 +6111,40 @@ dom_replace_caret_word (WebKitDOMDocument *document,
range = dom_get_current_range (document);
webkit_dom_range_expand (range, "word", NULL);
webkit_dom_dom_selection_add_range (dom_selection, range);
+
+ fragment = webkit_dom_range_extract_contents (range, NULL);
+
+ /* Get the text node to replace and leave other formatting nodes
+ * untouched (font color, boldness, ...). */
+ webkit_dom_node_normalize (WEBKIT_DOM_NODE (fragment));
+ node = webkit_dom_node_get_first_child (WEBKIT_DOM_NODE (fragment));
+ if (!WEBKIT_DOM_IS_TEXT (node)) {
+ while (node && WEBKIT_DOM_IS_ELEMENT (node))
+ node = webkit_dom_node_get_first_child (node);
+ }
+
+ if (node && WEBKIT_DOM_IS_TEXT (node)) {
+ WebKitDOMText *text;
+
+ /* Replace the word */
+ text = webkit_dom_document_create_text_node (document, replacement);
+ webkit_dom_node_replace_child (
+ webkit_dom_node_get_parent_node (node),
+ WEBKIT_DOM_NODE (text),
+ node,
+ NULL);
+
+ /* Insert the word on current location. */
+ webkit_dom_range_insert_node (range, WEBKIT_DOM_NODE (fragment), NULL);
+
+ webkit_dom_dom_selection_collapse_to_end (dom_selection, NULL);
+ }
+
+ dom_force_spell_check_for_current_paragraph (document, extension);
+
g_object_unref (range);
g_object_unref (dom_selection);
g_object_unref (dom_window);
-
- dom_exec_command (document, extension, E_HTML_EDITOR_VIEW_COMMAND_PASTE_AND_MATCH_STYLE, replacement);
- dom_force_spell_check_for_current_paragraph (document, extension);
}
/**
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]