diff --git a/evolution-3.22.5.tar.xz b/evolution-3.22.5.tar.xz deleted file mode 100644 index 787af40..0000000 --- a/evolution-3.22.5.tar.xz +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:e2f111f6c59fdd1fd2e5ea43aa7e081327285c336fadb1c0f6a912487001b1f0 -size 12287328 diff --git a/evolution-3.24.0.tar.xz b/evolution-3.24.0.tar.xz new file mode 100644 index 0000000..82b7e47 --- /dev/null +++ b/evolution-3.24.0.tar.xz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:50813222ecf5593b526fedb7b88748df9d58f3417d6c999f59d6f420e80c8514 +size 12123644 diff --git a/evolution-contact-list-performance.patch b/evolution-contact-list-performance.patch deleted file mode 100644 index 6ac713e..0000000 --- a/evolution-contact-list-performance.patch +++ /dev/null @@ -1,548 +0,0 @@ -From cffd6b51eca9fecd39a760c07da526d8ea4b98c4 Mon Sep 17 00:00:00 2001 -From: Mike Gorse -Date: Wed, 11 Jan 2017 19:56:48 +0100 -Subject: [PATCH] Bug 774494 - ENameSelectorDialog slow with large address - books - -Wait until contacts are fetched before attaching a GtkTreeModelSort. -Similarly, when changing the view during a search, detach the -GtkTreeModelSort while updating the tree view, and use a hash table -to temporarily store contacts, as this speeds up searching. - -Also, in ETreeModelStore, add a cache to optimize -generated_offset_to_child_offset to avoid needing to iterate through the -whole list to count rows when a value is needed. ---- - src/e-util/e-contact-store.c | 81 ++++++++++++++++++++++++++++++++---- - src/e-util/e-contact-store.h | 4 ++ - src/e-util/e-name-selector-dialog.c | 83 ++++++++++++++++++++++++++++--------- - src/e-util/e-tree-model-generator.c | 75 +++++++++++++++++++++++++++------ - 4 files changed, 202 insertions(+), 41 deletions(-) - -diff --git a/src/e-util/e-contact-store.c b/src/e-util/e-contact-store.c -index f81ffca..56c2b51 100644 ---- a/src/e-util/e-contact-store.c -+++ b/src/e-util/e-contact-store.c -@@ -51,6 +51,8 @@ struct _EContactStorePrivate { - enum { - START_CLIENT_VIEW, - STOP_CLIENT_VIEW, -+ START_UPDATE, -+ STOP_UPDATE, - LAST_SIGNAL - }; - -@@ -182,6 +184,26 @@ e_contact_store_class_init (EContactStoreClass *class) - g_cclosure_marshal_VOID__OBJECT, - G_TYPE_NONE, 1, - E_TYPE_BOOK_CLIENT_VIEW); -+ -+ signals[START_UPDATE] = g_signal_new ( -+ "start-update", -+ G_OBJECT_CLASS_TYPE (object_class), -+ G_SIGNAL_RUN_LAST, -+ G_STRUCT_OFFSET (EContactStoreClass, start_update), -+ NULL, NULL, -+ g_cclosure_marshal_VOID__OBJECT, -+ G_TYPE_NONE, 1, -+ E_TYPE_BOOK_CLIENT_VIEW); -+ -+ signals[STOP_UPDATE] = g_signal_new ( -+ "stop-update", -+ G_OBJECT_CLASS_TYPE (object_class), -+ G_SIGNAL_RUN_LAST, -+ G_STRUCT_OFFSET (EContactStoreClass, stop_update), -+ NULL, NULL, -+ g_cclosure_marshal_VOID__OBJECT, -+ G_TYPE_NONE, 1, -+ E_TYPE_BOOK_CLIENT_VIEW); - } - - static void -@@ -435,6 +457,42 @@ find_contact_by_view_and_uid (EContactStore *contact_store, - return -1; - } - -+static GHashTable * -+get_contact_hash (EContactStore *contact_store, -+ EBookClientView *find_view) -+{ -+ GArray *array; -+ ContactSource *source; -+ GPtrArray *contacts; -+ gint source_index; -+ gint ii; -+ GHashTable *hash; -+ -+ source_index = find_contact_source_by_view (contact_store, find_view); -+ if (source_index < 0) -+ return NULL; -+ -+ array = contact_store->priv->contact_sources; -+ source = &g_array_index (array, ContactSource, source_index); -+ -+ if (find_view == source->client_view) -+ contacts = source->contacts; /* Current view */ -+ else -+ contacts = source->contacts_pending; /* Pending view */ -+ -+ hash = g_hash_table_new (g_str_hash, g_str_equal); -+ -+ for (ii = 0; ii < contacts->len; ii++) { -+ EContact *contact = g_ptr_array_index (contacts, ii); -+ const gchar *uid = e_contact_get_const (contact, E_CONTACT_UID); -+ -+ if (uid) -+ g_hash_table_insert (hash, (gpointer) uid, GINT_TO_POINTER (ii)); -+ } -+ -+ return hash; -+} -+ - static gint - find_contact_by_uid (EContactStore *contact_store, - const gchar *find_uid) -@@ -647,6 +705,7 @@ view_complete (EContactStore *contact_store, - ContactSource *source; - gint offset; - gint i; -+ GHashTable *hash; - - if (!find_contact_source_details_by_view (contact_store, client_view, &source, &offset)) { - g_warning ("EContactStore got 'complete' signal from unknown EBookClientView!"); -@@ -662,18 +721,17 @@ view_complete (EContactStore *contact_store, - g_return_if_fail (client_view == source->client_view_pending); - - /* However, if it was a pending view, calculate and emit the differences between that -- * and the current view, and move the pending view up to current. -- * -- * This is O(m * n), and can be sped up with a temporary hash table if needed. */ -+ * and the current view, and move the pending view up to current. */ -+ -+ g_signal_emit (contact_store, signals[START_UPDATE], 0, client_view); - - /* Deletions */ -+ hash = get_contact_hash (contact_store, source->client_view_pending); - for (i = 0; i < source->contacts->len; i++) { - EContact *old_contact = g_ptr_array_index (source->contacts, i); - const gchar *old_uid = e_contact_get_const (old_contact, E_CONTACT_UID); -- gint result; - -- result = find_contact_by_view_and_uid (contact_store, source->client_view_pending, old_uid); -- if (result < 0) { -+ if (!g_hash_table_contains (hash, old_uid)) { - /* Contact is not in new view; removed */ - g_object_unref (old_contact); - g_ptr_array_remove_index (source->contacts, i); -@@ -681,15 +739,15 @@ view_complete (EContactStore *contact_store, - i--; /* Stay in place */ - } - } -+ g_hash_table_unref (hash); - - /* Insertions */ -+ hash = get_contact_hash (contact_store, source->client_view); - for (i = 0; i < source->contacts_pending->len; i++) { - EContact *new_contact = g_ptr_array_index (source->contacts_pending, i); - const gchar *new_uid = e_contact_get_const (new_contact, E_CONTACT_UID); -- gint result; - -- result = find_contact_by_view_and_uid (contact_store, source->client_view, new_uid); -- if (result < 0) { -+ if (!g_hash_table_contains (hash, new_uid)) { - /* Contact is not in old view; inserted */ - g_ptr_array_add (source->contacts, new_contact); - row_inserted (contact_store, offset + source->contacts->len - 1); -@@ -698,6 +756,9 @@ view_complete (EContactStore *contact_store, - g_object_unref (new_contact); - } - } -+ g_hash_table_unref (hash); -+ -+ g_signal_emit (contact_store, signals[STOP_UPDATE], 0, client_view); - - /* Move pending view up to current */ - stop_view (contact_store, source->client_view); -@@ -805,6 +866,7 @@ clear_contact_source (EContactStore *contact_store, - GtkTreePath *path = gtk_tree_path_new (); - gint i; - -+ g_signal_emit (contact_store, signals[START_UPDATE], 0, source->client_view); - gtk_tree_path_append_index (path, source->contacts->len); - - for (i = source->contacts->len - 1; i >= 0; i--) { -@@ -818,6 +880,7 @@ clear_contact_source (EContactStore *contact_store, - } - - gtk_tree_path_free (path); -+ g_signal_emit (contact_store, signals[STOP_UPDATE], 0, source->client_view); - } - - /* Free main and pending views, clear cached contacts */ -diff --git a/src/e-util/e-contact-store.h b/src/e-util/e-contact-store.h -index f6a5ead..4d25f7a 100644 ---- a/src/e-util/e-contact-store.h -+++ b/src/e-util/e-contact-store.h -@@ -67,6 +67,10 @@ struct _EContactStoreClass { - EBookClientView *client_view); - void (*stop_client_view) (EContactStore *contact_store, - EBookClientView *client_view); -+ void (*start_update) (EContactStore *contact_store, -+ EBookClientView *client_view); -+ void (*stop_update) (EContactStore *contact_store, -+ EBookClientView *client_view); - }; - - GType e_contact_store_get_type (void) G_GNUC_CONST; -diff --git a/src/e-util/e-name-selector-dialog.c b/src/e-util/e-name-selector-dialog.c -index f2db4d7..30e39fa 100644 ---- a/src/e-util/e-name-selector-dialog.c -+++ b/src/e-util/e-name-selector-dialog.c -@@ -746,6 +746,44 @@ add_destination (ENameSelectorModel *name_selector_model, - } - - static void -+disable_sort (ENameSelectorDialog *dialog) -+{ -+ if (dialog->priv->contact_sort) { -+ g_object_unref (dialog->priv->contact_sort); -+ dialog->priv->contact_sort = NULL; -+ } -+ -+ gtk_tree_view_set_model ( -+ dialog->priv->contact_view, -+ NULL); -+} -+ -+static void -+enable_sort (ENameSelectorDialog *dialog) -+{ -+ ETreeModelGenerator *contact_filter; -+ -+ /* Get contact store and its filter wrapper */ -+ contact_filter = e_name_selector_model_peek_contact_filter ( -+ dialog->priv->name_selector_model); -+ -+ /* Create sorting model on top of filter, assign it to view */ -+ if (!dialog->priv->contact_sort) { -+ dialog->priv->contact_sort = GTK_TREE_MODEL_SORT ( -+ gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (contact_filter))); -+ -+ /* sort on full name as we display full name in name selector dialog */ -+ gtk_tree_sortable_set_sort_column_id ( -+ GTK_TREE_SORTABLE (dialog->priv->contact_sort), -+ E_CONTACT_FULL_NAME, GTK_SORT_ASCENDING); -+ } -+ -+ gtk_tree_view_set_model ( -+ dialog->priv->contact_view, -+ GTK_TREE_MODEL (dialog->priv->contact_sort)); -+} -+ -+static void - remove_books (ENameSelectorDialog *name_selector_dialog) - { - EContactStore *contact_store; -@@ -771,8 +809,11 @@ remove_books (ENameSelectorDialog *name_selector_dialog) - g_object_unref (name_selector_dialog->priv->cancellable); - name_selector_dialog->priv->cancellable = NULL; - } -+ -+ disable_sort (name_selector_dialog); - } - -+ - /* ------------------ * - * Section management * - * ------------------ */ -@@ -1134,6 +1175,8 @@ view_complete (EBookClientView *view, - ENameSelectorDialog *dialog) - { - view_progress (view, -1, NULL, dialog); -+ -+ enable_sort (dialog); - } - - static void -@@ -1160,6 +1203,22 @@ stop_client_view_cb (EContactStore *store, - } - - static void -+start_update_cb (EContactStore *store, -+ EBookClientView *client_view, -+ ENameSelectorDialog *name_selector_dialog) -+{ -+ disable_sort (name_selector_dialog); -+} -+ -+static void -+stop_update_cb (EContactStore *store, -+ EBookClientView *client_view, -+ ENameSelectorDialog *name_selector_dialog) -+{ -+ enable_sort (name_selector_dialog); -+} -+ -+static void - name_selector_dialog_get_client_cb (GObject *source_object, - GAsyncResult *result, - gpointer user_data) -@@ -1589,7 +1648,6 @@ transfer_button_clicked (ENameSelectorDialog *name_selector_dialog, - static void - setup_name_selector_model (ENameSelectorDialog *name_selector_dialog) - { -- ETreeModelGenerator *contact_filter; - EContactStore *contact_store; - GList *new_sections; - GList *l; -@@ -1625,29 +1683,12 @@ setup_name_selector_model (ENameSelectorDialog *name_selector_dialog) - name_selector_dialog->priv->name_selector_model, "section-removed", - G_CALLBACK (model_section_removed), name_selector_dialog); - -- /* Get contact store and its filter wrapper */ -- -- contact_filter = e_name_selector_model_peek_contact_filter ( -- name_selector_dialog->priv->name_selector_model); -- -- /* Create sorting model on top of filter, assign it to view */ -- -- name_selector_dialog->priv->contact_sort = GTK_TREE_MODEL_SORT ( -- gtk_tree_model_sort_new_with_model (GTK_TREE_MODEL (contact_filter))); -- -- /* sort on full name as we display full name in name selector dialog */ -- gtk_tree_sortable_set_sort_column_id ( -- GTK_TREE_SORTABLE (name_selector_dialog->priv->contact_sort), -- E_CONTACT_FULL_NAME, GTK_SORT_ASCENDING); -- -- gtk_tree_view_set_model ( -- name_selector_dialog->priv->contact_view, -- GTK_TREE_MODEL (name_selector_dialog->priv->contact_sort)); -- - contact_store = e_name_selector_model_peek_contact_store (name_selector_dialog->priv->name_selector_model); - if (contact_store) { - g_signal_connect (contact_store, "start-client-view", G_CALLBACK (start_client_view_cb), name_selector_dialog); - g_signal_connect (contact_store, "stop-client-view", G_CALLBACK (stop_client_view_cb), name_selector_dialog); -+ g_signal_connect (contact_store, "start-update", G_CALLBACK (start_update_cb), name_selector_dialog); -+ g_signal_connect (contact_store, "stop-update", G_CALLBACK (stop_update_cb), name_selector_dialog); - } - - /* Make sure UI is consistent */ -@@ -1684,6 +1725,8 @@ shutdown_name_selector_model (ENameSelectorDialog *name_selector_dialog) - if (contact_store) { - g_signal_handlers_disconnect_by_func (contact_store, start_client_view_cb, name_selector_dialog); - g_signal_handlers_disconnect_by_func (contact_store, stop_client_view_cb, name_selector_dialog); -+ g_signal_handlers_disconnect_by_func (contact_store, start_update_cb, name_selector_dialog); -+ g_signal_handlers_disconnect_by_func (contact_store, stop_update_cb, name_selector_dialog); - } - - g_signal_handlers_disconnect_matched ( -diff --git a/src/e-util/e-tree-model-generator.c b/src/e-util/e-tree-model-generator.c -index b8fe4a3..ec49712 100644 ---- a/src/e-util/e-tree-model-generator.c -+++ b/src/e-util/e-tree-model-generator.c -@@ -56,8 +56,14 @@ struct _ETreeModelGeneratorPrivate { - - ETreeModelGeneratorModifyFunc modify_func; - gpointer modify_func_data; -+ GSList *offset_cache; - }; - -+typedef struct { -+ gint offset; -+ gint index; -+} CacheItem; -+ - static void e_tree_model_generator_tree_model_init (GtkTreeModelIface *iface); - - G_DEFINE_TYPE_WITH_CODE ( -@@ -192,6 +198,8 @@ tree_model_generator_finalize (GObject *object) - if (tree_model_generator->priv->root_nodes) - release_node_map (tree_model_generator->priv->root_nodes); - -+ g_slist_free_full (tree_model_generator->priv->offset_cache, g_free); -+ - /* Chain up to parent's finalize() method. */ - G_OBJECT_CLASS (e_tree_model_generator_parent_class)->finalize (object); - } -@@ -300,15 +308,44 @@ row_changed (ETreeModelGenerator *tree_model_generator, - static gint - generated_offset_to_child_offset (GArray *group, - gint offset, -- gint *internal_offset) -+ gint *internal_offset, -+ GSList **cache_p) - { - gboolean success = FALSE; - gint accum_offset = 0; - gint i; -+ GSList *cache, *cache_last; -+ gint last_cached_offset; -+ -+ i = 0; -+ cache = *cache_p; -+ cache_last = NULL; -+ last_cached_offset = 0; -+ for (; cache; cache = cache->next) { -+ CacheItem *item = cache->data; -+ cache_last = cache; -+ last_cached_offset = item->offset; -+ if (item->offset <= offset) { -+ i = item->index; -+ accum_offset = item->offset; -+ } else -+ break; -+ } - -- for (i = 0; i < group->len; i++) { -+ for (; i < group->len; i++) { - Node *node = &g_array_index (group, Node, i); - -+ if (accum_offset - last_cached_offset > 500) { -+ CacheItem *item = g_malloc (sizeof (CacheItem)); -+ item->offset = accum_offset; -+ item->index = i; -+ last_cached_offset = accum_offset; -+ if (cache_last) -+ cache_last = g_slist_last (g_slist_append (cache_last, item)); -+ else -+ *cache_p = cache_last = g_slist_append (NULL, item); -+ } -+ - accum_offset += node->n_generated; - if (accum_offset > offset) { - accum_offset -= node->n_generated; -@@ -395,6 +432,9 @@ build_node_map (ETreeModelGenerator *tree_model_generator, - GtkTreeIter iter; - gboolean result; - -+ g_slist_free_full (tree_model_generator->priv->offset_cache, g_free); -+ tree_model_generator->priv->offset_cache = NULL; -+ - if (parent_iter) - result = gtk_tree_model_iter_children (tree_model_generator->priv->child_model, &iter, parent_iter); - else -@@ -519,6 +559,9 @@ create_node_at_child_path (ETreeModelGenerator *tree_model_generator, - - append_node (group); - -+ g_slist_free_full (tree_model_generator->priv->offset_cache, g_free); -+ tree_model_generator->priv->offset_cache = NULL; -+ - if (group->len - 1 - index > 0) { - gint i; - -@@ -587,6 +630,9 @@ delete_node_at_child_path (ETreeModelGenerator *tree_model_generator, - Node *node; - gint i; - -+ g_slist_free_full (tree_model_generator->priv->offset_cache, g_free); -+ tree_model_generator->priv->offset_cache = NULL; -+ - parent_path = gtk_tree_path_copy (path); - gtk_tree_path_up (parent_path); - node = get_node_by_child_path (tree_model_generator, parent_path, &parent_group); -@@ -658,6 +704,11 @@ child_row_changed (ETreeModelGenerator *tree_model_generator, - gtk_tree_path_next (generated_path); - } - -+ if (n_generated != node->n_generated) { -+ g_slist_free_full (tree_model_generator->priv->offset_cache, g_free); -+ tree_model_generator->priv->offset_cache = NULL; -+ } -+ - for (; i < node->n_generated; ) { - node->n_generated--; - row_deleted (tree_model_generator, generated_path); -@@ -946,7 +997,7 @@ e_tree_model_generator_convert_path_to_child_path (ETreeModelGenerator *tree_mod - } - - index = gtk_tree_path_get_indices (generator_path)[depth]; -- child_index = generated_offset_to_child_offset (group, index, NULL); -+ child_index = generated_offset_to_child_offset (group, index, NULL, &tree_model_generator->priv->offset_cache); - node = &g_array_index (group, Node, child_index); - group = node->child_nodes; - -@@ -985,7 +1036,7 @@ e_tree_model_generator_convert_iter_to_child_iter (ETreeModelGenerator *tree_mod - path = gtk_tree_path_new (); - ITER_GET (generator_iter, &group, &index); - -- index = generated_offset_to_child_offset (group, index, &internal_offset); -+ index = generated_offset_to_child_offset (group, index, &internal_offset, &tree_model_generator->priv->offset_cache); - gtk_tree_path_prepend_index (path, index); - - while (group) { -@@ -1066,7 +1117,7 @@ e_tree_model_generator_get_iter (GtkTreeModel *tree_model, - gint child_index; - - index = gtk_tree_path_get_indices (path)[depth]; -- child_index = generated_offset_to_child_offset (group, index, NULL); -+ child_index = generated_offset_to_child_offset (group, index, NULL, &tree_model_generator->priv->offset_cache); - if (child_index < 0) - return FALSE; - -@@ -1103,7 +1154,7 @@ e_tree_model_generator_get_path (GtkTreeModel *tree_model, - * lists, not sure about trees. */ - - gtk_tree_path_prepend_index (path, index); -- index = generated_offset_to_child_offset (group, index, NULL); -+ index = generated_offset_to_child_offset (group, index, NULL, &tree_model_generator->priv->offset_cache); - - while (group) { - Node *node = &g_array_index (group, Node, index); -@@ -1135,7 +1186,7 @@ e_tree_model_generator_iter_next (GtkTreeModel *tree_model, - g_return_val_if_fail (ITER_IS_VALID (tree_model_generator, iter), FALSE); - - ITER_GET (iter, &group, &index); -- child_index = generated_offset_to_child_offset (group, index, &internal_offset); -+ child_index = generated_offset_to_child_offset (group, index, &internal_offset, &tree_model_generator->priv->offset_cache); - node = &g_array_index (group, Node, child_index); - - if (internal_offset + 1 < node->n_generated || -@@ -1169,7 +1220,7 @@ e_tree_model_generator_iter_children (GtkTreeModel *tree_model, - } - - ITER_GET (parent, &group, &index); -- index = generated_offset_to_child_offset (group, index, NULL); -+ index = generated_offset_to_child_offset (group, index, NULL, &tree_model_generator->priv->offset_cache); - if (index < 0) - return FALSE; - -@@ -1205,7 +1256,7 @@ e_tree_model_generator_iter_has_child (GtkTreeModel *tree_model, - } - - ITER_GET (iter, &group, &index); -- index = generated_offset_to_child_offset (group, index, NULL); -+ index = generated_offset_to_child_offset (group, index, NULL, &tree_model_generator->priv->offset_cache); - if (index < 0) - return FALSE; - -@@ -1236,7 +1287,7 @@ e_tree_model_generator_iter_n_children (GtkTreeModel *tree_model, - count_generated_nodes (tree_model_generator->priv->root_nodes) : 0; - - ITER_GET (iter, &group, &index); -- index = generated_offset_to_child_offset (group, index, NULL); -+ index = generated_offset_to_child_offset (group, index, NULL, &tree_model_generator->priv->offset_cache); - if (index < 0) - return 0; - -@@ -1273,7 +1324,7 @@ e_tree_model_generator_iter_nth_child (GtkTreeModel *tree_model, - } - - ITER_GET (parent, &group, &index); -- index = generated_offset_to_child_offset (group, index, NULL); -+ index = generated_offset_to_child_offset (group, index, NULL, &tree_model_generator->priv->offset_cache); - if (index < 0) - return FALSE; - -@@ -1303,7 +1354,7 @@ e_tree_model_generator_iter_parent (GtkTreeModel *tree_model, - g_return_val_if_fail (ITER_IS_VALID (tree_model_generator, iter), FALSE); - - ITER_GET (child, &group, &index); -- index = generated_offset_to_child_offset (group, index, NULL); -+ index = generated_offset_to_child_offset (group, index, NULL, &tree_model_generator->priv->offset_cache); - if (index < 0) - return FALSE; - --- -2.6.6 - diff --git a/evolution.changes b/evolution.changes index 19557b5..0f6b67a 100644 --- a/evolution.changes +++ b/evolution.changes @@ -1,3 +1,186 @@ +------------------------------------------------------------------- +Mon Mar 20 11:54:39 UTC 2017 - dimstar@opensuse.org + +- Update to version 3.24.0: + + Updated translations. + +------------------------------------------------------------------- +Mon Mar 13 10:44:25 UTC 2017 - dimstar@opensuse.org + +- Update to version 3.23.92: + + e_msg_composer_setup_with_message: Doesn't use + override_alias_name/_address. + + Fix various editor's unit tests. + + Don't preserve 'Preformatted' format if moving an empty block + out of the quoted content. + + Possible crash while refreshing spellcheck. + + Print the history stack after removing item from it. + + History could be saved twice if inserting HTML content. + + Print current EEditorWebExtension method if CAMEL_DEBUG is + active. + + Bugs fixed: bgo#778541, bgo#779156, bgo#779687, bgo#779688, + bgo#779738, bgo#779746. + + Updated translations. + +------------------------------------------------------------------- +Mon Feb 27 12:40:23 UTC 2017 - zaitor@opensuse.org + +- Update to version 3.23.91: + + [EWeekdayChooser] Selected days drawn with incorrect color. + + Bugs fixed: bgo#778642, bgo#779042. + + Updated translations. + +------------------------------------------------------------------- +Wed Feb 15 11:47:36 UTC 2017 - dimstar@opensuse.org + +- Update to version 3.23.90: + + Reference a link where Google calendars to synchronize can be + enabled. + + Previous signatures with images not sent properly. + + A minor translatable string change. + + Fix few memory leaks. + + e-editor-dom-functions: Do not override variable name from + parent block. + + Bugs fixed: bgo#733336, bgo#747751, bgo#773038, bgo#775656, + bgo#776391, bgo#777207, bgo#777208, bgo#777267, bgo#777373, + bgo#777766, bgo#777818, bgo#777974, bgo#778036, bgo#778062, + bgo#778180, bgo#778223, bgo#778231, bgo#778347. + + Updated translations. + +------------------------------------------------------------------- +Wed Feb 15 03:23:04 UTC 2017 - dimstar@opensuse.org + +- Update to version 3.23.4: + + Fix a crash when deleting a meeting without DTEND. + + Fix a use-after-free after editor's WebKitWebProcess crash. + + Resave .ui files with latest glade and bump gtk+ requirement to + 3.10. + + Attached meeting invitations not shown properly. + + Crash on paste of a vCard into a message composer body. + + "Insert text file" sensitive to HTML-significant characters. + + EWeekView could write out of rows_per_day array. + + Replace deprecated icalproperty_remove_parameter() with + icalproperty_remove_parameter_by_kind(). + + Replace deprecated icaltime_from_timet() with + icaltime_from_timet_with_zone(). + + Show available server tags (aka possible Labels) in Folder + Properties. + + Fix few memory leaks. + + Use a single WebProcess for test-html-editor-units by default. + + Fix few memory leaks when converting composer text to plain + text. + + Avoid a (rather rare) crash under message-list.c::build_tree(). + + Destroy associated activity before Folder Properties dialog is + shown. + + Bugs fixes: bgo#489466, bgo#773316, bgo#773419, bgo#773548, + bgo#774494, bgo#776044, bgo#776194, bgo#776224, bgo#776243, + bgo#776415, bgo#776563, bgo#776584, bgo#776803, bgo#776813, + bgo#776958, bgo#776969, bgo#777071, bgo#777141. + + Updated translations. +- Drop evolution-contact-list-performance.patch: fixed upstream. + +------------------------------------------------------------------- +Wed Feb 15 03:23:03 UTC 2017 - dimstar@opensuse.org + +- Update to version 3.23.3: + + Remove leftover EWebViewClass::create_plugin_widget(). + + Message list not always scrolled to the cursor position on + folder enter ][. + + Spell GNOME Calendar correctly (Piotr Drąg) + + Ensure mail_session_get_cache/config/data_dir() return existing + directories. + + Process the WebView's context menu actions synchronously. + + Handle CAMEL_PROVIDER_CONF_LABEL option. + + Fix formatting. + + Fix various issues with clipboard content handling. + + Fix the EHTMLEditor's update-actions signal. + + EEditorWebExtension: Use-after-free when restoring the inline + images. + + EEditorDOMFunctions: Critical warning and possible crash when + we cannot append the end node for spell checking. + + Copy action is no available in EWebView's context menu. + + Prefer user's value of WEBKIT_DISABLE_COMPOSITING_MODE. + + Correct some backup/restore translatable strings. + + Add a Confirmation option 'prompt-on-composer-mode-switch' into + Preferences. + + Let the Control + C shortcut behave the same way as + Control + Shift (Tomas Popela) + + Prefer text/plain in plain text mode if using + 'Paste Quotation'. + + Added translator's comment and 'mode' versus 'format' for + composer changes. + + Make glib_mkenums() files depend on the source enum file. + + Bugs fixed: bgo#764802, bgo#767228, bgo#774164, bgo#774211, + bgo#774377, bgo#774691, bgo#774924, bgo#774958, bgo#775042, + bgo#775075, bgo#775214, bgo#775268, bgo#775363, bgo#775370, + bgo#775395, bgo#775397, bgo#775565, bgo#775598, bgo#775656, + bgo#775691, bgo#775704. + + Updated translations. + +------------------------------------------------------------------- +Wed Feb 15 03:23:02 UTC 2017 - dimstar@opensuse.org + +- Update to version 3.23.2: + + Tests are expecting the font-family attribute on BODY. + + Skip the tests that are known to fail. + + Extra quoted character on the end of the quoted PRE element if + it ends with BR element. + + Renew spell-check only in viewport and not in the whole + document. + + Editor is not marked as changed after some operations. + + Fix possible crash (use-after-free) under mail_send_receive(). + + Correct gtkdoc-scan --ignore-headers argument value. + + Update gtk-doc sgml input files. + + Return RPATH linker flags back to evolution-shell.pc.in. + + Do not require C++ compiler, when not used. + + Ensure CMAKE_SKIP_RPATH is OFF, the RPATH is used here. + + Message list not always scrolled to the cursor position on + folder enter. + + Messages could not be sometimes quoted correctly. + + Reflect spellchecking UI changes in user documentation. + + Bugs fixed: bgo#739955, bgo#764065, bgo#769573, bgo#770926, + bgo#771821, bgo#772947, bgo#773236, bgo#773494, bgo#773659, + bgo#773864, bgo#774067, bgo#774156, bgo#774521, bgo#774681. + + Updated translations. +- Drop evolution-rpaths.patch: fixed upstream. +- No longer pass -DCMAKE_SKIP_RPATH=ON to cmake: upstream corrected + the build system to take care of this. + +------------------------------------------------------------------- +Wed Feb 15 03:23:02 UTC 2017 - dimstar@opensuse.org + +- Add evolution-rpaths.patch: Do not store an rpath in libraries + that do not link anything private (bgo#774681). +- Pass -DCMAKE_SKIP_RPATH=OFF to cmake: evolution relies on rpath + being set. Future versions take care of this by setting the + appropriate flag in CMakeLists.txt. + +------------------------------------------------------------------- +Wed Feb 15 03:23:01 UTC 2017 - dimstar@opensuse.org + +- Update to version 3.23.1: + + Change "Compose Message" Desktop Action to disambiguate it from + titles. + + Convert from autotools to CMake. + + Require as hard dependency some dependencies. + + Extend error messages in FindLDAP.cmake. + + Reorganize directory structure. + + Add a helper script for a 'dist' target. + + Rename SHARE_INSTALL_DIR to SHARE_INSTALL_PREFIX. + + Place private libevolutiontestsettings.so into a + test-gio-modules subdirectory. + + Do not use camel_folder_set_message_flags() in + message-list::on_click(). + + Do not quote compiler/linker flags. + + Fix a crash when replying to all recipients. + + Add an option to (not) have reminder notification dialog always + on top. + + Add options to select Memo/Task Lists for Reminder + notifications. + + Hard-break `make dist` when there are uncommitted changes. + + Bugs fixed: bgo#772175, bgo#336195, bgo#605416. + + Updated translations. + ------------------------------------------------------------------- Mon Feb 13 12:56:06 UTC 2017 - zaitor@opensuse.org diff --git a/evolution.spec b/evolution.spec index f07f798..e12237c 100644 --- a/evolution.spec +++ b/evolution.spec @@ -23,8 +23,8 @@ Name: evolution # This should be updated upon major version changes; it should match BASE_VERSION as defined in configure.in. -%define evolution_base_version 3.22 -Version: 3.22.5 +%define evolution_base_version 3.24 +Version: 3.24.0 Release: 0 # _version needs to be %{version} stripped to major.minor.micro only... %define _version %(echo %{version} | grep -E -o '[0-9]+\.[0-9]+\.[0-9]+') @@ -34,14 +34,14 @@ Summary: The Integrated GNOME Mail, Calendar, and Address Book Suite License: LGPL-2.0 and LGPL-3.0 Group: Productivity/Networking/Email/Clients Url: http://wiki.gnome.org/Apps/Evolution/ -Source0: http://download.gnome.org/sources/evolution/3.22/%{name}-%{version}.tar.xz -# PATCH-FIX-UPSTREAM evolution-contact-list-performance.patch bgo#774494 bsc#990206 mgorse@suse.com -- improve performance with very large contact lists. -Patch0: evolution-contact-list-performance.patch +Source0: http://download.gnome.org/sources/evolution/3.24/%{name}-%{version}.tar.xz # The icon we rely on is from adwaita-icon-theme BuildRequires: adwaita-icon-theme BuildRequires: bison BuildRequires: bogofilter +BuildRequires: cmake BuildRequires: fdupes +BuildRequires: gcc-c++ BuildRequires: openldap2-devel %if %{need_autogen} BuildRequires: gnome-common @@ -165,33 +165,24 @@ to develop applications that require these. %lang_package %prep %setup -q -%patch0 -p2 %if !0%{?is_opensuse} translation-update-upstream %endif %build -%if %{need_autogen} -NOCONFIGURE=1 gnome-autogen.sh -%endif -%{configure} \ - --with-openldap=yes \ - --enable-nss=yes \ - --enable-smime=yes \ - --with-glade-catalog \ +%cmake \ + -DLIBEXEC_INSTALL_DIR=%{_libexecdir} \ + -DENABLE_YTNEF=OFF \ + -DWITH_GLADE_CATALOG=ON \ + -DENABLE_GTK_DOC=ON \ %if !%{use_gtkimageview} - --disable-image-inline \ + %nil %endif - --disable-static \ -# Processing the files in help uses _lots_ of memory, so running that part in parallel is bad. -pushd help -make -popd + %nil make %{?_smp_flags} %install -%{makeinstall} -find %{buildroot} -name '*.la' -type f -delete -print +%cmake_install # Office is okay upstream, but we want the menu item to appear in Internet grep -q "^Categories=.*Office" %{buildroot}%{_datadir}/applications/evolution.desktop %suse_update_desktop_file -r -G "Mail and Calendar" evolution GNOME GTK Network Email Calendar ContactManagement @@ -230,9 +221,9 @@ grep -q "^Categories=.*Office" %{buildroot}%{_datadir}/applications/evolution.de # despite the plugins being split in their own packages, the schema must be present in any case %{_datadir}/glib-2.0/schemas/org.gnome.evolution.bogofilter.gschema.xml %{_datadir}/glib-2.0/schemas/org.gnome.evolution.spamassassin.gschema.xml -%dir %{_libdir}/evolution -%dir %{_libdir}/evolution/* +%dir %{_libdir}/evolution/ %{_libdir}/evolution/*.so +%dir %{_libdir}/evolution/modules %{_libdir}/evolution/modules/module-addressbook.so %{_libdir}/evolution/modules/module-backup-restore.so %{_libdir}/evolution/modules/module-book-config-google.so @@ -248,6 +239,7 @@ grep -q "^Categories=.*Office" %{buildroot}%{_datadir}/applications/evolution.de %{_libdir}/evolution/modules/module-calendar.so %{_datadir}/glib-2.0/schemas/org.gnome.evolution.calendar.gschema.xml %{_libdir}/evolution/modules/module-composer-autosave.so +%{_libdir}/evolution/modules/module-composer-to-meeting.so %{_libdir}/evolution/modules/module-contact-photos.so %{_libdir}/evolution/modules/module-gravatar.so %{_libdir}/evolution/modules/module-itip-formatter.so @@ -268,6 +260,7 @@ grep -q "^Categories=.*Office" %{buildroot}%{_datadir}/applications/evolution.de %{_libdir}/evolution/modules/module-webkit-editor.so %{_libdir}/evolution/modules/module-webkit-inspector.so %{_datadir}/glib-2.0/schemas/org.gnome.evolution.addressbook.gschema.xml +%dir %{_libdir}/evolution/plugins %{_libdir}/evolution/plugins/*-email-custom-header.* %{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.email-custom-header.gschema.xml %{_libdir}/evolution/plugins/*-evolution-attachment-reminder.* @@ -293,15 +286,15 @@ grep -q "^Categories=.*Office" %{buildroot}%{_datadir}/applications/evolution.de %{_libdir}/evolution/plugins/*-save-calendar.* %{_libdir}/evolution/plugins/*-templates.* %{_datadir}/glib-2.0/schemas/org.gnome.evolution.plugin.templates.gschema.xml -%{_libdir}/evolution/web-extensions/libedomutils* -%{_libdir}/evolution/web-extensions/libewebextension.so -%{_libdir}/evolution/web-extensions/libmoduleitipformatterwebextension.so -%dir %{_libdir}/evolution/web-extensions/webkit-editor -%{_libdir}/evolution/web-extensions/webkit-editor/libewebkiteditorwebextension.so -%{_libdir}/evolution/test-gio-modules/libevolutiontestsettings.so %dir %{_libexecdir}/evolution -%{_libexecdir}/evolution/evolution-* +%{_libexecdir}/evolution/evolution-alarm-notify +%{_libexecdir}/evolution/evolution-backup %{_libexecdir}/evolution/killev +%dir %{_libdir}/evolution/web-extensions +%{_libdir}/evolution/web-extensions/libewebextension.so +%{_libdir}/evolution/web-extensions/module-itip-formatter-webextension.so +%dir %{_libdir}/evolution/web-extensions/webkit-editor +%{_libdir}/evolution/web-extensions/webkit-editor/module-webkit-editor-webextension.so %{_sysconfdir}/xdg/autostart/evolution-alarm-notify.desktop %files lang -f evolution-%evolution_base_version.lang