[mail-notification] Various fixes including evo 3.2/3.4 support

epienbro epienbro at fedoraproject.org
Sun Dec 11 11:39:54 UTC 2011


commit 035bed49a25285e8ff3384c9cc782c6ce87da414
Author: Erik van Pienbroek <epienbro at fedoraproject.org>
Date:   Sun Dec 11 12:39:04 2011 +0100

    Various fixes including evo 3.2/3.4 support
    
    - The evolution plugin is now compatible with evolution 3.2 and 3.4
    - Pack the list of evolution mail folders in a GtkScrolledWindow
    - Made the mailbox properties dialog resizable
    - Fixed a memory corruption issue in the tooltips code
    - RHBZ #682584: Use the GConf macros as mentioned at
      https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#GConf
    - Dropped ancient obsoletes tags and triggers
    - Dropped unneeded RPM tags

 mail-notification-5.4-evolution-3-0-support.patch  |  137 +++++++++++++++++++-
 mail-notification-5.4-gtk3-support.patch           |    8 +-
 ...tion-5.4-make-properties-dialog-resizable.patch |   11 ++
 ...revent-memory-corruption-in-tooltips-code.patch |   26 ++++
 mail-notification.spec                             |   57 ++++-----
 5 files changed, 200 insertions(+), 39 deletions(-)
---
diff --git a/mail-notification-5.4-evolution-3-0-support.patch b/mail-notification-5.4-evolution-3-0-support.patch
index cfef509..988b381 100644
--- a/mail-notification-5.4-evolution-3-0-support.patch
+++ b/mail-notification-5.4-evolution-3-0-support.patch
@@ -66,7 +66,7 @@
  }
 --- build/src/mn-evolution-server.c.orig	2011-02-09 00:17:38.850944227 +0100
 +++ build/src/mn-evolution-server.c	2011-02-09 22:21:54.155346478 +0100
