diff --git a/SOURCES/evolution-3.22.6-gtype-init-workaround.patch b/SOURCES/evolution-3.22.6-gtype-init-workaround.patch new file mode 100644 index 0000000..a51e644 --- /dev/null +++ b/SOURCES/evolution-3.22.6-gtype-init-workaround.patch @@ -0,0 +1,30 @@ +diff -up evolution-3.22.6/calendar/alarm-notify/notify-main.c.gtype-init-workaround evolution-3.22.6/calendar/alarm-notify/notify-main.c +--- evolution-3.22.6/calendar/alarm-notify/notify-main.c.gtype-init-workaround 2017-11-14 11:55:40.525214399 +0100 ++++ evolution-3.22.6/calendar/alarm-notify/notify-main.c 2017-11-14 11:56:58.471213321 +0100 +@@ -68,6 +68,11 @@ main (gint argc, + bind_textdomain_codeset (GETTEXT_PACKAGE, "UTF-8"); + textdomain (GETTEXT_PACKAGE); + ++ /* Workaround https://bugzilla.gnome.org/show_bug.cgi?id=674885 */ ++ g_type_ensure (G_TYPE_DBUS_CONNECTION); ++ g_type_ensure (G_TYPE_DBUS_PROXY); ++ g_type_ensure (G_BUS_TYPE_SESSION); ++ + gtk_init (&argc, &argv); + + alarm_notify_service = alarm_notify_new (NULL, &error); +diff -up evolution-3.22.6/shell/main.c.gtype-init-workaround evolution-3.22.6/shell/main.c +--- evolution-3.22.6/shell/main.c.gtype-init-workaround 2017-11-14 11:55:40.525214399 +0100 ++++ evolution-3.22.6/shell/main.c 2017-11-14 11:57:34.104212829 +0100 +@@ -459,6 +459,11 @@ main (gint argc, + /* Initialize timezone specific global variables */ + tzset (); + ++ /* Workaround https://bugzilla.gnome.org/show_bug.cgi?id=674885 */ ++ g_type_ensure (G_TYPE_DBUS_CONNECTION); ++ g_type_ensure (G_TYPE_DBUS_PROXY); ++ g_type_ensure (G_BUS_TYPE_SESSION); ++ + /* The contact maps feature uses clutter-gtk. */ + #ifdef WITH_CONTACT_MAPS + success = gtk_clutter_init_with_args ( diff --git a/SOURCES/evolution-3.22.6-indefinite-message-download.patch b/SOURCES/evolution-3.22.6-indefinite-message-download.patch new file mode 100644 index 0000000..7fafab1 --- /dev/null +++ b/SOURCES/evolution-3.22.6-indefinite-message-download.patch @@ -0,0 +1,25 @@ +diff -up evolution-3.22.6/e-util/e-table-selection-model.c.indefinite-message-download evolution-3.22.6/e-util/e-table-selection-model.c +--- evolution-3.22.6/e-util/e-table-selection-model.c.indefinite-message-download 2014-03-24 10:25:23.000000000 +0100 ++++ evolution-3.22.6/e-util/e-table-selection-model.c 2017-10-19 17:51:10.488332515 +0200 +@@ -127,8 +127,8 @@ model_changed_idle (ETableSelectionModel + g_free (save_id); + } + free_hash (etsm); +- e_selection_model_cursor_changed (E_SELECTION_MODEL (etsm), cursor_row, cursor_col); + e_selection_model_selection_changed (E_SELECTION_MODEL (etsm)); ++ e_selection_model_cursor_changed (E_SELECTION_MODEL (etsm), cursor_row, cursor_col); + } + etsm->model_changed_idle_id = 0; + return FALSE; +diff -up evolution-3.22.6/mail/message-list.c.indefinite-message-download evolution-3.22.6/mail/message-list.c +--- evolution-3.22.6/mail/message-list.c.indefinite-message-download 2017-01-13 16:06:56.000000000 +0100 ++++ evolution-3.22.6/mail/message-list.c 2017-10-19 17:51:14.995332453 +0200 +@@ -5056,7 +5056,7 @@ on_selection_changed_cmd (ETree *tree, + * is also used for other updating. If it is empty, it might just be a setup event + * from etree which we do need to ignore */ + if ((newuid == NULL && message_list->cursor_uid == NULL && selected_count == 0) || +- (message_list->last_sel_single && selected_count == 1 && newuid != NULL && message_list->cursor_uid != NULL && !strcmp (message_list->cursor_uid, newuid))) { ++ (message_list->last_sel_single && selected_count == 1 && message_list->cursor_uid != NULL && (newuid == NULL || !strcmp (message_list->cursor_uid, newuid)))) { + /* noop */ + } else { + g_free (message_list->cursor_uid); diff --git a/SOURCES/evolution-3.22.6-wayland-hidden-menu-interact.patch b/SOURCES/evolution-3.22.6-wayland-hidden-menu-interact.patch new file mode 100644 index 0000000..4c06ab7 --- /dev/null +++ b/SOURCES/evolution-3.22.6-wayland-hidden-menu-interact.patch @@ -0,0 +1,83 @@ +diff -up evolution-3.22.6/shell/e-shell-window-private.c.wayland-hidden-menu-interact evolution-3.22.6/shell/e-shell-window-private.c +--- evolution-3.22.6/shell/e-shell-window-private.c.wayland-hidden-menu-interact 2017-11-16 13:59:52.598583231 +0100 ++++ evolution-3.22.6/shell/e-shell-window-private.c 2017-11-16 13:59:52.630583230 +0100 +@@ -261,7 +261,29 @@ delayed_menubar_show_cb (gpointer user_d + main_menu = e_shell_window_get_managed_widget (shell_window, "/main-menu"); + + gtk_widget_show (main_menu); +- gtk_widget_grab_focus (main_menu); ++ } ++ ++ return FALSE; ++} ++ ++static gboolean ++delayed_menubar_hide_cb (gpointer user_data) ++{ ++ EShellWindow *shell_window = user_data; ++ ++ g_return_val_if_fail (E_IS_SHELL_WINDOW (shell_window), FALSE); ++ ++ shell_window->priv->delayed_menubar_hide_id = 0; ++ ++ if (!e_shell_window_get_menubar_visible (shell_window) && ++ !shell_window->priv->delayed_menubar_show_id) { ++ GtkWidget *main_menu; ++ ++ main_menu = e_shell_window_get_managed_widget (shell_window, "/main-menu"); ++ ++ if (gtk_widget_get_visible (main_menu) && ++ !gtk_menu_shell_get_selected_item (GTK_MENU_SHELL (main_menu))) ++ gtk_widget_hide (main_menu); + } + + return FALSE; +@@ -295,6 +317,11 @@ e_shell_window_event_after_cb (EShellWin + + if ((key_event->keyval == GDK_KEY_Alt_L || key_event->keyval == GDK_KEY_Alt_R) && + !(key_event->state & (GDK_SHIFT_MASK | GDK_CONTROL_MASK | GDK_SUPER_MASK | GDK_HYPER_MASK | GDK_META_MASK))) { ++ if (shell_window->priv->delayed_menubar_hide_id) { ++ g_source_remove (shell_window->priv->delayed_menubar_hide_id); ++ shell_window->priv->delayed_menubar_hide_id = 0; ++ } ++ + if (shell_window->priv->delayed_menubar_show_id) { + g_source_remove (shell_window->priv->delayed_menubar_show_id); + shell_window->priv->delayed_menubar_show_id = 0; +@@ -312,8 +339,11 @@ e_shell_window_event_after_cb (EShellWin + shell_window->priv->delayed_menubar_show_id = 0; + } + +- if (gtk_widget_get_visible (main_menu)) +- gtk_widget_hide (main_menu); ++ if (gtk_widget_get_visible (main_menu) && ++ !shell_window->priv->delayed_menubar_hide_id) { ++ shell_window->priv->delayed_menubar_hide_id = ++ e_named_timeout_add (500, delayed_menubar_hide_cb, shell_window); ++ } + } + } + +@@ -618,6 +648,11 @@ e_shell_window_private_dispose (EShellWi + priv->delayed_menubar_show_id = 0; + } + ++ if (priv->delayed_menubar_hide_id) { ++ g_source_remove (priv->delayed_menubar_hide_id); ++ priv->delayed_menubar_hide_id = 0; ++ } ++ + /* Need to disconnect handlers before we unref the shell. */ + if (priv->signal_handler_ids != NULL) { + GArray *array = priv->signal_handler_ids; +diff -up evolution-3.22.6/shell/e-shell-window-private.h.wayland-hidden-menu-interact evolution-3.22.6/shell/e-shell-window-private.h +--- evolution-3.22.6/shell/e-shell-window-private.h.wayland-hidden-menu-interact 2017-11-16 13:59:52.630583230 +0100 ++++ evolution-3.22.6/shell/e-shell-window-private.h 2017-11-16 14:01:12.261582129 +0100 +@@ -98,6 +98,7 @@ struct _EShellWindowPrivate { + guint is_main_instance : 1; + + gulong delayed_menubar_show_id; ++ gulong delayed_menubar_hide_id; + }; + + void e_shell_window_private_init (EShellWindow *shell_window); diff --git a/SPECS/evolution.spec b/SPECS/evolution.spec index c57a9c7..a5c4396 100644 --- a/SPECS/evolution.spec +++ b/SPECS/evolution.spec @@ -16,6 +16,7 @@ %define last_anjal_version 0.3.2-3 %define last_libgal2_version 2:2.5.3-2 %define last_evo_nm_version 3.5.0 +%define last_evo_perl_version 3.21.90 %define ldap_support 1 %define libnotify_support 1 @@ -30,7 +31,7 @@ Name: evolution Version: 3.22.6 -Release: 10%{?dist} +Release: 14%{?dist} Group: Applications/Productivity Summary: Mail and calendar client for GNOME License: GPLv2+ and GFDL @@ -41,6 +42,7 @@ Source: http://download.gnome.org/sources/%{name}/3.22/%{name}-%{version}.tar.xz Obsoletes: anjal <= %{last_anjal_version} Obsoletes: libgal2 <= %{last_libgal2_version} Obsoletes: evolution-NetworkManager < %{last_evo_nm_version} +Obsoletes: evolution-perl < %{last_evo_perl_version} ### Patches ### @@ -77,6 +79,15 @@ Patch11: evolution-3.22.6-comp-editor-changed.patch # RH bug #1444073 Patch12: evolution-3.22.6-folder-changed-blocked.patch +# RH bug #1449283 +Patch13: evolution-3.22.6-indefinite-message-download.patch + +# RH bug #1512859 +Patch14: evolution-3.22.6-gtype-init-workaround.patch + +# RH bug #1513962 +Patch15: evolution-3.22.6-wayland-hidden-menu-interact.patch + ## Dependencies ### Requires: gvfs @@ -246,6 +257,9 @@ This package contains the plugin to import Microsoft Personal Storage Table %patch10 -p1 -b .calendar-print-action %patch11 -p1 -b .comp-editor-changed %patch12 -p1 -b .folder-changed-blocked +%patch13 -p1 -b .indefinite-message-download +%patch14 -p1 -b .gtype-init-workaround +%patch15 -p1 -b .wayland-hidden-menu-interact # Remove the welcome email from Novell for inbox in mail/default/*/Inbox; do @@ -575,6 +589,18 @@ rm -rf $RPM_BUILD_ROOT #%{_datadir}/installed-tests %changelog +* Mon Jan 22 2018 Milan Crha - 3.22.6-14 +- Obsolete evolution-perl subpackage (RH bug #1516655) + +* Thu Nov 16 2017 Milan Crha - 3.22.6-13 +- Add patch for RH bug #1513962 ([Wayland] Alt-shown hidden menubar cannot be interacted with) + +* Thu Nov 16 2017 Milan Crha - 3.22.6-12 +- Add patch for RH bug #1512859 (Add workaround for glib type init deadlock) + +* Thu Oct 19 2017 Milan Crha - 3.22.6-11 +- Add patch for RH bug #1449283 (Repeated IMAP message download during folder update) + * Mon May 29 2017 Milan Crha - 3.22.6-10 - Add patch for RH bug #1444073 (Folders do not show correct unread message count)