diff --git a/.gitignore b/.gitignore index 347c9af..a20ddde 100644 --- a/.gitignore +++ b/.gitignore @@ -83,3 +83,12 @@ evolution-2.31.5.tar.bz2 /evolution-3.13.8.tar.xz /evolution-3.13.9.tar.xz /evolution-3.13.10.tar.xz +/evolution-3.13.90.tar.xz +/evolution-3.15.91.tar.xz +/evolution-3.15.92.tar.xz +/evolution-3.16.0.tar.xz +/evolution-3.16.1.tar.xz +/evolution-3.16.2.1.tar.xz +/evolution-3.16.3.tar.xz +/evolution-3.16.4.tar.xz +/evolution-3.16.5.tar.xz diff --git a/evolution-1.4.4-ldap-x86_64-hack.patch b/evolution-1.4.4-ldap-x86_64-hack.patch deleted file mode 100644 index 2a1946b..0000000 --- a/evolution-1.4.4-ldap-x86_64-hack.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -up evolution-2.31.1/configure.ldaphack evolution-2.31.1/configure ---- evolution-2.31.1/configure.ldaphack 2010-05-03 12:43:34.000000000 +0200 -+++ evolution-2.31.1/configure 2010-05-03 19:22:55.000000000 +0200 -@@ -15797,7 +15797,7 @@ if test "${ac_cv_lib_ldap_ldap_open+set} - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS --LIBS="-lldap $LDAP_LDFLAGS $LDAP_LIBS $LIBS" -+LIBS="-lldap -lresolv $LDAP_LDFLAGS $LDAP_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - -@@ -16129,7 +16129,7 @@ if test "${ac_cv_lib_ldap_ldap_open+set} - $as_echo_n "(cached) " >&6 - else - ac_check_lib_save_LIBS=$LIBS --LIBS="-lldap $LDAP_LDFLAGS $LDAP_LIBS $LIBS" -+LIBS="-lldap -lresolv $LDAP_LDFLAGS $LDAP_LIBS $LIBS" - cat confdefs.h - <<_ACEOF >conftest.$ac_ext - /* end confdefs.h. */ - diff --git a/evolution-2.30.1-help-contents.patch b/evolution-2.30.1-help-contents.patch deleted file mode 100644 index 0b9e3be..0000000 --- a/evolution-2.30.1-help-contents.patch +++ /dev/null @@ -1,149 +0,0 @@ -diff -up evolution-3.13.6/addressbook/gui/contact-editor/e-contact-editor.c.help-contents evolution-3.13.6/addressbook/gui/contact-editor/e-contact-editor.c ---- evolution-3.13.6/addressbook/gui/contact-editor/e-contact-editor.c.help-contents 2014-09-22 09:15:05.051468361 +0200 -+++ evolution-3.13.6/addressbook/gui/contact-editor/e-contact-editor.c 2014-09-22 09:17:01.509463747 +0200 -@@ -4143,6 +4143,10 @@ e_contact_editor_init (EContactEditor *e - g_signal_connect ( - widget, "clicked", - G_CALLBACK (show_help_cb), e_contact_editor); -+ if (!e_misc_utils_is_help_package_installed ()) { -+ gtk_widget_set_sensitive (widget, FALSE); -+ gtk_widget_hide (widget); -+ } - - widget = e_builder_get_widget ( - e_contact_editor->priv->builder, "expander-contact-phone"); -diff -up evolution-3.13.6/calendar/gui/dialogs/comp-editor.c.help-contents evolution-3.13.6/calendar/gui/dialogs/comp-editor.c ---- evolution-3.13.6/calendar/gui/dialogs/comp-editor.c.help-contents 2014-04-11 09:21:59.000000000 +0200 -+++ evolution-3.13.6/calendar/gui/dialogs/comp-editor.c 2014-09-22 09:15:05.052468361 +0200 -@@ -2168,6 +2168,12 @@ comp_editor_init (CompEditor *editor) - G_BINDING_SYNC_CREATE); - } - -+ action = gtk_action_group_get_action (action_group, "help"); -+ if (action && !e_misc_utils_is_help_package_installed ()) { -+ gtk_action_set_visible (action, FALSE); -+ gtk_action_set_sensitive (action, FALSE); -+ } -+ - action_group = gtk_action_group_new ("individual"); - gtk_action_group_set_translation_domain ( - action_group, GETTEXT_PACKAGE); -diff -up evolution-3.13.6/e-util/e-misc-utils.c.help-contents evolution-3.13.6/e-util/e-misc-utils.c ---- evolution-3.13.6/e-util/e-misc-utils.c.help-contents 2014-07-11 08:47:35.000000000 +0200 -+++ evolution-3.13.6/e-util/e-misc-utils.c 2014-09-22 09:15:05.052468361 +0200 -@@ -2493,6 +2493,23 @@ e_binding_transform_uid_to_source (GBind - return success; - } - -+gboolean -+e_misc_utils_is_help_package_installed (void) -+{ -+ gboolean is_installed; -+ gchar *path; -+ -+ /* Viewing user documentation requires the evolution-help -+ * package. Look for one of the files it installs. */ -+ path = g_build_filename (EVOLUTION_DATADIR, "help", "C", PACKAGE, "index.page", NULL); -+ -+ is_installed = g_file_test (path, G_FILE_TEST_IS_REGULAR); -+ -+ g_free (path); -+ -+ return is_installed; -+} -+ - /** - * e_binding_transform_text_non_null: - * @binding: a #GBinding -diff -up evolution-3.13.6/e-util/e-misc-utils.h.help-contents evolution-3.13.6/e-util/e-misc-utils.h ---- evolution-3.13.6/e-util/e-misc-utils.h.help-contents 2014-07-07 12:45:01.000000000 +0200 -+++ evolution-3.13.6/e-util/e-misc-utils.h 2014-09-22 09:15:05.052468361 +0200 -@@ -229,6 +229,8 @@ gboolean e_binding_transform_uid_to_sour - GValue *target_value, - ESourceRegistry *registry); - -+gboolean e_misc_utils_is_help_package_installed (void); -+ - gboolean e_binding_transform_text_non_null - (GBinding *binding, - const GValue *source_value, -diff -up evolution-3.13.6/e-util/e-preferences-window.c.help-contents evolution-3.13.6/e-util/e-preferences-window.c ---- evolution-3.13.6/e-util/e-preferences-window.c.help-contents 2014-02-12 20:47:07.000000000 +0100 -+++ evolution-3.13.6/e-util/e-preferences-window.c 2014-09-22 09:15:05.053468361 +0200 -@@ -385,6 +385,11 @@ e_preferences_window_init (EPreferencesW - GTK_BUTTON_BOX (container), widget, TRUE); - gtk_widget_show (widget); - -+ if (!e_misc_utils_is_help_package_installed ()) { -+ gtk_widget_set_sensitive (widget, FALSE); -+ gtk_widget_hide (widget); -+ } -+ - widget = e_dialog_button_new_with_icon ("window-close", _("_Close")); - g_signal_connect_swapped ( - widget, "clicked", -diff -up evolution-3.13.6/e-util/e-send-options.c.help-contents evolution-3.13.6/e-util/e-send-options.c ---- evolution-3.13.6/e-util/e-send-options.c.help-contents 2014-03-27 15:05:39.000000000 +0100 -+++ evolution-3.13.6/e-util/e-send-options.c 2014-09-22 09:15:05.053468361 +0200 -@@ -439,6 +439,7 @@ get_widgets (ESendOptionsDialog *sod) - { - ESendOptionsDialogPrivate *priv; - GtkBuilder *builder; -+ GtkWidget *helpbutton; - - priv = sod->priv; - builder = sod->priv->builder; -@@ -478,6 +479,12 @@ get_widgets (ESendOptionsDialog *sod) - priv->accepted_label = e_builder_get_widget (builder, "accepted-label"); - priv->completed_label = e_builder_get_widget (builder, "completed-label"); - -+ helpbutton = e_builder_get_widget (builder, "helpbutton1"); -+ if (helpbutton && !e_misc_utils_is_help_package_installed ()) { -+ gtk_widget_set_sensitive (helpbutton, FALSE); -+ gtk_widget_hide (helpbutton); -+ } -+ - return (priv->priority - && priv->security - && priv->status -diff -up evolution-3.13.6/plugins/email-custom-header/email-custom-header.c.help-contents evolution-3.13.6/plugins/email-custom-header/email-custom-header.c ---- evolution-3.13.6/plugins/email-custom-header/email-custom-header.c.help-contents 2014-06-09 16:39:38.000000000 +0200 -+++ evolution-3.13.6/plugins/email-custom-header/email-custom-header.c 2014-09-22 09:15:05.053468361 +0200 -@@ -118,6 +118,8 @@ static gboolean - epech_get_widgets (CustomHeaderOptionsDialog *mch) - { - CustomHeaderOptionsDialogPrivate *priv; -+ GtkWidget *helpbutton; -+ - priv = mch->priv; - - #define EMAIL_CUSTOM_HEADER(name) e_builder_get_widget (priv->builder, name) -@@ -128,6 +130,13 @@ epech_get_widgets (CustomHeaderOptionsDi - - priv->page = EMAIL_CUSTOM_HEADER ("email-custom-header-vbox"); - priv->header_table = EMAIL_CUSTOM_HEADER ("email-custom-header-options"); -+ -+ helpbutton = EMAIL_CUSTOM_HEADER ("helpbutton1"); -+ if (helpbutton && !e_misc_utils_is_help_package_installed ()) { -+ gtk_widget_set_sensitive (helpbutton, FALSE); -+ gtk_widget_hide (helpbutton); -+ } -+ - #undef EMAIL_CUSTOM_HEADER - - return (priv->page -diff -up evolution-3.13.6/shell/e-shell-window-actions.c.help-contents evolution-3.13.6/shell/e-shell-window-actions.c ---- evolution-3.13.6/shell/e-shell-window-actions.c.help-contents 2014-03-07 14:49:13.000000000 +0100 -+++ evolution-3.13.6/shell/e-shell-window-actions.c 2014-09-22 09:15:05.053468361 +0200 -@@ -1458,6 +1458,11 @@ e_shell_window_actions_init (EShellWindo - if (path == NULL) - gtk_action_set_visible (ACTION (SUBMIT_BUG), FALSE); - g_free (path); -+ -+ if (!e_misc_utils_is_help_package_installed ()) { -+ gtk_action_set_visible (ACTION (CONTENTS), FALSE); -+ gtk_action_set_sensitive (ACTION (CONTENTS), FALSE); -+ } - } - - GtkWidget * diff --git a/evolution-3.12.3-drop-gnome-icon-theme-dep.patch b/evolution-3.12.3-drop-gnome-icon-theme-dep.patch deleted file mode 100644 index f3d5f23..0000000 --- a/evolution-3.12.3-drop-gnome-icon-theme-dep.patch +++ /dev/null @@ -1,23 +0,0 @@ -diff -up evolution-3.12.3/configure.ac.drop-gnome-icon-theme-dep evolution-3.12.3/configure.ac ---- evolution-3.12.3/configure.ac.drop-gnome-icon-theme-dep 2014-06-09 11:33:17.814864320 +0200 -+++ evolution-3.12.3/configure.ac 2014-06-09 11:33:44.925863171 +0200 -@@ -49,7 +49,6 @@ m4_define([gtkhtml_minimum_version], [4. - m4_define([gdk_pixbuf_minimum_version], [2.24.0]) - m4_define([gcr_minimum_version], [3.4]) - m4_define([gnome_desktop_minimum_version], [2.91.3]) --m4_define([gnome_icon_theme_minimum_version], [2.30.2.1]) - m4_define([gsettings_desktop_schemas_minimum_version], [2.91.92]) - m4_define([webkitgtk_minimum_version], [2.0.1]) - m4_define([libgdata_minimum_version], [0.10]) -@@ -486,11 +485,6 @@ fi - AC_CHECK_FUNCS(mkdtemp) - - dnl ************************************************** --dnl Gnome Icon Theme --dnl ************************************************** --PKG_CHECK_MODULES([GIT], [gnome-icon-theme >= gnome_icon_theme_minimum_version]) -- --dnl ************************************************** - dnl Accessibility support - dnl ************************************************** - PKG_CHECK_MODULES([A11Y], [atk]) diff --git a/evolution-3.13.10-composer-backports.patch b/evolution-3.13.10-composer-backports.patch deleted file mode 100644 index 59e0c62..0000000 --- a/evolution-3.13.10-composer-backports.patch +++ /dev/null @@ -1,742 +0,0 @@ -diff --git a/e-util/e-html-editor-selection.c b/e-util/e-html-editor-selection.c -index 254f820..baa5b38 100644 ---- a/e-util/e-html-editor-selection.c -+++ b/e-util/e-html-editor-selection.c -@@ -1347,22 +1347,22 @@ set_block_alignment (WebKitDOMElement *element, - static WebKitDOMNode * - get_parent_block_node_from_child (WebKitDOMNode *node) - { -- WebKitDOMElement *parent = WEBKIT_DOM_ELEMENT ( -- webkit_dom_node_get_parent_node (node)); -+ WebKitDOMNode *parent = webkit_dom_node_get_parent_node (node); - -- if (WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT (parent) || -- element_has_tag (parent, "b") || -- element_has_tag (parent, "i") || -- element_has_tag (parent, "u")) -- parent = WEBKIT_DOM_ELEMENT ( -- webkit_dom_node_get_parent_node (WEBKIT_DOM_NODE (parent))); -+ if (element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-temp-text-wrapper") || -+ element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-quoted") || -+ element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-quote-character") || -+ element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-signature") || -+ WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT (parent) || -+ element_has_tag (WEBKIT_DOM_ELEMENT (parent), "b") || -+ element_has_tag (WEBKIT_DOM_ELEMENT (parent), "i") || -+ element_has_tag (WEBKIT_DOM_ELEMENT (parent), "u")) -+ parent = webkit_dom_node_get_parent_node (parent); - -- if (element_has_class (parent, "-x-evo-temp-text-wrapper") || -- element_has_class (parent, "-x-evo-signature")) -- parent = WEBKIT_DOM_ELEMENT ( -- webkit_dom_node_get_parent_node (WEBKIT_DOM_NODE (parent))); -+ if (element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-quoted")) -+ parent = webkit_dom_node_get_parent_node (parent); - -- return WEBKIT_DOM_NODE (parent); -+ return parent; - } - - /** -@@ -3771,7 +3771,7 @@ e_html_editor_selection_set_monospaced (EHTMLEditorSelection *selection, - range, WEBKIT_DOM_NODE (monospace), NULL); - - e_html_editor_selection_move_caret_into_element ( -- document, monospace); -+ document, monospace, FALSE); - } - } else { - gboolean is_bold, is_italic, is_underline, is_strikethrough; -@@ -4857,7 +4857,8 @@ e_html_editor_selection_replace_image_src (EHTMLEditorSelection *selection, - - void - e_html_editor_selection_move_caret_into_element (WebKitDOMDocument *document, -- WebKitDOMElement *element) -+ WebKitDOMElement *element, -+ gboolean to_start) - { - WebKitDOMDOMWindow *window; - WebKitDOMDOMSelection *window_selection; -@@ -4871,8 +4872,8 @@ e_html_editor_selection_move_caret_into_element (WebKitDOMDocument *document, - new_range = webkit_dom_document_create_range (document); - - webkit_dom_range_select_node_contents ( -- new_range, WEBKIT_DOM_NODE (element), NULL); -- webkit_dom_range_collapse (new_range, FALSE, NULL); -+ new_range, WEBKIT_DOM_NODE (element), NULL); -+ webkit_dom_range_collapse (new_range, to_start, NULL); - webkit_dom_dom_selection_remove_all_ranges (window_selection); - webkit_dom_dom_selection_add_range (window_selection, new_range); - } -@@ -5071,13 +5072,13 @@ e_html_editor_selection_restore_caret_position (EHTMLEditorSelection *selection) - remove_node (WEBKIT_DOM_NODE (element)); - - e_html_editor_selection_move_caret_into_element ( -- document, WEBKIT_DOM_ELEMENT (next_sibling)); -+ document, WEBKIT_DOM_ELEMENT (next_sibling), FALSE); - - goto out; - } - } - -- e_html_editor_selection_move_caret_into_element (document, element); -+ e_html_editor_selection_move_caret_into_element (document, element, FALSE); - - if (fix_after_quoting) { - prev_sibling = webkit_dom_node_get_previous_sibling ( -@@ -6054,6 +6055,8 @@ e_html_editor_selection_save (EHTMLEditorSelection *selection) - parent_node, marker_node, split_node, NULL); - } - -+ webkit_dom_node_normalize (parent_node); -+ - end_marker: - marker = webkit_dom_document_create_element (document, "SPAN", NULL); - webkit_dom_element_set_id (marker, "-x-evo-selection-end-marker"); -@@ -6084,8 +6087,15 @@ e_html_editor_selection_save (EHTMLEditorSelection *selection) - WEBKIT_DOM_NODE (marker), - next_sibling, - NULL); -- return; -+ } else { -+ webkit_dom_node_insert_before ( -+ node, -+ WEBKIT_DOM_NODE (marker), -+ webkit_dom_node_get_next_sibling ( -+ webkit_dom_node_get_parent_node (parent_node)), -+ NULL); - } -+ return; - } - - if (WEBKIT_DOM_IS_TEXT (container)) { -@@ -6138,11 +6148,27 @@ e_html_editor_selection_save (EHTMLEditorSelection *selection) - if (split_node) { - parent_node = webkit_dom_node_get_parent_node (split_node); - -- webkit_dom_node_insert_before ( -- parent_node, marker_node, split_node, NULL); -- } else -- webkit_dom_node_append_child ( -- WEBKIT_DOM_NODE (container), marker_node, NULL); -+ if (WEBKIT_DOM_IS_HTML_BODY_ELEMENT (parent_node)) { -+ webkit_dom_node_append_child ( -+ webkit_dom_node_get_previous_sibling (split_node), -+ marker_node, -+ NULL); -+ } else -+ webkit_dom_node_insert_before ( -+ parent_node, marker_node, split_node, NULL); -+ } else { -+ WebKitDOMNode *first_child; -+ -+ first_child = webkit_dom_node_get_first_child (container); -+ if (offset == 0 && WEBKIT_DOM_IS_TEXT (first_child)) -+ webkit_dom_node_insert_before ( -+ WEBKIT_DOM_NODE (container), marker_node, webkit_dom_node_get_first_child (container), NULL); -+ else -+ webkit_dom_node_append_child ( -+ WEBKIT_DOM_NODE (container), marker_node, NULL); -+ } -+ -+ webkit_dom_node_normalize (parent_node); - - check: - if ((next_sibling = webkit_dom_node_get_next_sibling (marker_node))) { -diff --git a/e-util/e-html-editor-selection.h b/e-util/e-html-editor-selection.h -index 3290dfe..5ae9492 100644 ---- a/e-util/e-html-editor-selection.h -+++ b/e-util/e-html-editor-selection.h -@@ -185,7 +185,8 @@ void e_html_editor_selection_insert_image - const gchar *image_uri); - void e_html_editor_selection_move_caret_into_element - (WebKitDOMDocument *document, -- WebKitDOMElement *element); -+ WebKitDOMElement *element, -+ gboolean to_start); - void e_html_editor_selection_clear_caret_position_marker - (EHTMLEditorSelection *selection); - WebKitDOMNode * -diff --git a/e-util/e-html-editor-view.c b/e-util/e-html-editor-view.c -index cb97da3..aeea625 100644 ---- a/e-util/e-html-editor-view.c -+++ b/e-util/e-html-editor-view.c -@@ -699,12 +699,18 @@ get_parent_block_node_from_child (WebKitDOMNode *node) - WebKitDOMNode *parent = webkit_dom_node_get_parent_node (node); - - if (element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-temp-text-wrapper") || -+ element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-quoted") || -+ element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-quote-character") || -+ element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-signature") || - WEBKIT_DOM_IS_HTML_ANCHOR_ELEMENT (parent) || - element_has_tag (WEBKIT_DOM_ELEMENT (parent), "b") || - element_has_tag (WEBKIT_DOM_ELEMENT (parent), "i") || - element_has_tag (WEBKIT_DOM_ELEMENT (parent), "u")) - parent = webkit_dom_node_get_parent_node (parent); - -+ if (element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-quoted")) -+ parent = webkit_dom_node_get_parent_node (parent); -+ - return parent; - } - -@@ -1044,17 +1050,21 @@ move_elements_to_body (WebKitDOMDocument *document) - list = webkit_dom_document_query_selector_all ( - document, "span.-x-evo-to-body[data-credits]", NULL); - for (ii = webkit_dom_node_list_get_length (list) - 1; ii >= 0; ii--) { -- WebKitDOMNode *child; -+ char *credits; -+ WebKitDOMElement *pre_element; - WebKitDOMNode *node = webkit_dom_node_list_item (list, ii); - -- while ((child = webkit_dom_node_get_first_child (node))) { -- webkit_dom_node_insert_before ( -- WEBKIT_DOM_NODE (body), -- child, -- webkit_dom_node_get_first_child ( -- WEBKIT_DOM_NODE (body)), -- NULL); -- } -+ pre_element = webkit_dom_document_create_element (document, "pre", NULL); -+ credits = webkit_dom_element_get_attribute (WEBKIT_DOM_ELEMENT (node), "data-credits"); -+ webkit_dom_html_element_set_inner_text (WEBKIT_DOM_HTML_ELEMENT (pre_element), credits, NULL); -+ g_free (credits); -+ -+ webkit_dom_node_insert_before ( -+ WEBKIT_DOM_NODE (body), -+ WEBKIT_DOM_NODE (pre_element), -+ webkit_dom_node_get_first_child ( -+ WEBKIT_DOM_NODE (body)), -+ NULL); - - remove_node (node); - } -@@ -2131,6 +2141,57 @@ register_input_event_listener_on_body (EHTMLEditorView *view) - } - - static void -+remove_empty_blocks (WebKitDOMDocument *document) -+{ -+ gint ii, length; -+ WebKitDOMNodeList *list; -+ -+ list = webkit_dom_document_query_selector_all ( -+ document, "blockquote[type=cite] > :empty", NULL); -+ -+ length = webkit_dom_node_list_get_length (list); -+ for (ii = 0; ii < length; ii++) -+ remove_node (webkit_dom_node_list_item (list, ii)); -+ -+ g_object_unref (list); -+} -+ -+/* Following two functions are used when deleting the selection inside -+ * the quoted content. The thing is that normally the quote marks are not -+ * selectable by user. But this caused a lof of problems for WebKit when removing -+ * the selection. This will avoid it as when the delete or backspace key is pressed -+ * we will make the quote marks user selectable so they will act as any other text. -+ * On HTML keyup event callback we will make them again non-selectable. */ -+static void -+disable_quote_marks_select (WebKitDOMDocument *document) -+{ -+ WebKitDOMHTMLHeadElement *head; -+ WebKitDOMElement *style_element; -+ -+ head = webkit_dom_document_get_head (document); -+ -+ if (!webkit_dom_document_get_element_by_id (document, "-x-evo-quote-style")) { -+ style_element = webkit_dom_document_create_element (document, "style", NULL); -+ webkit_dom_element_set_id (style_element, "-x-evo-quote-style"); -+ webkit_dom_html_element_set_inner_html ( -+ WEBKIT_DOM_HTML_ELEMENT (style_element), -+ ".-x-evo-quoted { -webkit-user-select: none; }", -+ NULL); -+ webkit_dom_node_append_child ( -+ WEBKIT_DOM_NODE (head), WEBKIT_DOM_NODE (style_element), NULL); -+ } -+} -+ -+static void -+enable_quote_marks_select (WebKitDOMDocument *document) -+{ -+ WebKitDOMElement *style_element; -+ -+ if ((style_element = webkit_dom_document_get_element_by_id (document, "-x-evo-quote-style"))) -+ remove_node (WEBKIT_DOM_NODE (style_element)); -+} -+ -+static void - body_keyup_event_cb (WebKitDOMElement *element, - WebKitDOMUIEvent *event, - EHTMLEditorView *view) -@@ -2150,99 +2211,100 @@ body_keyup_event_cb (WebKitDOMElement *element, - * BackSpace or Delete. */ - gint level; - WebKitDOMElement *selection_start_marker, *selection_end_marker; -- WebKitDOMElement *br_element; -+ WebKitDOMElement *tmp_element; - WebKitDOMDocument *document; -- WebKitDOMNode *node, *parent; -+ WebKitDOMNode *parent; -+ -+ if (e_html_editor_view_get_html_mode (view)) -+ return; - - document = webkit_dom_node_get_owner_document (WEBKIT_DOM_NODE (element)); - -+ disable_quote_marks_select (document); -+ /* Remove empty blocks if presented. */ -+ remove_empty_blocks (document); -+ - e_html_editor_selection_save (selection); - selection_start_marker = webkit_dom_document_get_element_by_id ( - document, "-x-evo-selection-start-marker"); - selection_end_marker = webkit_dom_document_get_element_by_id ( - document, "-x-evo-selection-end-marker"); - -- level = get_citation_level ( -- WEBKIT_DOM_NODE (selection_start_marker), FALSE); -- if (level == 0) -- goto restore; -- -- node = webkit_dom_node_get_previous_sibling ( -- WEBKIT_DOM_NODE (selection_start_marker)); -- -- if (WEBKIT_DOM_IS_HTMLBR_ELEMENT (node)) -- node = webkit_dom_node_get_previous_sibling (node); -- -- if (node) -- goto restore; -- -- parent = get_parent_block_node_from_child ( -- WEBKIT_DOM_NODE (selection_start_marker)); -- -- node = webkit_dom_node_get_previous_sibling (parent); -- if (!node) { -- /* Situation where the start of the selection was in the -- * multiple quoted content and that start on the beginning -- * of the citation. -- * -- * > -- * >> | -- * >> xx|x -- * */ -- node = webkit_dom_node_get_parent_node (parent); -- if (!WEBKIT_DOM_IS_HTML_QUOTE_ELEMENT (node)) -- goto restore; -- node = webkit_dom_node_get_previous_sibling (node); -- if (!node) -- goto restore; -- if (!WEBKIT_DOM_IS_HTML_QUOTE_ELEMENT (webkit_dom_node_get_parent_node (node))) -- goto restore; -+ /* If we deleted a selection the caret will be inside the quote marks, fix it. */ -+ parent = webkit_dom_node_get_parent_node (WEBKIT_DOM_NODE (selection_start_marker)); -+ if (element_has_class (WEBKIT_DOM_ELEMENT (parent), "-x-evo-quote-character")) { -+ webkit_dom_node_insert_before ( -+ webkit_dom_node_get_parent_node ( -+ webkit_dom_node_get_parent_node (parent)), -+ WEBKIT_DOM_NODE (selection_end_marker), -+ webkit_dom_node_get_next_sibling ( -+ webkit_dom_node_get_parent_node (parent)), -+ NULL); -+ webkit_dom_node_insert_before ( -+ webkit_dom_node_get_parent_node ( -+ webkit_dom_node_get_parent_node (parent)), -+ WEBKIT_DOM_NODE (selection_start_marker), -+ webkit_dom_node_get_next_sibling ( -+ webkit_dom_node_get_parent_node (parent)), -+ NULL); - } - -- br_element = webkit_dom_element_query_selector ( -- WEBKIT_DOM_ELEMENT (node), "span.-x-evo-quote-character > br", NULL); -- if (br_element) { -- WebKitDOMNode *tmp; -- -- if (WEBKIT_DOM_IS_HTML_QUOTE_ELEMENT (node)) { -- /* We have to select the right block when the selection -- * started on the end of the citation that is -- * inside another citation. -- * -- * >>| -- * > xx|x -- */ -- /* */ -- node = webkit_dom_node_get_parent_node ( -- WEBKIT_DOM_NODE (br_element)); -- /* */ -- node = webkit_dom_node_get_parent_node (node); -- /* right block */ -- node = webkit_dom_node_get_parent_node (node); -- } -+ /* Under some circumstances we will end with block inside the citation -+ * that has the quote marks removed and we have to reinsert them back. */ -+ level = get_citation_level (WEBKIT_DOM_NODE (selection_start_marker), FALSE); -+ if (level > 0) { -+ WebKitDOMNode *prev_sibling; - -- webkit_dom_node_append_child ( -- node, WEBKIT_DOM_NODE (selection_start_marker), NULL); -+ prev_sibling = webkit_dom_node_get_previous_sibling ( -+ WEBKIT_DOM_NODE (selection_start_marker)); -+ if (!prev_sibling || -+ (WEBKIT_DOM_IS_HTMLBR_ELEMENT (prev_sibling) && -+ !webkit_dom_node_get_previous_sibling (prev_sibling))) { -+ WebKitDOMElement *block; -+ -+ block = WEBKIT_DOM_ELEMENT (get_parent_block_node_from_child ( -+ WEBKIT_DOM_NODE (selection_start_marker))); -+ if (element_has_class (block, "-x-evo-paragraph")) { -+ gint length, word_wrap_length; -+ -+ word_wrap_length = e_html_editor_selection_get_word_wrap_length (selection); -+ length = word_wrap_length - 2 * (level - 1); -+ block = e_html_editor_selection_wrap_paragraph_length ( -+ selection, block, length); -+ webkit_dom_node_normalize (WEBKIT_DOM_NODE (block)); -+ } -+ quote_plain_text_element_after_wrapping ( -+ document, block, level); -+ } -+ } - -- while ((tmp = webkit_dom_node_get_next_sibling (WEBKIT_DOM_NODE (selection_end_marker)))) -- webkit_dom_node_append_child (node, tmp, NULL); -+ /* Situation where the start of the selection was in the beginning -+ * of the block in quoted content and the end in the beginning of -+ * content that is after the citation or the selection end was in -+ * the end of the quoted content (showed by ^). The correct structure -+ * in these cases is to have empty block after the citation. -+ * -+ * > |xxx -+ * > xxx^ -+ * |xxx -+ * */ -+ tmp_element = webkit_dom_document_get_element_by_id (document, "-x-evo-tmp-block"); -+ if (tmp_element) { -+ remove_wrapping_from_element (tmp_element); -+ remove_quoting_from_element (tmp_element); -+ webkit_dom_element_remove_attribute (tmp_element, "id"); -+ -+ parent = webkit_dom_node_get_parent_node (WEBKIT_DOM_NODE (tmp_element)); -+ while (parent && !WEBKIT_DOM_IS_HTML_BODY_ELEMENT (webkit_dom_node_get_parent_node (parent))) -+ parent = webkit_dom_node_get_parent_node (parent); - - webkit_dom_node_insert_before ( -- node, -- WEBKIT_DOM_NODE (selection_end_marker), -- webkit_dom_node_get_next_sibling ( -- WEBKIT_DOM_NODE (selection_start_marker)), -+ webkit_dom_node_get_parent_node (parent), -+ WEBKIT_DOM_NODE (tmp_element), -+ webkit_dom_node_get_next_sibling (parent), - NULL); -- -- if (!WEBKIT_DOM_IS_HTMLBR_ELEMENT (webkit_dom_node_get_last_child (node))) -- webkit_dom_node_append_child ( -- node, WEBKIT_DOM_NODE (br_element), NULL); -- else -- remove_node (WEBKIT_DOM_NODE (br_element)); -- -- remove_node (parent); - } -- restore: -+ - e_html_editor_selection_restore (selection); - } else if (key_code == HTML_KEY_CODE_CONTROL) - html_editor_view_set_links_active (view, FALSE); -@@ -2825,6 +2887,127 @@ change_quoted_block_to_normal (EHTMLEditorView *view) - } - - static gboolean -+fix_structure_after_delete_before_quoted_content (EHTMLEditorView *view) -+{ -+ EHTMLEditorSelection *selection; -+ gboolean collapsed = FALSE; -+ WebKitDOMDocument *document; -+ WebKitDOMElement *selection_start_marker, *selection_end_marker; -+ WebKitDOMNode *block, *node; -+ -+ selection = e_html_editor_view_get_selection (view); -+ -+ collapsed = e_html_editor_selection_is_collapsed (selection); -+ -+ e_html_editor_selection_save (selection); -+ -+ document = webkit_web_view_get_dom_document (WEBKIT_WEB_VIEW (view)); -+ selection_start_marker = webkit_dom_document_query_selector ( -+ document, "span#-x-evo-selection-start-marker", NULL); -+ selection_end_marker = webkit_dom_document_query_selector ( -+ document, "span#-x-evo-selection-end-marker", NULL); -+ -+ if (!selection_start_marker || !selection_end_marker) -+ return FALSE; -+ -+ if (collapsed) { -+ WebKitDOMNode *next_sibling; -+ -+ block = get_parent_block_node_from_child ( -+ WEBKIT_DOM_NODE (selection_start_marker)); -+ -+ next_sibling = webkit_dom_node_get_next_sibling (block); -+ -+ /* Next block is quoted content */ -+ if (!WEBKIT_DOM_IS_HTML_QUOTE_ELEMENT (next_sibling)) -+ goto restore; -+ -+ /* Delete was pressed in block without any content */ -+ if (webkit_dom_node_get_previous_sibling (WEBKIT_DOM_NODE (selection_start_marker))) -+ goto restore; -+ -+ /* If there is just BR element go ahead */ -+ node = webkit_dom_node_get_next_sibling (WEBKIT_DOM_NODE (selection_end_marker)); -+ if (node && !WEBKIT_DOM_IS_HTMLBR_ELEMENT (node)) -+ goto restore; -+ else { -+ /* Remove the empty block and move caret into the beginning of the citation */ -+ remove_node (block); -+ -+ e_html_editor_selection_move_caret_into_element ( -+ document, WEBKIT_DOM_ELEMENT (next_sibling), TRUE); -+ -+ return TRUE; -+ } -+ } else { -+ WebKitDOMNode *end_block; -+ -+ /* Let the quote marks be selectable to nearly correctly remove the -+ * selection. Corrections after are done in body_keyup_event_cb. */ -+ enable_quote_marks_select (document); -+ -+ node = webkit_dom_node_get_previous_sibling ( -+ WEBKIT_DOM_NODE (selection_start_marker)); -+ -+ if (!node || !WEBKIT_DOM_IS_ELEMENT (node)) -+ goto restore; -+ -+ if (!element_has_class (WEBKIT_DOM_ELEMENT (node), "-x-evo-quoted")) -+ goto restore; -+ -+ webkit_dom_node_insert_before ( -+ webkit_dom_node_get_parent_node (WEBKIT_DOM_NODE (node)), -+ WEBKIT_DOM_NODE (selection_start_marker), -+ WEBKIT_DOM_NODE (node), -+ NULL); -+ -+ 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)); -+ -+ /* Situation where the start of the selection is in the beginning -+ * of the block in quoted content and the end in the beginning of -+ * content that is after the citation or the selection end is in -+ * the end of the quoted content (showed by ^). We have to -+ * mark the start block to correctly restore the structure -+ * afterwards. -+ * -+ * > |xxx -+ * > xxx^ -+ * |xxx -+ * */ -+ if (get_citation_level (end_block, FALSE) > 0) { -+ WebKitDOMNode *parent; -+ -+ if (webkit_dom_node_get_next_sibling (end_block)) -+ goto restore; -+ -+ parent = webkit_dom_node_get_parent_node (end_block); -+ while (parent && WEBKIT_DOM_IS_HTML_QUOTE_ELEMENT (parent)) { -+ WebKitDOMNode *next_parent = webkit_dom_node_get_parent_node (parent); -+ -+ if (webkit_dom_node_get_next_sibling (parent) && -+ !WEBKIT_DOM_IS_HTML_BODY_ELEMENT (next_parent)) -+ goto restore; -+ -+ parent = next_parent; -+ } -+ } -+ node = webkit_dom_node_get_next_sibling ( -+ WEBKIT_DOM_NODE (selection_end_marker)); -+ if (!node || WEBKIT_DOM_IS_HTMLBR_ELEMENT (node)) { -+ webkit_dom_element_set_id ( -+ WEBKIT_DOM_ELEMENT (block), "-x-evo-tmp-block"); -+ } -+ } -+ restore: -+ e_html_editor_selection_restore (selection); -+ -+ return FALSE; -+} -+ -+static gboolean - html_editor_view_key_press_event (GtkWidget *widget, - GdkEventKey *event) - { -@@ -2916,6 +3099,10 @@ html_editor_view_key_press_event (GtkWidget *widget, - return TRUE; - } - -+ if (event->keyval == GDK_KEY_Delete || event->keyval == GDK_KEY_BackSpace) -+ if (fix_structure_after_delete_before_quoted_content (view)) -+ return TRUE; -+ - /* Chain up to parent's key_press_event() method. */ - return GTK_WIDGET_CLASS (e_html_editor_view_parent_class)-> - key_press_event (widget, event); -@@ -4570,6 +4757,9 @@ clear_attributes (WebKitDOMDocument *document) - while (webkit_dom_node_get_first_child (WEBKIT_DOM_NODE (head))) - remove_node (webkit_dom_node_get_first_child (WEBKIT_DOM_NODE (head))); - -+ /* Make the quote marks non-selectable. */ -+ disable_quote_marks_select (document); -+ - /* Remove non Evolution attributes from BODY element */ - attributes = webkit_dom_element_get_attributes (WEBKIT_DOM_ELEMENT (body)); - length = webkit_dom_named_node_map_get_length (attributes); -@@ -4718,16 +4908,20 @@ html_editor_convert_view_content (EHTMLEditorView *view, - document, "span.-x-evo-to-body[data-credits]", NULL); - length = webkit_dom_node_list_get_length (list); - for (ii = 0; ii < length; ii++) { -- WebKitDOMNode *node, *child; -+ char *credits; -+ WebKitDOMElement *pre_element; -+ WebKitDOMNode *node = webkit_dom_node_list_item (list, ii); - -- node = webkit_dom_node_list_item (list, ii); -- while ((child = webkit_dom_node_get_first_child (node))) { -- webkit_dom_node_insert_before ( -- WEBKIT_DOM_NODE (wrapper), -- child, -- WEBKIT_DOM_NODE (content_wrapper), -- NULL); -- } -+ pre_element = webkit_dom_document_create_element (document, "pre", NULL); -+ credits = webkit_dom_element_get_attribute (WEBKIT_DOM_ELEMENT (node), "data-credits"); -+ webkit_dom_html_element_set_inner_text (WEBKIT_DOM_HTML_ELEMENT (pre_element), credits, NULL); -+ g_free (credits); -+ -+ webkit_dom_node_insert_before ( -+ WEBKIT_DOM_NODE (wrapper), -+ WEBKIT_DOM_NODE (pre_element), -+ WEBKIT_DOM_NODE (content_wrapper), -+ NULL); - - remove_node (node); - } -@@ -4927,6 +5121,8 @@ html_editor_view_insert_converted_html_into_selection (EHTMLEditorView *view, - document, "-x-evo-selection-end-marker"); - current_block = get_parent_block_node_from_child ( - WEBKIT_DOM_NODE (selection_start_marker)); -+ if (WEBKIT_DOM_IS_HTML_BODY_ELEMENT (current_block)) -+ current_block = NULL; - - element = webkit_dom_document_create_element (document, "div", NULL); - if (is_html) { -@@ -6230,9 +6426,6 @@ process_elements (EHTMLEditorView *view, - remove_base_attributes (WEBKIT_DOM_ELEMENT (child)); - remove_evolution_attributes (WEBKIT_DOM_ELEMENT (child)); - } -- if (!changing_mode && to_plain_text) -- if (!webkit_dom_node_has_child_nodes (child)) -- g_string_append (buffer, "\n"); - } - - /* Signature */ -@@ -6261,7 +6454,6 @@ process_elements (EHTMLEditorView *view, - WEBKIT_DOM_HTML_ELEMENT (child)); - g_string_append (buffer, content); - g_free (content); -- skip_node = TRUE; - } - skip_node = TRUE; - goto next; -@@ -7043,6 +7235,9 @@ html_editor_view_load_status_changed (EHTMLEditorView *view) - webkit_dom_element_set_attribute ( - WEBKIT_DOM_ELEMENT (body), "data-message", "", NULL); - -+ /* Make the quote marks non-selectable. */ -+ disable_quote_marks_select (document); -+ - if (view->priv->convert_in_situ) { - html_editor_convert_view_content (view, NULL); - view->priv->convert_in_situ = FALSE; -@@ -7057,7 +7252,7 @@ html_editor_view_load_status_changed (EHTMLEditorView *view) - if (webkit_dom_element_get_attribute (WEBKIT_DOM_ELEMENT (body), "data-evo-draft")) { - /* Restore the selection how it was when the draft was saved */ - e_html_editor_selection_move_caret_into_element ( -- document, WEBKIT_DOM_ELEMENT (body)); -+ document, WEBKIT_DOM_ELEMENT (body), FALSE); - e_html_editor_selection_restore ( - e_html_editor_view_get_selection (view)); - } -@@ -7812,7 +8007,8 @@ e_html_editor_view_update_fonts (EHTMLEditorView *view) - " font-family: '%s';\n" - " font-size: %dpt;\n" - " font-weight: %d;\n" -- " font-style: %s;\n", -+ " font-style: %s;\n" -+ " -webkit-line-break: after-white-space;\n", - pango_font_description_get_family (vw), - pango_font_description_get_size (vw) / PANGO_SCALE, - pango_font_description_get_weight (vw), -@@ -8007,13 +8203,6 @@ e_html_editor_view_update_fonts (EHTMLEditorView *view) - - g_string_append (stylesheet, "}\n"); - -- g_string_append ( -- stylesheet, -- ".-x-evo-quoted " -- "{\n" -- " -webkit-user-select: none;\n" -- "}\n"); -- - g_string_append_printf ( - stylesheet, - ".-x-evo-quote-character " -diff --git a/em-format/e-mail-formatter-quote.c b/em-format/e-mail-formatter-quote.c -index 4df8be6..1916bba 100644 ---- a/em-format/e-mail-formatter-quote.c -+++ b/em-format/e-mail-formatter-quote.c -@@ -122,7 +122,7 @@ mail_formatter_quote_run (EMailFormatter *formatter, - * the special span element and it will be moved to body in EHTMLEditorView */ - if (qf->priv->credits && *qf->priv->credits) { - gchar *credits = g_strdup_printf ( -- "
%s
", -+ "", - qf->priv->credits); - g_output_stream_write_all ( - stream, credits, strlen (credits), NULL, cancellable, NULL); -@@ -133,7 +133,7 @@ mail_formatter_quote_run (EMailFormatter *formatter, - * after the message and cite it in EHTMLEditorView because of reasons - * mentioned above */ - if (qf->priv->flags & E_MAIL_FORMATTER_QUOTE_FLAG_CITE) { -- string = ""; -+ string = ""; - g_output_stream_write_all ( - stream, string, strlen (string), NULL, cancellable, NULL); - } -diff --git a/mail/em-composer-utils.c b/mail/em-composer-utils.c -index 795ac9e..fcba621 100644 ---- a/mail/em-composer-utils.c -+++ b/mail/em-composer-utils.c -@@ -2871,8 +2871,7 @@ composer_set_body (EMsgComposer *composer, - original = quoting_text (QUOTING_ORIGINAL); - text = em_utils_message_to_html ( - session, message, original, E_MAIL_FORMATTER_QUOTE_FLAG_HEADERS, -- parts_list, "", -- "", &validity_found); -+ parts_list, NULL, NULL, &validity_found); - e_msg_composer_set_body_text (composer, text, TRUE); - g_free (text); - g_free (original); -@@ -2885,8 +2884,7 @@ composer_set_body (EMsgComposer *composer, - credits = attribution_format (message); - text = em_utils_message_to_html ( - session, message, credits, E_MAIL_FORMATTER_QUOTE_FLAG_CITE, -- parts_list, "", -- "", &validity_found); -+ parts_list, NULL, NULL, &validity_found); - g_free (credits); - e_msg_composer_set_body_text (composer, text, TRUE); - g_free (text); diff --git a/evolution-3.16.5-crash-message-digest.patch b/evolution-3.16.5-crash-message-digest.patch new file mode 100644 index 0000000..0262762 --- /dev/null +++ b/evolution-3.16.5-crash-message-digest.patch @@ -0,0 +1,182 @@ +diff -up evolution-3.16.5/em-format/e-mail-formatter-attachment.c.crash-message-digest evolution-3.16.5/em-format/e-mail-formatter-attachment.c +--- evolution-3.16.5/em-format/e-mail-formatter-attachment.c.crash-message-digest 2015-05-29 12:40:05.000000000 +0200 ++++ evolution-3.16.5/em-format/e-mail-formatter-attachment.c 2015-08-19 17:22:36.616380858 +0200 +@@ -320,7 +320,7 @@ emfe_attachment_format (EMailFormatterEx + } + + if (success) { +- gchar *wrapper_element_id, *inner_html_data; ++ gchar *wrapper_element_id; + gconstpointer data; + gsize size; + +@@ -332,20 +332,33 @@ emfe_attachment_format (EMailFormatterEx + size = g_memory_output_stream_get_data_size ( + G_MEMORY_OUTPUT_STREAM (content_stream)); + +- inner_html_data = g_markup_escape_text (data, size); +- + g_string_append_printf ( + buffer, + "" +- "
", +- wrapper_element_id, inner_html_data); ++ "
"); ++ g_string_append_len (buffer, data, size); ++ } else { ++ gchar *inner_html_data; ++ ++ inner_html_data = g_markup_escape_text (data, size); ++ ++ g_string_append_printf ( ++ buffer, ++ " inner-html-data=\"%s\">", ++ inner_html_data); ++ ++ g_free (inner_html_data); ++ } + + g_string_append (buffer, "
"); + +- e_mail_part_attachment_set_expandable (E_MAIL_PART_ATTACHMENT (part), TRUE); ++ e_mail_part_attachment_set_expandable (empa, TRUE); + + g_free (wrapper_element_id); +- g_free (inner_html_data); + } + + g_object_unref (content_stream); +diff -up evolution-3.16.5/em-format/e-mail-part.c.crash-message-digest evolution-3.16.5/em-format/e-mail-part.c +--- evolution-3.16.5/em-format/e-mail-part.c.crash-message-digest 2014-03-24 10:25:23.000000000 +0100 ++++ evolution-3.16.5/em-format/e-mail-part.c 2015-08-19 17:22:36.616380858 +0200 +@@ -26,10 +26,15 @@ + * message. + */ + ++#ifdef HAVE_CONFIG_H ++#include ++#endif ++ + #include "e-mail-part.h" + + #include + ++#include "e-mail-part-attachment.h" + #include "e-mail-part-list.h" + + #define E_MAIL_PART_GET_PRIVATE(obj) \ +@@ -441,6 +446,46 @@ e_mail_part_set_mime_type (EMailPart *pa + g_object_notify (G_OBJECT (part), "mime-type"); + } + ++gboolean ++e_mail_part_should_show_inline (EMailPart *part) ++{ ++ CamelMimePart *mime_part; ++ const CamelContentDisposition *disposition; ++ gboolean res = FALSE; ++ ++ g_return_val_if_fail (E_IS_MAIL_PART (part), FALSE); ++ ++ /* Automatically expand attachments that have inline ++ * disposition or the EMailParts have specific ++ * force_inline flag set. */ ++ ++ if (part->force_collapse) ++ return FALSE; ++ ++ if (part->force_inline) ++ return TRUE; ++ ++ if (E_IS_MAIL_PART_ATTACHMENT (part)) { ++ EMailPartAttachment *empa = E_MAIL_PART_ATTACHMENT (part); ++ ++ if (g_strcmp0 (empa->snoop_mime_type, "message/rfc822") == 0) ++ return TRUE; ++ } ++ ++ mime_part = e_mail_part_ref_mime_part (part); ++ if (!mime_part) ++ return FALSE; ++ ++ disposition = camel_mime_part_get_content_disposition (mime_part); ++ if (disposition && disposition->disposition && ++ g_ascii_strncasecmp (disposition->disposition, "inline", 6) == 0) ++ res = TRUE; ++ ++ g_object_unref (mime_part); ++ ++ return res; ++} ++ + EMailPartList * + e_mail_part_ref_part_list (EMailPart *part) + { +diff -up evolution-3.16.5/em-format/e-mail-part.h.crash-message-digest evolution-3.16.5/em-format/e-mail-part.h +--- evolution-3.16.5/em-format/e-mail-part.h.crash-message-digest 2014-03-24 10:25:23.000000000 +0100 ++++ evolution-3.16.5/em-format/e-mail-part.h 2015-08-19 17:22:36.616380858 +0200 +@@ -107,6 +107,7 @@ CamelMimePart * e_mail_part_ref_mime_par + const gchar * e_mail_part_get_mime_type (EMailPart *part); + void e_mail_part_set_mime_type (EMailPart *part, + const gchar *mime_type); ++gboolean e_mail_part_should_show_inline (EMailPart *part); + struct _EMailPartList * + e_mail_part_ref_part_list (EMailPart *part); + void e_mail_part_set_part_list (EMailPart *part, +diff -up evolution-3.16.5/mail/e-mail-display.c.crash-message-digest evolution-3.16.5/mail/e-mail-display.c +--- evolution-3.16.5/mail/e-mail-display.c.crash-message-digest 2015-05-29 12:40:05.000000000 +0200 ++++ evolution-3.16.5/mail/e-mail-display.c 2015-08-19 17:23:52.369377648 +0200 +@@ -471,6 +471,8 @@ attachment_button_expanded (GObject *obj + + html_element = WEBKIT_DOM_HTML_ELEMENT (element); + webkit_dom_html_element_set_inner_html (html_element, inner_html_data, NULL); ++ ++ webkit_dom_element_remove_attribute (element, "inner-html-data"); + } + + g_free (inner_html_data); +@@ -668,9 +670,6 @@ mail_display_plugin_widget_requested (We + e_mail_part_attachment_get_expandable (empa)); + + if (e_mail_part_attachment_get_expandable (empa)) { +- CamelMimePart *mime_part; +- const CamelContentDisposition *disposition; +- + /* Show/hide the attachment when the EAttachmentButton + * is expanded/collapsed or shown/hidden. */ + g_signal_connect ( +@@ -682,20 +681,7 @@ mail_display_plugin_widget_requested (We + G_CALLBACK (attachment_button_expanded), + display); + +- mime_part = e_mail_part_ref_mime_part (part); +- +- /* Automatically expand attachments that have inline +- * disposition or the EMailParts have specific +- * force_inline flag set. */ +- disposition = +- camel_mime_part_get_content_disposition (mime_part); +- if (!part->force_collapse && +- (part->force_inline || +- (g_strcmp0 (empa->snoop_mime_type, "message/rfc822") == 0) || +- (disposition && disposition->disposition && +- g_ascii_strncasecmp ( +- disposition->disposition, "inline", 6) == 0))) { +- ++ if (e_mail_part_should_show_inline (part)) { + e_attachment_button_set_expanded ( + E_ATTACHMENT_BUTTON (widget), TRUE); + } else { +@@ -704,8 +690,6 @@ mail_display_plugin_widget_requested (We + attachment_button_expanded ( + G_OBJECT (widget), NULL, display); + } +- +- g_object_unref (mime_part); + } + } + diff --git a/evolution.spec b/evolution.spec index b4fdefc..b55cc96 100644 --- a/evolution.spec +++ b/evolution.spec @@ -1,17 +1,16 @@ %global _changelog_trimtime %(date +%s -d "1 year ago") -%define glib2_version 2.36.0 -%define gtk3_version 3.4.0 -%define gtkhtml_version 4.5.2 +%define glib2_version 2.40.0 +%define gtk3_version 3.10.0 %define gnome_desktop_version 2.91.3 %define gnome_doc_utils_version 0.8.0 %define intltool_version 0.35.5 %define libgdata_version 0.10.0 %define libgweather_version 3.5.0 %define libsoup_version 2.40.3 -%define webkit_version 1.8.0 +%define webkit_version 2.2.0 -%define evo_base_version 3.14 +%define evo_base_version 3.16 %define last_anjal_version 0.3.2-3 %define last_libgal2_version 2:2.5.3-2 @@ -29,14 +28,14 @@ ### Abstract ### Name: evolution -Version: 3.13.10 -Release: 2%{?dist} +Version: 3.16.5 +Release: 3%{?dist} Group: Applications/Productivity Summary: Mail and calendar client for GNOME License: GPLv2+ and GFDL URL: https://wiki.gnome.org/Apps/Evolution BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) -Source: http://download.gnome.org/sources/%{name}/3.13/%{name}-%{version}.tar.xz +Source: http://download.gnome.org/sources/%{name}/3.16/%{name}-%{version}.tar.xz Obsoletes: anjal <= %{last_anjal_version} Obsoletes: libgal2 <= %{last_libgal2_version} @@ -44,14 +43,8 @@ Obsoletes: evolution-NetworkManager < %{last_evo_nm_version} ### Patches ### -# bad hack -Patch01: evolution-1.4.4-ldap-x86_64-hack.patch - -# RH bug #589555 -Patch02: evolution-2.30.1-help-contents.patch - -# Backport WebKit composer fixes to test them in the wild -Patch03: evolution-3.13.10-composer-backports.patch +# RH bug #1231591 +Patch01: evolution-3.16.5-crash-message-digest.patch ## Dependencies ### @@ -87,16 +80,15 @@ BuildRequires: pkgconfig(gmodule-2.0) >= %{glib2_version} BuildRequires: pkgconfig(gnome-desktop-3.0) >= %{gnome_desktop_version} BuildRequires: pkgconfig(gsettings-desktop-schemas) BuildRequires: pkgconfig(gtk+-3.0) >= %{gtk3_version} -BuildRequires: pkgconfig(gtkhtml-editor-4.0) >= %{gtkhtml_version} BuildRequires: pkgconfig(gtkspell3-3.0) BuildRequires: pkgconfig(gweather-3.0) >= %{libgweather_version} +BuildRequires: pkgconfig(iso-codes) BuildRequires: pkgconfig(libcanberra-gtk3) BuildRequires: pkgconfig(libebackend-1.2) >= %{version} BuildRequires: pkgconfig(libebook-1.2) >= %{version} BuildRequires: pkgconfig(libecal-1.2) >= %{version} BuildRequires: pkgconfig(libedataserver-1.2) >= %{version} BuildRequires: pkgconfig(libgdata) >= %{libgdata_version} -BuildRequires: pkgconfig(libgtkhtml-4.0) >= %{gtkhtml_version} BuildRequires: pkgconfig(libsoup-2.4) >= %{libsoup_version} BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(nspr) @@ -129,7 +121,6 @@ Requires: %{name} = %{version}-%{release} Requires: pkgconfig(camel-1.2) >= %{version} Requires: pkgconfig(cryptui-0.0) Requires: pkgconfig(gtk+-3.0) >= %{gtk3_version} -Requires: pkgconfig(gtkhtml-editor-4.0) >= %{gtkhtml_version} Requires: pkgconfig(gtkspell3-3.0) Requires: pkgconfig(gweather-3.0) >= %{libgweather_version} Requires: pkgconfig(libebackend-1.2) >= %{version} @@ -137,7 +128,6 @@ Requires: pkgconfig(libebook-1.2) >= %{version} Requires: pkgconfig(libecal-1.2) >= %{version} Requires: pkgconfig(libedataserver-1.2) >= %{version} Requires: pkgconfig(libgdata) >= %{libgdata_version} -Requires: pkgconfig(libgtkhtml-4.0) >= %{gtkhtml_version} Requires: pkgconfig(libsoup-2.4) >= %{libsoup_version} Requires: pkgconfig(libxml-2.0) Obsoletes: libgal2-devel <= %{last_libgal2_version} @@ -217,9 +207,7 @@ the functionality of the installed %{name} package. %prep %setup -q -n evolution-%{version} -%patch01 -p1 -b .ldaphack -%patch02 -p1 -b .help-contents -%patch03 -p1 -b .composer_backports +%patch01 -p1 -b .crash-message-digest # Remove the welcome email from Novell for inbox in mail/default/*/Inbox; do @@ -242,13 +230,12 @@ if ! pkg-config --exists nss; then fi %if %{with_docs} -%define gtkdoc_flags --enable-gtk-doc +%define gtkdoc_flags --enable-gtk-doc --with-help %else -%define gtkdoc_flags --disable-gtk-doc +%define gtkdoc_flags --disable-gtk-doc --without-help %endif -CPPFLAGS="-I%{_includedir}/et"; export CPPFLAGS -CFLAGS="$RPM_OPT_FLAGS -fPIC -DLDAP_DEPRECATED -I%{_includedir}/et -Wno-sign-compare -Wno-deprecated-declarations"; export CFLAGS +CFLAGS="$RPM_OPT_FLAGS -fPIC -DLDAP_DEPRECATED -Wno-sign-compare -Wno-deprecated-declarations"; export CFLAGS # Regenerate configure to pick up configure.ac changes aclocal -I m4 @@ -318,7 +305,9 @@ find $RPM_BUILD_ROOT/%{_libdir}/evolution -name '*.a' -exec rm {} \; %find_lang evolution-%{evo_base_version} --all-name --with-gnome grep "/usr/share/locale" evolution-%{evo_base_version}.lang > translations.lang +%if %{with_docs} grep -v "/usr/share/locale" evolution-%{evo_base_version}.lang > help.lang +%endif %post /sbin/ldconfig @@ -383,6 +372,7 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/icons/hicolor/32x32/apps/* %{_datadir}/icons/hicolor/48x48/apps/* %{_datadir}/icons/hicolor/256x256/apps/* +%{_datadir}/icons/hicolor/symbolic/apps/* # The main data directory # (have not attempted to split this up into an explicit list) @@ -547,6 +537,53 @@ rm -rf $RPM_BUILD_ROOT %{_datadir}/installed-tests %changelog +* Tue Sep 08 2015 Milan Crha - 3.16.5-3 +- Add pkgconfig(iso-codes) into BuildRequires + +* Wed Aug 19 2015 Milan Crha - 3.16.5-2 +- Add patch for RH bug #1231591 (Crash when viewing message digest) + +* Mon Aug 10 2015 Milan Crha - 3.16.5-1 +- Update to 3.16.5 +- Remove patch for RH bug #1243680 (Fixed upstream) + +* Thu Jul 16 2015 Milan Crha - 3.16.4-2 +- Add patch for RH bug #1243680 (Replacement of misspelled word doesn't work in composer) + +* Mon Jul 13 2015 Milan Crha - 3.16.4-1 +- Update to 3.16.4 +- Remove patch for RH bug #1229230 (Fixed upstream) + +* Mon Jun 08 2015 Milan Crha - 3.16.3-2 +- Add patch for RH bug #1229230 (Broken save of filter rules) + +* Mon Jun 08 2015 Milan Crha - 3.16.3-1 +- Update to 3.16.3 +- Disable help build when gtk-doc is disabled + +* Thu May 28 2015 Debarshi Ray - 3.16.2.1-2 +- Rebuild for libgdata soname bump + +* Mon May 11 2015 Milan Crha - 3.16.2.1-1 +- Update to 3.16.2.1 + +* Mon Apr 13 2015 Milan Crha - 3.16.1-1 +- Update to 3.16.1 + +* Mon Mar 23 2015 Milan Crha - 3.16.0-1 +- Update to 3.16.0 + +* Mon Mar 16 2015 Milan Crha - 3.15.92-1 +- Update to 3.15.92 +- Remove obsolete patches (one unused and one fixed upstream) + +* Mon Mar 02 2015 Milan Crha - 3.15.91-1 +- Update to 3.15.91 + +* Mon Feb 16 2015 Milan Crha - 3.13.90-1 +- Update to 3.13.90 +- Remove WebKit composer patches (fixed upstream) + * Mon Feb 02 2015 Tomas Popela - 3.13.10-2 - Backport the WebKit composer patches diff --git a/sources b/sources index 4dc6c49..31d8e18 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -b19376206d98624a5f232a7826872e3f evolution-3.13.10.tar.xz +f9182138883391727e78a6ac7f7b80d7 evolution-3.16.5.tar.xz