-@@ -496,11 +496,15 @@
+@@ -496,11 +422,23 @@
  
      if (! folder)
        {
@@ -75,7 +75,15 @@
 -	      NULL,
 +        static EMailSession * session = NULL;
 +        if (!session)
-+          session = e_mail_session_new();
++          {
++#if EDS_CHECK_VERSION(3,1,0)
++            EShell *shell = e_shell_get_default();
++            EShellBackend *shell_backend = e_shell_get_backend_by_name(shell, "mail");
++            session = E_MAIL_SESSION(e_mail_backend_get_session(E_MAIL_BACKEND(shell_backend)));
++#else
++            session = e_mail_session_new();
++#endif
++          }
 +
 +        folder = e_mail_session_uri_to_folder_sync(session, uri, 0, NULL, NULL);
 +#else
@@ -114,14 +122,135 @@
  #else
 --- build/src/mn-evolution-folder-tree-server.c.orig	2011-06-17 22:01:49.226886994 +0200
 +++ build/src/mn-evolution-folder-tree-server.c	2011-06-18 00:34:23.046889847 +0200
-@@ -444,7 +444,9 @@
+@@ -29,6 +29,12 @@
+ #if !EDS_CHECK_VERSION(2,29,0)
+ #include <mail/mail-component.h>
+ #endif
++#if EDS_CHECK_VERSION(3,1,0)
++#include <mail/e-mail-folder-utils.h>
++#include <mail/e-mail-browser.h>
++#include <mail/e-mail-reader.h>
++#include <shell/e-shell.h>
++#endif
+ #include <mail/em-folder-tree.h>
+ #include "mn-evolution-plugin.h"
+ #include "mn-evolution.h"
+@@ -72,12 +78,17 @@
+ #line 70 "mn-evolution-folder-tree-server.c"
+ #line 84 "src/mn-evolution-folder-tree-server.gob"
+ static void mn_evolution_folder_tree_server_plug_destroy_h (GtkObject * object, gpointer user_data);
++#if EDS_CHECK_VERSION(3,1,0)
++static void mn_evolution_folder_tree_server_selected_h (EMFolderTree * tree, CamelStore * store, const char * folder_name, guint32 flags, gpointer user_data);
++static void mn_evolution_folder_tree_server_activated_h (EMFolderTree * tree, CamelStore * store, const char * folder_name, gpointer user_data);
++#else
+ #line 73 "mn-evolution-folder-tree-server.c"
+ #line 104 "src/mn-evolution-folder-tree-server.gob"
+ static void mn_evolution_folder_tree_server_selected_h (EMFolderTree * tree, const char * full_name, const char * uri, guint32 flags, gpointer user_data);
+ #line 76 "mn-evolution-folder-tree-server.c"
+ #line 115 "src/mn-evolution-folder-tree-server.gob"
+ static void mn_evolution_folder_tree_server_activated_h (EMFolderTree * tree, const char * full_name, const char * uri, gpointer user_data);
++#endif
+ #line 79 "mn-evolution-folder-tree-server.c"
+ 
+ /*
+@@ -444,7 +455,13 @@
  {
  #line 61 "src/mn-evolution-folder-tree-server.gob"
  	
 -#if EDS_CHECK_VERSION(2,91,0)
 +#if EDS_CHECK_VERSION(3,1,0)
-+    selfp->tree = em_folder_tree_new(NULL, NULL);
++    EShell *shell = e_shell_get_default();
++    EShellBackend *shell_backend = e_shell_get_backend_by_name(shell, "mail");
++    GtkWidget *browser = e_mail_browser_new (E_MAIL_BACKEND(shell_backend));
++    EAlertSink *alert_sink = e_mail_reader_get_alert_sink(E_MAIL_READER(browser));
++    selfp->tree = em_folder_tree_new(E_MAIL_BACKEND(shell_backend), alert_sink);
 +#elif EDS_CHECK_VERSION(2,91,0)
      selfp->session = e_mail_session_new();
      selfp->tree = em_folder_tree_new(selfp->session);
  #elif EDS_CHECK_VERSION(2,29,0)
+@@ -480,8 +497,11 @@
+ #line 80 "src/mn-evolution-folder-tree-server.gob"
+ 	
+ #if EDS_CHECK_VERSION(2,91,0)
+-    g_object_unref(selfp->session);
+-    selfp->session = NULL;
++    if (selfp->session)
++      {
++        g_object_unref(selfp->session);
++        selfp->session = NULL;
++      }
+ #endif
+     g_signal_handlers_disconnect_by_func(selfp->plug, self_plug_destroy_h, self);
+   }}
+@@ -516,6 +536,29 @@
+ #line 503 "mn-evolution-folder-tree-server.c"
+ #undef __GOB_FUNCTION__
+ 
++#if EDS_CHECK_VERSION(3,1,0)
++static void
++mn_evolution_folder_tree_server_selected_h (EMFolderTree * tree, CamelStore * store, const char * folder_name, guint32 flags, gpointer user_data)
++{
++    Self *self = user_data;
++    char *uri;
++
++    if (!folder_name) return;
++
++    uri = e_mail_folder_uri_build(store, folder_name);
++    self_folder_selected(self, uri);
++    g_free(uri);
++}
++
++static void
++mn_evolution_folder_tree_server_activated_h (EMFolderTree * tree, CamelStore * store, const char * folder_name, gpointer user_data)
++{
++    Self *self = user_data;
++    self_folder_activated(self);
++}
++
++#else
++
+ #line 104 "src/mn-evolution-folder-tree-server.gob"
+ static void 
+ mn_evolution_folder_tree_server_selected_h (EMFolderTree * tree, const char * full_name, const char * uri, guint32 flags, gpointer user_data)
+@@ -546,6 +589,8 @@
+ #line 533 "mn-evolution-folder-tree-server.c"
+ #undef __GOB_FUNCTION__
+ 
++#endif
++
+ #line 125 "src/mn-evolution-folder-tree-server.gob"
+ MNEvolutionFolderTreeServer * 
+ mn_evolution_folder_tree_server_new (guint32 id)
+--- build/src/mn-evolution-mailbox-properties.c.orig	2011-12-04 16:23:29.197007315 +0100
++++ build/src/mn-evolution-mailbox-properties.c	2011-12-04 19:11:07.103199549 +0100
+@@ -165,12 +165,20 @@
+ 
+     MNMailboxProperties *properties = MN_MAILBOX_PROPERTIES(self);
+     GtkWidget *vbox;
++    GtkWidget *scrolled_window;
+ 
+     /* translators: header capitalization */
+     vbox = mn_mailbox_properties_add_general_section(properties, _("Folder"));
+ 
+     selfp->tree = mn_evolution_folder_tree_client_new();
+-    gtk_box_pack_start(GTK_BOX(vbox), selfp->tree, TRUE, TRUE, 0);
++    
++    scrolled_window = gtk_scrolled_window_new(NULL, NULL);
++    gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(scrolled_window), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC);
++    gtk_scrolled_window_add_with_viewport(GTK_SCROLLED_WINDOW(scrolled_window), selfp->tree);
++
++    gtk_box_pack_start(GTK_BOX(vbox), scrolled_window, TRUE, TRUE, 0);
++
++    gtk_widget_show(scrolled_window);
+     gtk_widget_show(selfp->tree);
+ 
+     g_object_connect(selfp->tree,
+@@ -236,6 +244,8 @@
+     if (client->proxy)
+       org_gnome_MailNotification_Evolution_get_folder_name(client->proxy, MN_EVOLUTION_FOLDER_TREE_CLIENT(selfp->tree)->selected_uri, &name, NULL);
+ 
++    g_return_if_fail(name != NULL);
++
+     g_free(selfp->name);
+     selfp->name = name;
+ 
diff --git a/mail-notification-5.4-gtk3-support.patch b/mail-notification-5.4-gtk3-support.patch
index 6a29f86..02feada 100644
--- a/mail-notification-5.4-gtk3-support.patch
+++ b/mail-notification-5.4-gtk3-support.patch
@@ -93,15 +93,15 @@
  #include <libedataserver/eds-version.h>
  #if !EDS_CHECK_VERSION(2,29,0)
  #include <mail/mail-component.h>
-@@ -71,7 +72,7 @@
+@@ -77,7 +78,7 @@
  static void mn_evolution_folder_tree_server_finalize (MNEvolutionFolderTreeServer * self);
  #line 70 "mn-evolution-folder-tree-server.c"
  #line 84 "src/mn-evolution-folder-tree-server.gob"
 -static void mn_evolution_folder_tree_server_plug_destroy_h (GtkObject * object, gpointer user_data);
 +static void mn_evolution_folder_tree_server_plug_destroy_h (GtkWidget * object, gpointer user_data);
- #line 73 "mn-evolution-folder-tree-server.c"
- #line 104 "src/mn-evolution-folder-tree-server.gob"
- static void mn_evolution_folder_tree_server_selected_h (EMFolderTree * tree, const char * full_name, const char * uri, guint32 flags, gpointer user_data);
+ #if EDS_CHECK_VERSION(3,1,0)
+ static void mn_evolution_folder_tree_server_selected_h (EMFolderTree * tree, CamelStore * store, const char * folder_name, guint32 flags, gpointer user_data);
+ static void mn_evolution_folder_tree_server_activated_h (EMFolderTree * tree, CamelStore * store, const char * folder_name, gpointer user_data);
 @@ -456,7 +457,7 @@
      selfp->tree = em_folder_tree_new_with_model(model);
  #endif
diff --git a/mail-notification-5.4-make-properties-dialog-resizable.patch b/mail-notification-5.4-make-properties-dialog-resizable.patch
new file mode 100644
index 0000000..fafa6f2
--- /dev/null
+++ b/mail-notification-5.4-make-properties-dialog-resizable.patch
@@ -0,0 +1,11 @@
+--- build/src/mn-mailbox-properties-dialog.c.orig	2011-12-04 16:49:19.993956628 +0100
++++ build/src/mn-mailbox-properties-dialog.c	2011-12-09 01:44:12.648751032 +0100
+@@ -407,7 +409,7 @@
+ 				  "delay_scale", &selfp->delay_scale,
+ 				  NULL);
+ 
+-    gtk_window_set_resizable(GTK_WINDOW(self), FALSE);
++    gtk_window_set_resizable(GTK_WINDOW(self), TRUE);
+ 
+     if (selfp->dialog_parent)
+       gtk_window_set_transient_for(GTK_WINDOW(self), selfp->dialog_parent);
diff --git a/mail-notification-5.4-prevent-memory-corruption-in-tooltips-code.patch b/mail-notification-5.4-prevent-memory-corruption-in-tooltips-code.patch
new file mode 100644
index 0000000..308f060
--- /dev/null
+++ b/mail-notification-5.4-prevent-memory-corruption-in-tooltips-code.patch
@@ -0,0 +1,26 @@
+--- ./build/src/mn-tooltips.c.orig	2011-12-09 01:03:51.024311968 +0100
++++ ./build/src/mn-tooltips.c	2011-12-09 01:09:32.540516561 +0100
+@@ -268,17 +268,22 @@
+ {
+ #line 87 "src/mn-tooltips.gob"
+ 	
++    GSList *data_list_copy;
+     GSList *l;
+ 
+     if (selfp->timeout_id)
+       g_source_remove(selfp->timeout_id);
+ 
+-    MN_LIST_FOREACH(l, selfp->data_list)
++    /* Create a copy of the list to avoid memory corruption as the
++     * self_widget_remove call removes the item from selfp->data_list */
++    data_list_copy = g_slist_copy(selfp->data_list);
++    MN_LIST_FOREACH(l, data_list_copy)
+       {
+ 	TooltipsData *data = l->data;
+ 	self_widget_remove(data->widget, data);
+       }
+ 
++    g_slist_free(data_list_copy);
+     self_unset_window(self);
+   }}
+ #line 285 "mn-tooltips.c"
diff --git a/mail-notification.spec b/mail-notification.spec
index 81ef47f..a3600c6 100644
--- a/mail-notification.spec
+++ b/mail-notification.spec
@@ -1,6 +1,6 @@
 Name:           mail-notification
 Version:        5.4
