aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomas Popela <tpopela@redhat.com>2014-06-16 21:59:14 +0800
committerTomas Popela <tpopela@redhat.com>2014-06-16 21:59:14 +0800
commit4a12e23cab29df538eeec9b5f4d7dcf9a2f6cca0 (patch)
treecb0913a91a3fce77216d0ba3187600935212b724
parentd2b05fd46bbc736466ae172c64bed727e3b889b8 (diff)
downloadgsoc2013-evolution-4a12e23cab29df538eeec9b5f4d7dcf9a2f6cca0.tar
gsoc2013-evolution-4a12e23cab29df538eeec9b5f4d7dcf9a2f6cca0.tar.gz
gsoc2013-evolution-4a12e23cab29df538eeec9b5f4d7dcf9a2f6cca0.tar.bz2
gsoc2013-evolution-4a12e23cab29df538eeec9b5f4d7dcf9a2f6cca0.tar.lz
gsoc2013-evolution-4a12e23cab29df538eeec9b5f4d7dcf9a2f6cca0.tar.xz
gsoc2013-evolution-4a12e23cab29df538eeec9b5f4d7dcf9a2f6cca0.tar.zst
gsoc2013-evolution-4a12e23cab29df538eeec9b5f4d7dcf9a2f6cca0.zip
EHTMLEditor: Move remove_node and remove_node_if_empty to EWebView
And use them in EHTMLEditorView if possible.
-rw-r--r--e-util/e-html-editor-selection.c29
-rw-r--r--e-util/e-html-editor-view.c165
-rw-r--r--e-util/e-web-view.c29
-rw-r--r--e-util/e-web-view.h2
4 files changed, 75 insertions, 150 deletions
diff --git a/e-util/e-html-editor-selection.c b/e-util/e-html-editor-selection.c
index 02c5586824..62837f4f67 100644
--- a/e-util/e-html-editor-selection.c
+++ b/e-util/e-html-editor-selection.c
@@ -1158,13 +1158,6 @@ create_list_element (EHTMLEditorSelection *selection,
}
static void
-remove_node (WebKitDOMNode *node)
-{
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (node), node, NULL);
-}
-
-static void
format_change_list_from_list (EHTMLEditorSelection *selection,
WebKitDOMDocument *document,
EHTMLEditorSelectionBlockFormat to,
@@ -1735,28 +1728,6 @@ format_change_block_to_block (EHTMLEditorSelection *selection,
}
static void
-remove_node_if_empty (WebKitDOMNode *node)
-{
- if (!WEBKIT_DOM_IS_NODE (node))
- return;
-
- if (!webkit_dom_node_get_first_child (node)) {
- remove_node (node);
- } else {
- gchar *text_content;
-
- text_content = webkit_dom_node_get_text_content (node);
- if (!text_content)
- remove_node (node);
-
- if (text_content && !*text_content)
- remove_node (node);
-
- g_free (text_content);
- }
-}
-
-static void
format_change_block_to_list (EHTMLEditorSelection *selection,
EHTMLEditorSelectionBlockFormat format,
EHTMLEditorView *view,
diff --git a/e-util/e-html-editor-view.c b/e-util/e-html-editor-view.c
index c4442a2562..4fd9f1473e 100644
--- a/e-util/e-html-editor-view.c
+++ b/e-util/e-html-editor-view.c
@@ -279,8 +279,7 @@ e_html_editor_view_force_spell_check_for_current_paragraph (EHTMLEditorView *vie
}
/* Remove the text that we inserted on the end of the paragraph */
- webkit_dom_node_remove_child (
- WEBKIT_DOM_NODE (element), WEBKIT_DOM_NODE (text), NULL);
+ remove_node (WEBKIT_DOM_NODE (text));
/* Unblock the callbacks */
g_signal_handlers_unblock_by_func (
@@ -383,8 +382,7 @@ refresh_spell_check (EHTMLEditorView *view,
}
/* Remove the text that we inserted on the end of the body */
- webkit_dom_node_remove_child (
- WEBKIT_DOM_NODE (body), WEBKIT_DOM_NODE (text), NULL);
+ remove_node (WEBKIT_DOM_NODE (text));
/* Unblock the callbacks */
g_signal_handlers_unblock_by_func (
@@ -434,13 +432,9 @@ body_input_event_cb (WebKitDOMElement *element,
gchar *text = webkit_dom_node_get_text_content (
prev_sibling);
- if (g_strcmp0 (text, UNICODE_ZERO_WIDTH_SPACE) == 0) {
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (
- prev_sibling),
- prev_sibling,
- NULL);
- }
+ if (g_strcmp0 (text, UNICODE_ZERO_WIDTH_SPACE) == 0)
+ remove_node (prev_sibling);
+
g_free (text);
}
@@ -611,10 +605,7 @@ put_body_in_citation (WebKitDOMDocument *document)
WebKitDOMHTMLElement *body = webkit_dom_document_get_body (document);
gchar *inner_html, *with_citation;
- webkit_dom_node_remove_child (
- WEBKIT_DOM_NODE (body),
- WEBKIT_DOM_NODE (cite_body),
- NULL);
+ remove_node (WEBKIT_DOM_NODE (cite_body));
inner_html = webkit_dom_html_element_get_inner_html (body);
with_citation = g_strconcat (
@@ -648,10 +639,7 @@ move_elements_to_body (WebKitDOMDocument *document)
NULL);
}
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (node),
- WEBKIT_DOM_NODE (node),
- NULL);
+ remove_node (node);
}
}
@@ -954,9 +942,7 @@ html_editor_view_check_magic_links (EHTMLEditorView *view,
tmp,
NULL);
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (node),
- node, NULL);
+ remove_node (node);
g_free (tmp);
}
@@ -994,9 +980,7 @@ html_editor_view_check_magic_links (EHTMLEditorView *view,
tmp,
NULL);
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (node),
- node, NULL);
+ remove_node (node);
g_free (tmp);
}
@@ -1293,12 +1277,8 @@ html_editor_view_set_links_active (EHTMLEditorView *view,
if (active) {
style = webkit_dom_document_get_element_by_id (
document, "--evolution-editor-style-a");
- if (style) {
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (
- WEBKIT_DOM_NODE (style)),
- WEBKIT_DOM_NODE (style), NULL);
- }
+ if (style)
+ remove_node (WEBKIT_DOM_NODE (style));
} else {
WebKitDOMHTMLHeadElement *head;
head = webkit_dom_document_get_head (document);
@@ -1834,12 +1814,8 @@ surround_text_with_paragraph_if_needed (EHTMLEditorSelection *selection,
node,
e_html_editor_selection_get_caret_position_node (document));
- if (WEBKIT_DOM_IS_HTMLBR_ELEMENT (next_sibling)) {
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (next_sibling),
- next_sibling,
- NULL);
- }
+ if (WEBKIT_DOM_IS_HTMLBR_ELEMENT (next_sibling))
+ remove_node (next_sibling);
/* Tab character */
if (WEBKIT_DOM_IS_ELEMENT (prev_sibling) &&
@@ -2549,14 +2525,10 @@ html_editor_view_process_document_from_convertor (EHTMLEditorView *view,
WEBKIT_DOM_NODE (paragraph)),
NULL);
- webkit_dom_node_remove_child (
- node, webkit_dom_node_get_first_child (node), NULL);
+ remove_node (webkit_dom_node_get_first_child (node));
}
- webkit_dom_node_remove_child (
- WEBKIT_DOM_NODE (body_convertor),
- WEBKIT_DOM_NODE (node),
- NULL);
+ remove_node (node);
}
repair_gmail_blockquotes (document_convertor);
@@ -3330,12 +3302,8 @@ insert_quote_symbols_before_node (WebKitDOMDocument *document,
node,
NULL);
- if (is_html_node) {
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (node),
- node,
- NULL);
- }
+ if (is_html_node)
+ remove_node (node);
g_free (quotation);
}
@@ -3474,10 +3442,7 @@ quote_plain_text_recursive (WebKitDOMDocument *document,
if (g_str_has_suffix (text_content, "\n")) {
insert_quote_symbols_before_node (
document, node, quote_level, FALSE);
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (node),
- node,
- NULL);
+ remove_node (node);
g_free (text_content);
node = next_sibling;
skip_node = TRUE;
@@ -3618,11 +3583,8 @@ e_html_editor_view_quote_plain_text_element (EHTMLEditorView *view,
list = webkit_dom_element_query_selector_all (
WEBKIT_DOM_ELEMENT (element_clone), "span.-x-evo-quoted", NULL);
length = webkit_dom_node_list_get_length (list);
- for (ii = 0; ii < length; ii++) {
- WebKitDOMNode *node = webkit_dom_node_list_item (list, ii);
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (node), node, NULL);
- }
+ for (ii = 0; ii < length; ii++)
+ remove_node (webkit_dom_node_list_item (list, ii));
quote_plain_text_recursive (
document, element_clone, element_clone, level);
@@ -3678,26 +3640,16 @@ e_html_editor_view_quote_plain_text (EHTMLEditorView *view)
WebKitDOMNode *prev_sibling = webkit_dom_node_get_previous_sibling (blockquote);
WebKitDOMNode *next_sibling = webkit_dom_node_get_next_sibling (blockquote);
- if (prev_sibling && WEBKIT_DOM_IS_HTMLBR_ELEMENT (prev_sibling)) {
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (prev_sibling),
- prev_sibling,
- NULL);
- }
- if (next_sibling && WEBKIT_DOM_IS_HTMLBR_ELEMENT (next_sibling)) {
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (next_sibling),
- next_sibling,
- NULL);
- }
+ if (prev_sibling && WEBKIT_DOM_IS_HTMLBR_ELEMENT (prev_sibling))
+ remove_node (prev_sibling);
+
+ if (next_sibling && WEBKIT_DOM_IS_HTMLBR_ELEMENT (next_sibling))
+ remove_node (next_sibling);
+
if (webkit_dom_node_has_child_nodes (blockquote)) {
WebKitDOMNode *child = webkit_dom_node_get_first_child (blockquote);
- if (WEBKIT_DOM_IS_HTMLBR_ELEMENT (child)) {
- webkit_dom_node_remove_child (
- blockquote,
- child,
- NULL);
- }
+ if (WEBKIT_DOM_IS_HTMLBR_ELEMENT (child))
+ remove_node (child);
}
}
@@ -4414,12 +4366,8 @@ process_elements (EHTMLEditorView *view,
g_string_append (buffer, content);
g_free (content);
}
- if (to_html) {
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (child),
- child,
- NULL);
- }
+ if (to_html)
+ remove_node (child);
skip_node = TRUE;
}
@@ -4578,10 +4526,7 @@ process_elements (EHTMLEditorView *view,
WEBKIT_DOM_NODE (img),
child,
NULL);
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (child),
- child,
- NULL);
+ remove_node (child);
skip_node = TRUE;
}
}
@@ -4654,12 +4599,8 @@ remove_wrapping (EHTMLEditorView *view)
list = webkit_dom_document_query_selector_all (document, "br.-x-evo-wrap-br", NULL);
length = webkit_dom_node_list_get_length (list);
- for (ii = 0; ii < length; ii++) {
- WebKitDOMNode *node = webkit_dom_node_list_item (list, ii);
-
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (node), node, NULL);
- }
+ for (ii = 0; ii < length; ii++)
+ remove_node (webkit_dom_node_list_item (list, ii));
}
static void
@@ -4674,12 +4615,8 @@ remove_images_in_element (EHTMLEditorView *view,
element, "img:not(.-x-evo-smiley-img)", NULL);
length = webkit_dom_node_list_get_length (images);
- for (ii = 0; ii < length; ii++) {
- WebKitDOMNode *img = webkit_dom_node_list_item (images, ii);
-
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (img), img, NULL);
- }
+ for (ii = 0; ii < length; ii++)
+ remove_node (webkit_dom_node_list_item (images, ii));
}
static void
@@ -4915,16 +4852,10 @@ convert_element_from_html_to_plain_text (EHTMLEditorView *view,
from = WEBKIT_DOM_NODE (main_blockquote);
} else {
if (signature) {
- signature_clone = webkit_dom_node_clone_node (
- webkit_dom_node_get_parent_node (
- WEBKIT_DOM_NODE (signature)),
- TRUE);
-
- webkit_dom_node_remove_child (
- WEBKIT_DOM_NODE (element),
- webkit_dom_node_get_parent_node (
- WEBKIT_DOM_NODE (signature)),
- NULL);
+ WebKitDOMNode *parent = webkit_dom_node_get_parent_node (
+ WEBKIT_DOM_NODE (signature));
+ signature_clone = webkit_dom_node_clone_node (parent, TRUE);
+ remove_node (parent);
}
from = WEBKIT_DOM_NODE (element);
}
@@ -5113,7 +5044,7 @@ process_content_for_plain_text (EHTMLEditorView *view)
WebKitDOMNode *node = webkit_dom_node_list_item (paragraphs, ii);
WebKitDOMNode *parent = webkit_dom_node_get_parent_node (node);
- webkit_dom_node_remove_child (parent, node, NULL);
+ remove_node (node);
webkit_dom_node_normalize (parent);
}
@@ -5123,8 +5054,7 @@ process_content_for_plain_text (EHTMLEditorView *view)
process_elements (view, source, FALSE, FALSE, TRUE, plain_text);
if (clean)
- webkit_dom_node_remove_child (
- WEBKIT_DOM_NODE (body), source, NULL);
+ remove_node (source);
/* Return text content between <body> and </body> */
return g_string_free (plain_text, FALSE);
@@ -5205,12 +5135,8 @@ clear_attributes (WebKitDOMDocument *document)
}
/* Remove everything from HEAD element */
- while (webkit_dom_node_has_child_nodes (WEBKIT_DOM_NODE (head))) {
- webkit_dom_node_remove_child (
- WEBKIT_DOM_NODE (head),
- webkit_dom_node_get_first_child (WEBKIT_DOM_NODE (head)),
- NULL);
- }
+ while (webkit_dom_node_has_child_nodes (WEBKIT_DOM_NODE (head)))
+ remove_node (WEBKIT_DOM_NODE (head));
/* Remove non Evolution attributes from BODY element */
attributes = webkit_dom_element_get_attributes (WEBKIT_DOM_ELEMENT (body));
@@ -5691,10 +5617,7 @@ e_html_editor_view_remove_embed_styles (EHTMLEditorView *view)
sheet = webkit_dom_document_get_element_by_id (
document, "-x-evo-composer-sheet");
- webkit_dom_node_remove_child (
- webkit_dom_node_get_parent_node (WEBKIT_DOM_NODE (sheet)),
- WEBKIT_DOM_NODE (sheet),
- NULL);
+ remove_node (WEBKIT_DOM_NODE (sheet));
}
static const gchar *
diff --git a/e-util/e-web-view.c b/e-util/e-web-view.c
index 5c6a8fbf57..5a1881dd85 100644
--- a/e-util/e-web-view.c
+++ b/e-util/e-web-view.c
@@ -3655,3 +3655,32 @@ element_remove_class (WebKitDOMElement *element,
g_free (element_class);
}
+
+void
+remove_node (WebKitDOMNode *node)
+{
+ webkit_dom_node_remove_child (
+ webkit_dom_node_get_parent_node (node), node, NULL);
+}
+
+void
+remove_node_if_empty (WebKitDOMNode *node)
+{
+ if (!WEBKIT_DOM_IS_NODE (node))
+ return;
+
+ if (!webkit_dom_node_get_first_child (node)) {
+ remove_node (node);
+ } else {
+ gchar *text_content;
+
+ text_content = webkit_dom_node_get_text_content (node);
+ if (!text_content)
+ remove_node (node);
+
+ if (text_content && !*text_content)
+ remove_node (node);
+
+ g_free (text_content);
+ }
+}
diff --git a/e-util/e-web-view.h b/e-util/e-web-view.h
index cbfd2cefad..657b4f7794 100644
--- a/e-util/e-web-view.h
+++ b/e-util/e-web-view.h
@@ -215,6 +215,8 @@ void element_add_class (WebKitDOMElement *element,
const gchar* class);
void element_remove_class (WebKitDOMElement *element,
const gchar* class);
+void remove_node (WebKitDOMNode *node);
+void remove_node_if_empty (WebKitDOMNode *node);
G_END_DECLS
#endif /* E_WEB_VIEW_H */