From b73adeb5e0456cba8a6592d16941e7911d81d5d4 Mon Sep 17 00:00:00 2001 From: Tomas Popela Date: Mon, 30 Jun 2014 16:02:29 +0200 Subject: Bug 473198 - evolution should ignore signature when checking for missing attachments Introduce method that returns body inner text without signature text. --- composer/e-composer-private.c | 1 + composer/e-msg-composer.c | 38 +++++++++++++++++++++++ composer/e-msg-composer.h | 2 ++ plugins/attachment-reminder/attachment-reminder.c | 3 +- 4 files changed, 43 insertions(+), 1 deletion(-) diff --git a/composer/e-composer-private.c b/composer/e-composer-private.c index bc3b6d8078..f36f217f4d 100644 --- a/composer/e-composer-private.c +++ b/composer/e-composer-private.c @@ -1177,6 +1177,7 @@ insert: body = webkit_dom_document_get_body (document); element = webkit_dom_document_create_element (document, "DIV", NULL); + webkit_dom_element_set_class_name (element, "-x-evo-signature-wrapper"); webkit_dom_html_element_set_inner_html ( WEBKIT_DOM_HTML_ELEMENT (element), html_buffer->str, NULL); diff --git a/composer/e-msg-composer.c b/composer/e-msg-composer.c index 2489a2e137..2e1f12df28 100644 --- a/composer/e-msg-composer.c +++ b/composer/e-msg-composer.c @@ -4924,6 +4924,44 @@ e_msg_composer_get_reply_to (EMsgComposer *composer) return address; } +/** + * e_msg_composer_get_raw_message_text_without_signature: + * + * Returns the text/plain of the message from composer without signature + **/ +GByteArray * +e_msg_composer_get_raw_message_text_without_signature (EMsgComposer *composer) +{ + EHTMLEditor *editor; + EHTMLEditorView *view; + GByteArray *array; + gint ii, length; + WebKitDOMDocument *document; + WebKitDOMNodeList *list; + + g_return_val_if_fail (E_IS_MSG_COMPOSER (composer), NULL); + + editor = e_msg_composer_get_editor (composer); + view = e_html_editor_get_view (editor); + document = webkit_web_view_get_dom_document (WEBKIT_WEB_VIEW (view)); + array = g_byte_array_new (); + + list = webkit_dom_document_query_selector_all ( + document, "body > *:not(.-x-evo-signature-wrapper)", NULL); + length = webkit_dom_node_list_get_length (list); + for (ii = 0; ii < length; ii++) { + gchar *text; + WebKitDOMNode *node = webkit_dom_node_list_item (list, ii); + + text = webkit_dom_html_element_get_inner_text ( + WEBKIT_DOM_HTML_ELEMENT (node)); + g_byte_array_append (array, (guint8 *) text, strlen (text)); + g_free (text); + } + + return array; +} + /** * e_msg_composer_get_raw_message_text: * diff --git a/composer/e-msg-composer.h b/composer/e-msg-composer.h index f6990415f7..1efc6c124e 100644 --- a/composer/e-msg-composer.h +++ b/composer/e-msg-composer.h @@ -181,6 +181,8 @@ EComposerHeaderTable * EAttachmentView * e_msg_composer_get_attachment_view (EMsgComposer *composer); +GByteArray * e_msg_composer_get_raw_message_text_without_signature + (EMsgComposer *composer); GByteArray * e_msg_composer_get_raw_message_text (EMsgComposer *composer); diff --git a/plugins/attachment-reminder/attachment-reminder.c b/plugins/attachment-reminder/attachment-reminder.c index d3edd3c01e..17b2b5c020 100644 --- a/plugins/attachment-reminder/attachment-reminder.c +++ b/plugins/attachment-reminder/attachment-reminder.c @@ -86,7 +86,8 @@ org_gnome_evolution_attachment_reminder (EPlugin *ep, if (check_for_attachment (t->composer)) return; - raw_msg_barray = e_msg_composer_get_raw_message_text (t->composer); + raw_msg_barray = + e_msg_composer_get_raw_message_text_without_signature (t->composer); if (!raw_msg_barray) return; -- cgit v1.2.3