-Release:        47%{?dist}
+Release:        48%{?dist}
 Summary:        Status icon that informs you if you have new mail
 
 Group:          Applications/Internet
@@ -21,7 +21,8 @@ Patch10:	mail-notification-5.4-gtk3-support.patch
 Patch11:	mail-notification-5.4-build-without-optimalisations.patch
 Patch12:	mail-notification-5.4-add-fallback-icon.patch
 Patch13:	popup-markup.patch
-BuildRoot:      %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+Patch14:	mail-notification-5.4-make-properties-dialog-resizable.patch
+Patch15:	mail-notification-5.4-prevent-memory-corruption-in-tooltips-code.patch
 
 BuildRequires:  gettext
 BuildRequires:  desktop-file-utils, scrollkeeper
@@ -43,8 +44,11 @@ BuildRequires:  evolution-data-server-devel >= 1.5
 # needed for the gtk-builder-convert tool
 BuildRequires:  gtk2-devel
 
+# needed for the GConf RPM macros
+BuildRequires:	GConf2
+
 # temporary to work-around some dependency issues in other packages...
-BuildRequires:  libICE-devel, libSM-devel
+#BuildRequires:  libICE-devel, libSM-devel
 
 Requires:         hicolor-icon-theme
 
@@ -102,6 +106,12 @@ Evolution support for Mail Notification.
 # Don't use <span> tags as XFCE's notification daemon doesn't understand those
 %patch13 -p1 -b .span
 
