[evolution/wip/webkit2] EHTMLEditorSelection - History saved wrongly when setting Blockquote format
- From: Milan Crha <mcrha src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution/wip/webkit2] EHTMLEditorSelection - History saved wrongly when setting Blockquote format
- Date: Wed, 24 Feb 2016 12:46:49 +0000 (UTC)
commit 0d18f1521882b0c8dc4dcac6464064048700a01e
Author: Tomas Popela <tpopela redhat com>
Date: Wed Feb 24 13:46:42 2016 +0100
EHTMLEditorSelection - History saved wrongly when setting Blockquote format
.../e-html-editor-selection-dom-functions.c | 39 ++++++++++++--------
1 files changed, 24 insertions(+), 15 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 90e79d3..58d6c62 100644
--- a/web-extensions/composer/e-html-editor-selection-dom-functions.c
+++ b/web-extensions/composer/e-html-editor-selection-dom-functions.c
@@ -4956,27 +4956,36 @@ dom_selection_set_block_format (WebKitDOMDocument *document,
ev->data.style.to = format;
} else {
WebKitDOMDocumentFragment *fragment;
- WebKitDOMElement *element;
- WebKitDOMNode *block;
+ WebKitDOMElement *selection_start_marker, *selection_end_marker;
+ WebKitDOMNode *block, *end_block;
- fragment = webkit_dom_range_clone_contents (range, NULL);
-
- element = webkit_dom_document_get_element_by_id (
+ selection_start_marker = webkit_dom_document_get_element_by_id (
document, "-x-evo-selection-start-marker");
- block = get_parent_block_node_from_child (WEBKIT_DOM_NODE (element));
- webkit_dom_node_replace_child (
- WEBKIT_DOM_NODE (fragment),
- webkit_dom_node_clone_node (block, TRUE),
- webkit_dom_node_get_first_child (WEBKIT_DOM_NODE (fragment)),
- NULL);
+ selection_end_marker = webkit_dom_document_get_element_by_id (
+ document, "-x-evo-selection-end-marker");
+ block = get_parent_block_node_from_child (
+ WEBKIT_DOM_NODE (selection_start_marker));
+ end_block = get_parent_block_node_from_child (
+ WEBKIT_DOM_NODE (selection_end_marker));
+ if (webkit_dom_range_get_collapsed (range, NULL) ||
+ webkit_dom_node_is_same_node (block, end_block)) {
+ fragment = webkit_dom_document_create_document_fragment (document);
- if (!webkit_dom_range_get_collapsed (range, NULL)) {
- element = webkit_dom_document_get_element_by_id (
- document, "-x-evo-selection-end-marker");
- block = get_parent_block_node_from_child (WEBKIT_DOM_NODE (element));
+ webkit_dom_node_append_child (
+ WEBKIT_DOM_NODE (fragment),
+ webkit_dom_node_clone_node (block, TRUE),
+ NULL);
+ } else {
+ fragment = webkit_dom_range_clone_contents (range, NULL);
webkit_dom_node_replace_child (
WEBKIT_DOM_NODE (fragment),
webkit_dom_node_clone_node (block, TRUE),
+ webkit_dom_node_get_first_child (WEBKIT_DOM_NODE (fragment)),
+ NULL);
+
+ webkit_dom_node_replace_child (
+ WEBKIT_DOM_NODE (fragment),
+ webkit_dom_node_clone_node (end_block, TRUE),
webkit_dom_node_get_last_child (WEBKIT_DOM_NODE (fragment)),
NULL);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]