Compare commits

...
Sign in to create a new pull request.

15 commits

Author SHA1 Message Date
Milan Crha
2784217132 Add pkgconfig(iso-codes) into BuildRequires 2015-09-08 07:50:12 +02:00
Milan Crha
0b571c5be2 Add patch for RH bug #1231591 (Crash when viewing message digest) 2015-08-19 17:25:43 +02:00
Milan Crha
6d655c864e Update to 3.16.5 2015-08-10 07:40:45 +02:00
Milan Crha
2c3026b37a Add patch for RH bug #1243680 (Replacement of misspelled word doesn't work in composer) 2015-07-16 15:10:09 +02:00
Milan Crha
93fcd52a73 Update to 3.16.4 2015-07-13 08:56:35 +02:00
Milan Crha
d614a320e3 Add patch for RH bug #1229230 (Broken save of filter rules) 2015-06-08 16:52:36 +02:00
Milan Crha
5bb7dc83bf Update to 3.16.3 2015-06-08 09:47:13 +02:00
Debarshi Ray
06dd7b4aad Rebuild for libgdata soname bump 2015-05-28 16:37:13 +02:00
Milan Crha
a73061e962 Update to 3.16.2.1 2015-05-11 09:18:13 +02:00
Milan Crha
224b751e29 Add forgotten new symbolic icon 2015-04-13 13:30:37 +02:00
Milan Crha
d276554038 Update to 3.16.1 2015-04-13 11:34:44 +02:00
Milan Crha
1296fae43b Update to 3.16.0 2015-03-23 11:53:22 +01:00
Milan Crha
8c1a26d4f4 Update to 3.15.92; Remove obsolete patches (one unused and one fixed upstream) 2015-03-16 14:16:15 +01:00
Milan Crha
80701e2011 Update to 3.15.91 2015-03-02 13:45:27 +01:00
Milan Crha
0bb8664bd3 Update to 3.13.90 2015-02-16 11:48:45 +01:00
8 changed files with 256 additions and 963 deletions

9
.gitignore vendored
View file

@ -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

View file

@ -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. */

View file

@ -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 *

View file

@ -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])

View file

@ -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
- */
- /* <span class="-x-evo-quote-character"> */
- node = webkit_dom_node_get_parent_node (
- WEBKIT_DOM_NODE (br_element));
- /* <span class="-x-evo-quoted"> */
- 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 (
- "<span class=\"-x-evo-to-body\" data-credits><pre>%s</pre></span>",
+ "<span class=\"-x-evo-to-body\" data-credits=\"%s\"></span>",
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 = "<span class=\"-x-evo-cite-body\"><span>";
+ string = "<span class=\"-x-evo-cite-body\"></span>";
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, "<span id=\"-x-evolution-reply-citation\">",
- "</span>", &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, "<span id=\"-x-evolution-reply-citation\">",
- "</span>", &validity_found);
+ parts_list, NULL, NULL, &validity_found);
g_free (credits);
e_msg_composer_set_body_text (composer, text, TRUE);
g_free (text);

View file

@ -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,
"<tr><td colspan=\"2\">"
- "<div class=\"attachment-wrapper\" id=\"%s\" inner-html-data=\"%s\">",
- wrapper_element_id, inner_html_data);
+ "<div class=\"attachment-wrapper\" id=\"%s\"",
+ wrapper_element_id);
+
+ if (e_mail_part_should_show_inline (part)) {
+ g_string_append (buffer, ">");
+ 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, "</div></td></tr>");
- 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 <config.h>
+#endif
+
#include "e-mail-part.h"
#include <string.h>
+#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);
}
}

View file

@ -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 <mcrha@redhat.com> - 3.16.5-3
- Add pkgconfig(iso-codes) into BuildRequires
* Wed Aug 19 2015 Milan Crha <mcrha@redhat.com> - 3.16.5-2
- Add patch for RH bug #1231591 (Crash when viewing message digest)
* Mon Aug 10 2015 Milan Crha <mcrha@redhat.com> - 3.16.5-1
- Update to 3.16.5
- Remove patch for RH bug #1243680 (Fixed upstream)
* Thu Jul 16 2015 Milan Crha <mcrha@redhat.com> - 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 <mcrha@redhat.com> - 3.16.4-1
- Update to 3.16.4
- Remove patch for RH bug #1229230 (Fixed upstream)
* Mon Jun 08 2015 Milan Crha <mcrha@redhat.com> - 3.16.3-2
- Add patch for RH bug #1229230 (Broken save of filter rules)
* Mon Jun 08 2015 Milan Crha <mcrha@redhat.com> - 3.16.3-1
- Update to 3.16.3
- Disable help build when gtk-doc is disabled
* Thu May 28 2015 Debarshi Ray <rishi@fedoraproject.org> - 3.16.2.1-2
- Rebuild for libgdata soname bump
* Mon May 11 2015 Milan Crha <mcrha@redhat.com> - 3.16.2.1-1
- Update to 3.16.2.1
* Mon Apr 13 2015 Milan Crha <mcrha@redhat.com> - 3.16.1-1
- Update to 3.16.1
* Mon Mar 23 2015 Milan Crha <mcrha@redhat.com> - 3.16.0-1
- Update to 3.16.0
* Mon Mar 16 2015 Milan Crha <mcrha@redhat.com> - 3.15.92-1
- Update to 3.15.92
- Remove obsolete patches (one unused and one fixed upstream)
* Mon Mar 02 2015 Milan Crha <mcrha@redhat.com> - 3.15.91-1
- Update to 3.15.91
* Mon Feb 16 2015 Milan Crha <mcrha@redhat.com> - 3.13.90-1
- Update to 3.13.90
- Remove WebKit composer patches (fixed upstream)
* Mon Feb 02 2015 Tomas Popela <tpopela@redhat.com> - 3.13.10-2
- Backport the WebKit composer patches

View file

@ -1 +1 @@
b19376206d98624a5f232a7826872e3f evolution-3.13.10.tar.xz
f9182138883391727e78a6ac7f7b80d7 evolution-3.16.5.tar.xz