+# Make the mailbox properties dialog resizable
+%patch14 -p0 -b .properties_resizable
+
+# Prevent memory corruption in the tooltips code
+%patch15 -p0 -b .tooltips_mem_corruption
+
 #  Drop #line statements in C sources generated by .gob,
 #  for the proper debuginfo package
 pushd build/src
@@ -147,8 +157,6 @@ cat build/build.log
 
 
 %install
-rm -rf $RPM_BUILD_ROOT
-
 # For GConf apps: prevent schemas from being installed at this stage
 export GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1
 
@@ -184,22 +192,12 @@ popd
 %find_lang %{name}
 
 
-%clean
-rm -rf $RPM_BUILD_ROOT
-
-
 %pre
-if [ "$1" -gt 1 ]; then
-    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-    gconftool-2 --makefile-uninstall-rule \
-      %{_sysconfdir}/gconf/schemas/%{name}.schemas >/dev/null || :
-fi
+%gconf_schema_prepare %{name}
 
 
 %post
-export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-/usr/bin/gconftool-2 --makefile-install-rule \
-  %{_sysconfdir}/gconf/schemas/%{name}.schemas >/dev/null || :
+%gconf_schema_upgrade %{name}
 
 /usr/bin/scrollkeeper-update -q -o %{_datadir}/omf/%{name} || :
 
@@ -208,11 +206,7 @@ touch --no-create %{_datadir}/icons/hicolor || :
 
 
 %preun
-if [ "$1" -eq 0 ]; then
-    export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-    gconftool-2 --makefile-uninstall-rule \
-      %{_sysconfdir}/gconf/schemas/%{name}.schemas > /dev/null || :
-fi
+%gconf_schema_remove %{name}
 
 
 %postun
@@ -222,15 +216,7 @@ touch --no-create %{_datadir}/icons/hicolor || :
 %{_bindir}/gtk-update-icon-cache --quiet %{_datadir}/icons/hicolor || :
 
 
-%triggerpostun -- %{name} < 5.0
-#  Work-around for the broken preun scriptlets in some previous packages
-export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
-/usr/bin/gconftool-2 --makefile-install-rule \
-  %{_sysconfdir}/gconf/schemas/%{name}.schemas >/dev/null || :
-
-
 %files -f %{name}.lang
-%defattr(-,root,root,-)
 %doc AUTHORS COPYING NEWS README TODO
 %{_sysconfdir}/gconf/schemas/mail-notification.schemas
 %{_bindir}/*
@@ -244,11 +230,20 @@ export GCONF_CONFIG_SOURCE=`gconftool-2 --get-default-source`
 
 
 %files evolution-plugin
-%defattr(-,root,root,-)
 %{_libdir}/evolution/*/plugins/*
 
 
 %changelog
+* Sat Dec 12 2011 Erik van Pienbroek <epienbro at fedoraproject.org> - 5.4-48
+- The evolution plugin is now compatible with evolution 3.2 and 3.4
+- Pack the list of evolution mail folders in a GtkScrolledWindow
+- Made the mailbox properties dialog resizable
+- Fixed a memory corruption issue in the tooltips code
+- RHBZ #682584: Use the GConf macros as mentioned at 
+  https://fedoraproject.org/wiki/Packaging:ScriptletSnippets#GConf
+- Dropped ancient obsoletes tags and triggers
+- Dropped unneeded RPM tags
+
 * Thu Nov 24 2011 Erik van Pienbroek <epienbro at fedoraproject.org> - 5.4-47
 - Fixed compatibility with latest evolution
 


More information about the scm-commits mailing list