[evolution/wip/webkit2] EHTMLEditorView - When incidentally writing into smiley, move out just the newly written character b
- From: Tomas Popela <tpopela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/webkit2] EHTMLEditorView - When incidentally writing into smiley, move out just the newly written character b
- Date: Wed, 22 Apr 2015 13:16:57 +0000 (UTC)
commit bf509ade725f38863abe09c598f04579f8ac637f
Author: Tomas Popela <tpopela redhat com>
Date: Wed Apr 22 11:37:25 2015 +0200
EHTMLEditorView - When incidentally writing into smiley, move out just the newly written character but
not the entire smiley text out of smiley
web-extensions/e-html-editor-view-dom-functions.c | 36 ++++++++++++++++++--
1 files changed, 32 insertions(+), 4 deletions(-)
---
diff --git a/web-extensions/e-html-editor-view-dom-functions.c
b/web-extensions/e-html-editor-view-dom-functions.c
index f5e7200..7116581 100644
--- a/web-extensions/e-html-editor-view-dom-functions.c
+++ b/web-extensions/e-html-editor-view-dom-functions.c
@@ -1916,18 +1916,46 @@ body_input_event_cb (WebKitDOMElement *element,
* smiley wrapper. If he will start to write there we have to move the written
* text out of the wrapper and move caret to right place */
if (WEBKIT_DOM_IS_ELEMENT (parent) &&
- element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-smiley-wrapper")) {
+ element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-smiley-text")) {
+ gchar *text;
+ WebKitDOMCharacterData *data;
+ WebKitDOMText *text_node;
+
+ /* Split out the newly written character to its own text node, */
+ data = WEBKIT_DOM_CHARACTER_DATA (node);
+ parent = webkit_dom_node_get_parent_node (parent);
+ text = webkit_dom_character_data_substring_data (
+ data,
+ webkit_dom_character_data_get_length (data) - 1,
+ 1,
+ NULL);
+ webkit_dom_character_data_delete_data (
+ data,
+ webkit_dom_character_data_get_length (data) - 1,
+ 1,
+ NULL);
+ text_node = webkit_dom_document_create_text_node (document, text);
+ g_free (text);
+
webkit_dom_node_insert_before (
webkit_dom_node_get_parent_node (parent),
- dom_create_caret_position_node (document),
+ WEBKIT_DOM_NODE (
+ dom_create_selection_marker (document, FALSE)),
webkit_dom_node_get_next_sibling (parent),
NULL);
webkit_dom_node_insert_before (
webkit_dom_node_get_parent_node (parent),
- node,
+ WEBKIT_DOM_NODE (
+ dom_create_selection_marker (document, TRUE)),
webkit_dom_node_get_next_sibling (parent),
NULL);
- dom_restore_caret_position (document);
+ /* Move the text node outside of smiley. */
+ webkit_dom_node_insert_before (
+ webkit_dom_node_get_parent_node (parent),
+ WEBKIT_DOM_NODE (text_node),
+ webkit_dom_node_get_next_sibling (parent),
+ NULL);
+ dom_selection_restore (document);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]