[evolution/gnome-3-24] Bug 726533 - [webkit-composer] Text can be "bound" to an image object
- From: Tomas Popela <tpopela src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/gnome-3-24] Bug 726533 - [webkit-composer] Text can be "bound" to an image object
- Date: Thu, 23 Mar 2017 16:52:06 +0000 (UTC)
commit 213836d2984e88be650a47dc2636f66c58b37202
Author: Tomas Popela <tpopela redhat com>
Date: Thu Mar 23 14:11:30 2017 +0100
Bug 726533 - [webkit-composer] Text can be "bound" to an image object
Check whether we are writing in the image wrappers, if so then move the
current text node out of the wrapper and put caret behind it.
.../web-extension/e-editor-dom-functions.c | 38 ++++++++++++++++++++
1 files changed, 38 insertions(+), 0 deletions(-)
---
diff --git a/src/modules/webkit-editor/web-extension/e-editor-dom-functions.c
b/src/modules/webkit-editor/web-extension/e-editor-dom-functions.c
index a394041..f545c01 100644
--- a/src/modules/webkit-editor/web-extension/e-editor-dom-functions.c
+++ b/src/modules/webkit-editor/web-extension/e-editor-dom-functions.c
@@ -3406,6 +3406,7 @@ e_editor_dom_body_input_event_process (EEditorPage *editor_page,
}
if (WEBKIT_DOM_IS_TEXT (node)) {
+ WebKitDOMElement *parent;
gchar *text;
text = webkit_dom_node_get_text_content (node);
@@ -3427,6 +3428,43 @@ e_editor_dom_body_input_event_process (EEditorPage *editor_page,
e_editor_dom_check_magic_links (editor_page, FALSE);
}
}
+
+ parent = webkit_dom_node_get_parent_element (node);
+ if (element_has_class (parent, "-x-evo-resizable-wrapper") ||
+ element_has_class (parent, "-x-evo-smiley-wrapper")) {
+ WebKitDOMDOMWindow *dom_window = NULL;
+ WebKitDOMDOMSelection *dom_selection = NULL;
+ WebKitDOMNode *prev_sibling;
+ gboolean writing_before = TRUE;
+
+ dom_window = webkit_dom_document_get_default_view (document);
+ dom_selection = webkit_dom_dom_window_get_selection (dom_window);
+
+ prev_sibling = webkit_dom_node_get_previous_sibling (node);
+ if (prev_sibling && WEBKIT_DOM_IS_HTML_IMAGE_ELEMENT (prev_sibling))
+ writing_before = FALSE;
+
+ webkit_dom_node_insert_before (
+ webkit_dom_node_get_parent_node (WEBKIT_DOM_NODE (parent)),
+ node,
+ writing_before ?
+ WEBKIT_DOM_NODE (parent) :
+ webkit_dom_node_get_next_sibling (WEBKIT_DOM_NODE (parent)),
+ NULL);
+
+ g_clear_object (&range);
+
+ range = webkit_dom_document_create_range (document);
+ webkit_dom_range_select_node_contents (range, node, NULL);
+ webkit_dom_range_collapse (range, FALSE, NULL);
+
+ webkit_dom_dom_selection_remove_all_ranges (dom_selection);
+ webkit_dom_dom_selection_add_range (dom_selection, range);
+
+ g_clear_object (&dom_window);
+ g_clear_object (&dom_selection);
+ }
+
g_free (text);
}
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]