summarylogtreecommitdiffstats
diff options
context:
space:
mode:
authorMantas Mikulėnas2015-07-15 13:26:54 +0300
committerMantas Mikulėnas2015-07-15 14:02:42 +0300
commit4bc5262818f2aff29065913c55f8b6656c817488 (patch)
treeaf5ef1c8882a7b948d2efbef5da12633d7390efb
downloadaur-4bc5262818f2aff29065913c55f8b6656c817488.tar.gz
initial import
-rw-r--r--.SRCINFO58
-rw-r--r--PKGBUILD85
-rw-r--r--dont-update-cache.patch22
-rw-r--r--mail-notification-5.4-add-fallback-icon.patch16
-rw-r--r--mail-notification-5.4-camel_headers.patch36
-rw-r--r--mail-notification-5.4-evolution-3-0-support.patch122
-rw-r--r--mail-notification-5.4-evolution-gtkhtml.patch12
-rw-r--r--mail-notification-5.4-evolution.patch244
-rw-r--r--mail-notification-5.4-gmime.patch63
-rw-r--r--mail-notification-5.4-gtk3-support.patch1416
-rw-r--r--mail-notification-5.4-icons.patch39
-rw-r--r--mail-notification-5.4-kde-trayicon.patch72
-rw-r--r--mail-notification-5.4-libx11.patch13
-rw-r--r--mail-notification-5.4-popup-attach.patch45
-rw-r--r--mail-notification-5.4-sasl_encode64.patch24
-rw-r--r--mail-notification-5.4-weak.patch11
-rw-r--r--mail-notification.install24
-rw-r--r--remove-ubuntu-special-case.patch33
18 files changed, 2335 insertions, 0 deletions
diff --git a/.SRCINFO b/.SRCINFO
new file mode 100644
index 000000000000..23d5befb931e
--- /dev/null
+++ b/.SRCINFO
@@ -0,0 +1,58 @@
+pkgbase = mail-notification
+ pkgdesc = Tray icon application that informs you if you have new mail
+ pkgver = 5.4
+ pkgrel = 10
+ url = http://www.nongnu.org/mailnotify/
+ install = mail-notification.install
+ arch = i686
+ arch = x86_64
+ license = GPL3
+ license = FDL
+ makedepends = gob2
+ makedepends = intltool
+ makedepends = evolution
+ makedepends = gnome-doc-utils
+ makedepends = gtk2
+ depends = gmime
+ depends = libnotify
+ depends = gnome-keyring
+ depends = hicolor-icon-theme
+ depends = notification-daemon
+ depends = libgnome
+ options = !libtool
+ options = !emptydirs
+ source = http://savannah.nongnu.org/download/mailnotify-orig/mail-notification-5.4.tar.bz2
+ source = dont-update-cache.patch
+ source = remove-ubuntu-special-case.patch
+ source = mail-notification-5.4-evolution.patch
+ source = mail-notification-5.4-sasl_encode64.patch
+ source = mail-notification-5.4-evolution-gtkhtml.patch
+ source = mail-notification-5.4-camel_headers.patch
+ source = mail-notification-5.4-icons.patch
+ source = mail-notification-5.4-weak.patch
+ source = mail-notification-5.4-popup-attach.patch
+ source = mail-notification-5.4-kde-trayicon.patch
+ source = mail-notification-5.4-evolution-3-0-support.patch
+ source = mail-notification-5.4-gtk3-support.patch
+ source = mail-notification-5.4-add-fallback-icon.patch
+ source = mail-notification-5.4-gmime.patch
+ source = mail-notification-5.4-libx11.patch
+ md5sums = c8dc33a61251acb5474e56eab6b18f43
+ md5sums = 6007bc30e789dab0a8282038e0335eb9
+ md5sums = 9cadd61bbd9c324b2916ec980231e0f2
+ md5sums = aa6f80820899f904c25988772f70ade9
+ md5sums = 125513ed059f62469377eb0ab794dbed
+ md5sums = c595a3962ab13a65be24a941e28faa9c
+ md5sums = f79939f593b2e8659e302df72c2b54b1
+ md5sums = 244b7ef2aec7656e8df390be87c10e2b
+ md5sums = 31bde95dfd39449959d8b3316f91429c
+ md5sums = cdead6a88d1779f69a5f40dc75d5cb84
+ md5sums = c7991b831834724eddc1c6802c3e06a6
+ md5sums = b370b1085ebb2814bd5d345a6d2b45ea
+ md5sums = 1ba948759110787dd57097cff157b75a
+ md5sums = 09df61b4dc29c676ac81ff9054e840ac
+ md5sums = 0944695e9b9b30f39028f85c83c6a7e2
+ md5sums = c3f643ef16aab3b4fe9ff5b333bff41a
+
+pkgname = mail-notification
+
diff --git a/PKGBUILD b/PKGBUILD
new file mode 100644
index 000000000000..2ac67cd8eda6
--- /dev/null
+++ b/PKGBUILD
@@ -0,0 +1,85 @@
+# $Id: PKGBUILD 146720 2012-01-16 19:50:57Z dreisner $
+# Maintainer: Roman Kyrylych <roman@archlinux.org>
+
+pkgname=mail-notification
+pkgver=5.4
+pkgrel=10
+pkgdesc="Tray icon application that informs you if you have new mail"
+arch=('i686' 'x86_64')
+url="http://www.nongnu.org/mailnotify/"
+license=('GPL3' 'FDL')
+depends=('gmime' 'libnotify' 'gnome-keyring' 'hicolor-icon-theme' 'notification-daemon' 'libgnome')
+makedepends=('gob2' 'intltool' 'evolution' 'gnome-doc-utils' 'gtk2')
+options=('!libtool' '!emptydirs')
+install=mail-notification.install
+source=(http://savannah.nongnu.org/download/mailnotify-orig/${pkgname}-${pkgver}.tar.bz2
+ dont-update-cache.patch
+ remove-ubuntu-special-case.patch
+ mail-notification-5.4-evolution.patch
+ mail-notification-5.4-sasl_encode64.patch
+ mail-notification-5.4-evolution-gtkhtml.patch
+ mail-notification-5.4-camel_headers.patch
+ mail-notification-5.4-icons.patch
+ mail-notification-5.4-weak.patch
+ mail-notification-5.4-popup-attach.patch
+ mail-notification-5.4-kde-trayicon.patch
+ mail-notification-5.4-evolution-3-0-support.patch
+ mail-notification-5.4-gtk3-support.patch
+ mail-notification-5.4-add-fallback-icon.patch
+ mail-notification-5.4-gmime.patch
+ mail-notification-5.4-libx11.patch)
+md5sums=('c8dc33a61251acb5474e56eab6b18f43'
+ '6007bc30e789dab0a8282038e0335eb9'
+ '9cadd61bbd9c324b2916ec980231e0f2'
+ 'aa6f80820899f904c25988772f70ade9'
+ '125513ed059f62469377eb0ab794dbed'
+ 'c595a3962ab13a65be24a941e28faa9c'
+ 'f79939f593b2e8659e302df72c2b54b1'
+ '244b7ef2aec7656e8df390be87c10e2b'
+ '31bde95dfd39449959d8b3316f91429c'
+ 'cdead6a88d1779f69a5f40dc75d5cb84'
+ 'c7991b831834724eddc1c6802c3e06a6'
+ 'b370b1085ebb2814bd5d345a6d2b45ea'
+ '1ba948759110787dd57097cff157b75a'
+ '09df61b4dc29c676ac81ff9054e840ac'
+ '0944695e9b9b30f39028f85c83c6a7e2'
+ 'c3f643ef16aab3b4fe9ff5b333bff41a')
+
+build() {
+ cd "${srcdir}/${pkgname}-${pkgver}"
+
+ patch -Np0 -i "${srcdir}/dont-update-cache.patch"
+ patch -Np0 -i "${srcdir}/remove-ubuntu-special-case.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-evolution.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-sasl_encode64.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-evolution-gtkhtml.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-camel_headers.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-icons.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-weak.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-popup-attach.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-kde-trayicon.patch"
+ patch -Np0 -i "${srcdir}/mail-notification-5.4-evolution-3-0-support.patch"
+ patch -Np0 -i "${srcdir}/mail-notification-5.4-gtk3-support.patch"
+ patch -Np0 -i "${srcdir}/mail-notification-5.4-add-fallback-icon.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-gmime.patch"
+ patch -Np1 -i "${srcdir}/mail-notification-5.4-libx11.patch"
+
+ gtk-builder-convert ui/mailbox-properties-dialog.glade ui/mailbox-properties-dialog.ui
+ gtk-builder-convert ui/properties-dialog.glade ui/properties-dialog.ui
+
+ ./jb configure prefix=/usr sysconfdir=/etc \
+ localstatedir=/var destdir="${pkgdir}" \
+ gconf-schemas-dir=/etc/gconf/schemas install-gconf-schemas=no \
+ cflags="${CFLAGS}" cppflags="${CXXFLAGS}" ldflags="${LDFLAGS}" \
+ library-mode=0755
+ ./jb build
+ GCONF_DISABLE_MAKEFILE_SCHEMA_INSTALL=1 ./jb install
+
+ rm -f "${pkgdir}/usr/share/mail-notification/"*.glade
+ install -m644 ui/mailbox-properties-dialog.ui "${pkgdir}/usr/share/mail-notification/"
+ install -m644 ui/properties-dialog.ui "${pkgdir}/usr/share/mail-notification/"
+
+ install -m755 -d "${pkgdir}/usr/share/gconf/schemas"
+ gconf-merge-schema ${pkgdir}/usr/share/gconf/schemas/${pkgname}.schemas --domain mail-notification ${pkgdir}/etc/gconf/schemas/*.schemas
+ rm -f ${pkgdir}/etc/gconf/schemas/*.schemas
+}
diff --git a/dont-update-cache.patch b/dont-update-cache.patch
new file mode 100644
index 000000000000..81216835efa1
--- /dev/null
+++ b/dont-update-cache.patch
@@ -0,0 +1,22 @@
+--- jbsrc/jb.c.~1~ 2008-03-20 16:53:02.000000000 +0100
++++ jbsrc/jb.c 2008-03-26 20:51:45.641363619 +0100
+@@ -327,7 +327,6 @@
+ jb_package_add_resources (void)
+ {
+ JBGroup *group;
+- JBRule *rule;
+ JBObject *object;
+
+ if (jb_variable_get_bool("compile-warnings"))
+@@ -362,11 +361,6 @@
+ if (jb_variable_get_bool("hotmail"))
+ jb_group_add_data_file(group, "hotmail.png", "$pkgdatadir");
+
+- rule = jb_rule_new();
+- jb_rule_set_install_message(rule, "updating the GTK+ icon cache");
+- jb_rule_add_install_command(rule, "-gtk-update-icon-cache -f -t $datadir/icons/hicolor");
+- jb_group_add_resource(group, JB_GROUP_RESOURCE(rule));
+-
+ jb_group_add(group);
+
+ /*** data ******************************************************************/
diff --git a/mail-notification-5.4-add-fallback-icon.patch b/mail-notification-5.4-add-fallback-icon.patch
new file mode 100644
index 000000000000..41c28e870fdc
--- /dev/null
+++ b/mail-notification-5.4-add-fallback-icon.patch
@@ -0,0 +1,16 @@
+--- src/mn-stock.c.orig 2011-02-17 17:42:39.886767087 +0100
++++ src/mn-stock.c 2011-02-17 17:49:37.415541177 +0100
+@@ -86,6 +86,13 @@
+ gtk_icon_source_set_icon_name(icon_source, icons[i].icon_name);
+ gtk_icon_set_add_source(icon_set, icon_source);
+ gtk_icon_source_free(icon_source);
++
++ /* Add a fallback icon */
++ icon_source = gtk_icon_source_new();
++ gtk_icon_source_set_icon_name(icon_source, "mail-notification");
++ gtk_icon_source_set_state_wildcarded(icon_source, TRUE);
++ gtk_icon_set_add_source(icon_set, icon_source);
++ gtk_icon_source_free(icon_source);
+ }
+ else if (icons[i].source_stock_id)
+ {
diff --git a/mail-notification-5.4-camel_headers.patch b/mail-notification-5.4-camel_headers.patch
new file mode 100644
index 000000000000..861e3d215cc9
--- /dev/null
+++ b/mail-notification-5.4-camel_headers.patch
@@ -0,0 +1,36 @@
+diff -Nrbu mail-notification-5.4/build/src/mn-evolution-message.c mail-notification-5.4-OK/build/src/mn-evolution-message.c
+--- mail-notification-5.4/build/src/mn-evolution-message.c 2008-05-22 19:47:51.000000000 +0400
++++ mail-notification-5.4-OK/build/src/mn-evolution-message.c 2010-05-04 18:13:31.000000000 +0400
+@@ -25,7 +25,7 @@
+ #line 24 "src/mn-evolution-message.gob"
+
+ #include <glib/gi18n.h>
+-#include <camel/camel-folder-summary.h>
++#include <camel/camel.h>
+ #include "mn-evolution-mailbox.h"
+ #include "mn-message-private.h"
+ #include "mn-evolution-client.h"
+diff -Nrbu mail-notification-5.4/build/src/mn-evolution-server.c mail-notification-5.4-OK/build/src/mn-evolution-server.c
+--- mail-notification-5.4/build/src/mn-evolution-server.c 2010-05-04 18:12:56.000000000 +0400
++++ mail-notification-5.4-OK/build/src/mn-evolution-server.c 2010-05-04 18:13:39.000000000 +0400
+@@ -28,7 +28,7 @@
+ #include <libintl.h>
+ #include <gobject/gvaluecollector.h>
+ #include <libedataserver/eds-version.h>
+-#include <camel/camel-folder.h>
++#include <camel/camel.h>
+ #if EDS_CHECK_VERSION(2,29,0)
+ #include <shell/e-shell.h>
+ #include <mail/e-mail-browser.h>
+diff -Nrbu mail-notification-5.4/src/mn-evolution-plugin.c mail-notification-5.4-OK/src/mn-evolution-plugin.c
+--- mail-notification-5.4/src/mn-evolution-plugin.c 2010-05-04 18:12:56.000000000 +0400
++++ mail-notification-5.4-OK/src/mn-evolution-plugin.c 2010-05-04 18:13:20.000000000 +0400
+@@ -24,7 +24,7 @@
+ #include <dbus/dbus.h>
+ #include <dbus/dbus-glib-lowlevel.h>
+ #include <dbus/dbus-glib-bindings.h>
+-#include <camel/camel-folder.h>
++#include <camel/camel.h>
+ #include <mail/em-event.h>
+ #include <mail/mail-tools.h>
+ #include "mn-evolution.h"
diff --git a/mail-notification-5.4-evolution-3-0-support.patch b/mail-notification-5.4-evolution-3-0-support.patch
new file mode 100644
index 000000000000..51938b5fa3be
--- /dev/null
+++ b/mail-notification-5.4-evolution-3-0-support.patch
@@ -0,0 +1,122 @@
+--- jbsrc/lib/src/extras/jb-evolution-plugin.c.evolution30 2011-02-02 00:09:33.945696868 +0100
++++ jbsrc/lib/src/extras/jb-evolution-plugin.c 2011-02-02 00:28:09.096275028 +0100
+@@ -41,7 +41,7 @@
+ if (! minversion)
+ minversion = "2.12";
+
+- packages = g_strdup_printf("evolution-plugin >= %s libgtkhtml-3.15 gtkhtml-editor-3.14", minversion);
++ packages = g_strdup_printf("evolution-plugin-3.0 >= %s libgtkhtml-4.0 gtkhtml-editor-4.0", minversion);
+ result = jb_check_packages("Evolution", "evolution-plugin", packages);
+ g_free(packages);
+
+@@ -53,7 +53,7 @@
+ char *plugindir;
+
+ jb_message_checking("for the Evolution plugin directory");
+- plugindir = jb_get_package_variable("evolution-plugin", "plugindir");
++ plugindir = jb_get_package_variable("evolution-plugin-3.0", "plugindir");
+ jb_message_result_string(plugindir ? plugindir : "not found");
+
+ if (! plugindir)
+--- src/mn-evolution-plugin.c.orig 2011-02-09 00:07:37.422002566 +0100
++++ src/mn-evolution-plugin.c 2011-02-09 00:12:43.652678682 +0100
+@@ -25,6 +25,7 @@
+ #include <dbus/dbus-glib-lowlevel.h>
+ #include <dbus/dbus-glib-bindings.h>
+ #include <camel/camel.h>
++#include <libedataserver/eds-version.h>
+ #include <mail/em-event.h>
+ #include <mail/mail-tools.h>
+ #include "mn-evolution.h"
+@@ -240,7 +241,11 @@
+ EMEventTargetFolder *folder)
+ {
+ if (evo_server)
++#if EDS_CHECK_VERSION(3,1,0)
++ mn_evolution_server_folder_changed(evo_server, e_mail_folder_uri_build(folder->store, folder->folder_name));
++#else
+ mn_evolution_server_folder_changed(evo_server, folder->uri);
++#endif
+ }
+
+ void
+@@ -249,10 +250,16 @@
+ {
+ if (evo_server)
+ {
+- char *url;
++#if EDS_CHECK_VERSION(2,91,0)
++ const char *url = camel_folder_get_uri(message->folder);
++#else
++ char *url = mail_tools_folder_to_url(message->folder);
++#endif
+
+- url = mail_tools_folder_to_url(message->folder);
+ mn_evolution_server_message_reading(evo_server, url);
++
++#if !EDS_CHECK_VERSION(2,91,0)
+ g_free(url);
++#endif
+ }
+ }
+--- 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 @@
+
+ if (! folder)
+ {
+- folder = mail_tool_uri_to_folder(uri, 0,
+ #if EDS_CHECK_VERSION(2,91,0)
+- NULL,
++ static EMailSession * session = NULL;
++ if (!session)
++ session = e_mail_session_new();
++
++ folder = e_mail_session_uri_to_folder_sync(session, uri, 0, NULL, NULL);
++#else
++ folder = mail_tool_uri_to_folder(uri, 0, NULL);
+ #endif
+- NULL);
+ if (folder)
+ self_cache_folder(uri, folder);
+ else
+@@ -677,7 +681,12 @@
+ folder = self_lookup_folder(folder_uri, err);
+ if (folder)
+ {
++#if EDS_CHECK_VERSION(3,1,0)
++ *ret = g_strdup(camel_folder_get_display_name(folder));
++#else
+ *ret = g_strdup(camel_folder_get_name(folder));
++#endif
++
+ #if EDS_CHECK_VERSION(2,31,0)
+ g_object_unref(folder);
+ #else
+@@ -725,8 +734,12 @@
+ shell = e_shell_get_default ();
+ shell_backend = e_shell_get_backend_by_name (shell, "mail");
+
+- browser = e_mail_browser_new (shell_backend);
++ browser = e_mail_browser_new (E_MAIL_BACKEND(shell_backend));
++#if EDS_CHECK_VERSION(3,1,0)
++ e_mail_reader_set_folder (E_MAIL_READER (browser), folder);
++#else
+ e_mail_reader_set_folder (E_MAIL_READER (browser), folder, folder_uri);
++#endif
+ e_mail_reader_set_message (E_MAIL_READER (browser), message_uid);
+ gtk_widget_show (browser);
+ #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 @@
+ {
+ #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);
++#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)
diff --git a/mail-notification-5.4-evolution-gtkhtml.patch b/mail-notification-5.4-evolution-gtkhtml.patch
new file mode 100644
index 000000000000..283ef36d6172
--- /dev/null
+++ b/mail-notification-5.4-evolution-gtkhtml.patch
@@ -0,0 +1,12 @@
+diff -Nrbu mail-notification-5.4/jbsrc/lib/src/extras/jb-evolution-plugin.c mail-notification-5.4-OK/jbsrc/lib/src/extras/jb-evolution-plugin.c
+--- mail-notification-5.4/jbsrc/lib/src/extras/jb-evolution-plugin.c 2008-04-27 18:47:43.000000000 +0400
++++ mail-notification-5.4-OK/jbsrc/lib/src/extras/jb-evolution-plugin.c 2009-08-21 19:48:22.000000000 +0400
+@@ -41,7 +41,7 @@
+ if (! minversion)
+ minversion = "2.12";
+
+- packages = g_strdup_printf("evolution-plugin >= %s", minversion);
++ packages = g_strdup_printf("evolution-plugin >= %s libgtkhtml-3.15 gtkhtml-editor-3.14", minversion);
+ result = jb_check_packages("Evolution", "evolution-plugin", packages);
+ g_free(packages);
+
diff --git a/mail-notification-5.4-evolution.patch b/mail-notification-5.4-evolution.patch
new file mode 100644
index 000000000000..87514c22d018
--- /dev/null
+++ b/mail-notification-5.4-evolution.patch
@@ -0,0 +1,244 @@
+diff -Nrbu mail-notification-5.4/build/src/mn-evolution-folder-tree-server.c mail-notification-5.4-OK/build/src/mn-evolution-folder-tree-server.c
+--- mail-notification-5.4/build/src/mn-evolution-folder-tree-server.c 2008-05-22 19:47:48.000000000 +0400
++++ mail-notification-5.4-OK/build/src/mn-evolution-folder-tree-server.c 2010-10-12 16:50:15.000000000 +0400
+@@ -25,7 +25,10 @@
+ #line 24 "src/mn-evolution-folder-tree-server.gob"
+
+ #include <dbus/dbus.h>
++#include <libedataserver/eds-version.h>
++#if !EDS_CHECK_VERSION(2,29,0)
+ #include <mail/mail-component.h>
++#endif
+ #include <mail/em-folder-tree.h>
+ #include "mn-evolution-plugin.h"
+ #include "mn-evolution.h"
+@@ -441,10 +444,17 @@
+ {
+ #line 61 "src/mn-evolution-folder-tree-server.gob"
+
++#if 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)
++ selfp->tree = em_folder_tree_new();
++#else
+ EMFolderTreeModel *model;
+
+ model = mail_component_peek_tree_model(mail_component_peek());
+ selfp->tree = em_folder_tree_new_with_model(model);
++#endif
+
+ selfp->plug = gtk_plug_new((GdkNativeWindow) selfp->id);
+ gtk_container_add(GTK_CONTAINER(selfp->plug), selfp->tree);
+@@ -469,6 +479,10 @@
+ {
+ #line 80 "src/mn-evolution-folder-tree-server.gob"
+
++#if EDS_CHECK_VERSION(2,91,0)
++ g_object_unref(selfp->session);
++ selfp->session = NULL;
++#endif
+ g_signal_handlers_disconnect_by_func(selfp->plug, self_plug_destroy_h, self);
+ }}
+ #line 475 "mn-evolution-folder-tree-server.c"
+diff -Nrbu mail-notification-5.4/build/src/mn-evolution-server.c mail-notification-5.4-OK/build/src/mn-evolution-server.c
+--- mail-notification-5.4/build/src/mn-evolution-server.c 2008-05-22 19:47:48.000000000 +0400
++++ mail-notification-5.4-OK/build/src/mn-evolution-server.c 2010-10-12 16:50:40.000000000 +0400
+@@ -27,12 +27,22 @@
+ #include <stdio.h>
+ #include <libintl.h>
+ #include <gobject/gvaluecollector.h>
++#include <libedataserver/eds-version.h>
+ #include <camel/camel-folder.h>
++#if EDS_CHECK_VERSION(2,29,0)
++#include <shell/e-shell.h>
++#include <mail/e-mail-browser.h>
++#else
+ #include <mail/em-folder-view.h>
+ #include <mail/em-format.h>
+ #include <mail/em-message-browser.h>
++#endif
+ #include <mail/em-utils.h>
++#if EDS_CHECK_VERSION(2,91,0)
++#include <mail/e-mail-session.h>
++#else
+ #include <mail/mail-session.h>
++#endif
+ #include <mail/mail-tools.h>
+ #include "mn-evolution.h"
+ #include "mn-evolution-folder-tree-server.h"
+@@ -391,10 +397,18 @@
+ info = g_new0(FolderInfo, 1);
+ info->uri = g_strdup(uri);
+ info->folder = folder;
++#if EDS_CHECK_VERSION(2,31,0)
++ g_object_ref(folder);
++#else
+ camel_object_ref(folder);
++#endif
+
+ /* uncache the folder when it is deleted */
++#if EDS_CHECK_VERSION(2,31,0)
++ g_signal_connect(folder, "deleted", G_CALLBACK(self_folder_deleted_cb), info);
++#else
+ camel_object_hook_event(folder, "deleted", self_folder_deleted_cb, info);
++#endif
+
+ g_hash_table_replace(folders, info->uri, info);
+ }}
+@@ -413,8 +427,13 @@
+ {
+ #line 105 "src/mn-evolution-server.gob"
+
++#if EDS_CHECK_VERSION(2,31,0)
++ g_signal_handlers_disconnect_by_func(info->folder, self_folder_deleted_cb, info);
++ g_object_unref(info->folder);
++#else
+ camel_object_unhook_event(info->folder, "deleted", self_folder_deleted_cb, info);
+ camel_object_unref(info->folder);
++#endif
+ g_free(info->uri);
+ g_free(info);
+ }}
+@@ -461,7 +480,11 @@
+ if (info)
+ {
+ folder = info->folder;
++#if EDS_CHECK_VERSION(2,31,0)
++ g_object_ref(folder);
++#else
+ camel_object_ref(folder);
++#endif
+ }
+ }
+ else
+@@ -469,7 +492,11 @@
+
+ if (! folder)
+ {
+- folder = mail_tool_uri_to_folder(uri, 0, NULL);
++ folder = mail_tool_uri_to_folder(uri, 0,
++#if EDS_CHECK_VERSION(2,91,0)
++ NULL,
++#endif
++ NULL);
+ if (folder)
+ self_cache_folder(uri, folder);
+ else
+@@ -595,14 +622,23 @@
+
+ for (i = 0; i < summary->len; i++)
+ {
++#if EDS_CHECK_VERSION(2,23,5)
++ char *uid = summary->pdata[i];
++ CamelMessageInfo *info = camel_folder_get_message_info(folder, uid);
++#else
+ CamelMessageInfo *info = summary->pdata[i];
++#endif
+
+ if ((camel_message_info_flags(info) & CAMEL_MESSAGE_SEEN) == 0)
+ g_ptr_array_add(*ret, self_camel_message_info_to_dbus_struct(info));
+ }
+
+ camel_folder_free_summary(folder, summary);
++#if EDS_CHECK_VERSION(2,31,0)
++ g_object_unref(folder);
++#else
+ camel_object_unref(folder);
++#endif
+ }
+
+ GDK_THREADS_LEAVE();
+@@ -638,7 +674,11 @@
+ if (folder)
+ {
+ *ret = g_strdup(camel_folder_get_name(folder));
++#if EDS_CHECK_VERSION(2,31,0)
++ g_object_unref(folder);
++#else
+ camel_object_unref(folder);
++#endif
+ }
+
+ GDK_THREADS_LEAVE();
+@@ -673,6 +713,19 @@
+ folder = self_lookup_folder(folder_uri, err);
+ if (folder)
+ {
++#if EDS_CHECK_VERSION(2,29,0)
++ EShell *shell;
++ EShellBackend *shell_backend;
++ GtkWidget *browser;
++
++ shell = e_shell_get_default ();
++ shell_backend = e_shell_get_backend_by_name (shell, "mail");
++
++ browser = e_mail_browser_new (shell_backend);
++ e_mail_reader_set_folder (E_MAIL_READER (browser), folder, folder_uri);
++ e_mail_reader_set_message (E_MAIL_READER (browser), message_uid);
++ gtk_widget_show (browser);
++#else
+ GtkWidget *browser;
+
+ /* modelled after Evolution's handleuri_got_folder() */
+@@ -683,8 +736,13 @@
+ em_folder_view_set_folder((EMFolderView *) browser, folder, folder_uri);
+ em_folder_view_set_message((EMFolderView *) browser, message_uid, FALSE);
+ gtk_widget_show(((EMMessageBrowser *) browser)->window);
++#endif
+
++#if EDS_CHECK_VERSION(2,31,0)
++ g_object_unref(folder);
++#else
+ camel_object_unref(folder);
++#endif
+ }
+
+ GDK_THREADS_LEAVE();
+@@ -721,7 +779,11 @@
+ if (folder)
+ {
+ status = camel_folder_set_message_flags(folder, message_uid, flags, flags);
++#if EDS_CHECK_VERSION(2,31,0)
++ g_object_unref(folder);
++#else
+ camel_object_unref(folder);
++#endif
+
+ if (! status)
+ g_set_error(err,
+diff -Nrbu mail-notification-5.4/src/mn-evolution-plugin.c mail-notification-5.4-OK/src/mn-evolution-plugin.c
+--- mail-notification-5.4/src/mn-evolution-plugin.c 2008-05-22 19:45:35.000000000 +0400
++++ mail-notification-5.4-OK/src/mn-evolution-plugin.c 2010-10-12 16:50:15.000000000 +0400
+@@ -204,7 +204,7 @@
+ }
+
+ int
+-e_plugin_lib_enable (EPluginLib *ep, int enable)
++e_plugin_lib_enable (EPlugin *ep, int enable)
+ {
+ static gboolean enabled = FALSE;
+ GError *err = NULL;
+--- mail-notification-5.4/build/src/mn-evolution-folder-tree-server-private.h.orig 2010-11-13 13:55:01.571934066 +0100
++++ mail-notification-5.4/build/src/mn-evolution-folder-tree-server-private.h 2010-11-13 13:56:07.019487418 +0100
+@@ -4,6 +4,10 @@
+ #define __MN_EVOLUTION_FOLDER_TREE_SERVER_PRIVATE_H__
+
+ #include "mn-evolution-folder-tree-server.h"
++#include <libedataserver/eds-version.h>
++#if EDS_CHECK_VERSION(2,91,0)
++#include <mail/e-mail-session.h>
++#endif
+
+ #ifdef __cplusplus
+ extern "C" {
+@@ -23,6 +23,9 @@
+ #line 41 "src/mn-evolution-folder-tree-server.gob"
+ GtkWidget * tree;
+ #line 26 "mn-evolution-folder-tree-server-private.h"
++#if EDS_CHECK_VERSION(2,91,0)
++ EMailSession * session;
++#endif
+ };
+
+ #ifdef __cplusplus
diff --git a/mail-notification-5.4-gmime.patch b/mail-notification-5.4-gmime.patch
new file mode 100644
index 000000000000..5f516a46b1a5
--- /dev/null
+++ b/mail-notification-5.4-gmime.patch
@@ -0,0 +1,63 @@
+diff -Nrbu mail-notification-5.4/build/src/mn-base-mbox-mailbox-backend.c mail-notification-5.4-OK/build/src/mn-base-mbox-mailbox-backend.c
+--- mail-notification-5.4/build/src/mn-base-mbox-mailbox-backend.c 2008-12-23 14:48:49.000000000 +0300
++++ mail-notification-5.4-OK/build/src/mn-base-mbox-mailbox-backend.c 2008-12-23 14:48:28.000000000 +0300
+@@ -265,7 +265,7 @@
+ mime_message = g_mime_parser_construct_message(parser);
+ if (mime_message)
+ {
+- if (g_mime_message_get_header(mime_message, "X-Mozilla-Status"))
++ if (g_mime_object_get_header(mime_message, "X-Mozilla-Status"))
+ {
+ #if WITH_MOZILLA
+ type = MN_TYPE_MOZILLA_MAILBOX_BACKEND;
+diff -Nrbu mail-notification-5.4/build/src/mn-mozilla-mailbox-backend.c mail-notification-5.4-OK/build/src/mn-mozilla-mailbox-backend.c
+--- mail-notification-5.4/build/src/mn-mozilla-mailbox-backend.c 2008-12-23 14:48:49.000000000 +0300
++++ mail-notification-5.4-OK/build/src/mn-mozilla-mailbox-backend.c 2008-12-23 14:46:47.000000000 +0300
+@@ -167,7 +167,7 @@
+
+ const char *header;
+
+- header = g_mime_message_get_header(mime_message, header_name);
++ header = g_mime_object_get_header(mime_message, header_name);
+ if (header && mn_str_ishex(header))
+ return strtol(header, NULL, 16);
+ else
+diff -Nrbu mail-notification-5.4/jbsrc/jb.c mail-notification-5.4-OK/jbsrc/jb.c
+--- mail-notification-5.4/jbsrc/jb.c 2008-05-22 19:47:04.000000000 +0400
++++ mail-notification-5.4-OK/jbsrc/jb.c 2008-12-23 14:43:09.000000000 +0300
+@@ -166,7 +166,7 @@
+ jb_require_packages("GNOME", "gnome", "glib-2.0 >= 2.14 gthread-2.0 gconf-2.0 >= 2.4.0 gtk+-2.0 >= 2.12 libgnomeui-2.0 >= 2.14.0 gnome-vfs-2.0 libglade-2.0 libxml-2.0 libnotify >= 0.4.1");
+ jb_require_packages("D-Bus", "dbus", "dbus-glib-1");
+
+- jb_check_packages_for_options("GMime", "gmime", "gmime-2.0 >= 2.2.7",
++ jb_check_packages_for_options("GMime", "gmime", "gmime-2.6",
+ "hotmail",
+ "imap",
+ "maildir",
+diff -Nrbu mail-notification-5.4/src/mn-message-mime.c mail-notification-5.4-OK/src/mn-message-mime.c
+--- mail-notification-5.4/src/mn-message-mime.c 2008-05-22 19:45:35.000000000 +0400
++++ mail-notification-5.4-OK/src/mn-message-mime.c 2008-12-23 14:46:35.000000000 +0300
+@@ -33,12 +33,12 @@
+ g_return_val_if_fail(GMIME_IS_MESSAGE(mime_message), FALSE);
+
+ /* SpamAssassin */
+- spam = g_mime_message_get_header(mime_message, "X-Spam-Status");
++ spam = g_mime_object_get_header(mime_message, "X-Spam-Status");
+ if (spam && mn_ascii_str_case_has_prefix(spam, "yes"))
+ return TRUE;
+
+ /* bogofilter */
+- spam = g_mime_message_get_header(mime_message, "X-Bogosity");
++ spam = g_mime_object_get_header(mime_message, "X-Bogosity");
+ if (spam && mn_ascii_str_case_has_prefix(spam, "yes"))
+ return TRUE;
+
+@@ -89,7 +89,7 @@
+ {
+ const char *status;
+
+- status = g_mime_message_get_header(mime_message, "Status");
++ status = g_mime_object_get_header(mime_message, "Status");
+ if (status && strchr(status, 'R'))
+ return NULL; /* the message was read */
+ else if (status && strchr(status, 'O'))
diff --git a/mail-notification-5.4-gtk3-support.patch b/mail-notification-5.4-gtk3-support.patch
new file mode 100644
index 000000000000..6a29f8622641
--- /dev/null
+++ b/mail-notification-5.4-gtk3-support.patch
@@ -0,0 +1,1416 @@
+--- build/src/mn-dialog.c.orig 2011-02-02 23:08:09.816659245 +0100
++++ build/src/mn-dialog.c 2011-02-02 23:09:16.988113774 +0100
+@@ -106,8 +106,7 @@
+ #line 27 "src/mn-dialog.gob"
+
+ gtk_container_set_border_width(GTK_CONTAINER(self), 5);
+- gtk_dialog_set_has_separator(GTK_DIALOG(self), FALSE);
+- gtk_box_set_spacing(GTK_BOX(GTK_DIALOG(self)->vbox), 2);
++ gtk_box_set_spacing(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(self))), 2);
+
+ #line 113 "mn-dialog.c"
+ }
+--- jbsrc/jb.c.orig 2011-02-02 23:40:33.567924712 +0100
++++ jbsrc/jb.c 2011-02-02 23:39:39.680803618 +0100
+@@ -163,7 +163,7 @@
+ {
+ jb_check_glibc();
+
+- jb_require_packages("GNOME", "gnome", "glib-2.0 >= 2.14 gthread-2.0 gconf-2.0 >= 2.4.0 gtk+-2.0 >= 2.12 libgnomeui-2.0 >= 2.14.0 gnome-vfs-2.0 libglade-2.0 libxml-2.0 libnotify >= 0.4.1");
++ jb_require_packages("GNOME", "gnome", "glib-2.0 >= 2.14 gthread-2.0 gconf-2.0 >= 2.4.0 gtk+-3.0 libgnome-2.0 >= 2.14.0 gnome-vfs-2.0 libxml-2.0 libnotify >= 0.4.1");
+ jb_require_packages("D-Bus", "dbus", "dbus-glib-1");
+
+ jb_check_packages_for_options("GMime", "gmime", "gmime-2.6",
+--- build/src/mn-file-chooser-button.c.orig 2011-02-02 23:38:01.503049512 +0100
++++ build/src/mn-file-chooser-button.c 2011-02-02 23:38:16.988222034 +0100
+@@ -358,7 +358,7 @@
+ g_signal_connect(selfp->dialog, "response", G_CALLBACK(self_response_h), self);
+ }
+
+- if (! GTK_WIDGET_VISIBLE(selfp->dialog))
++ if (! gtk_widget_get_visible(selfp->dialog))
+ {
+ GtkWindow *parent;
+
+--- build/src/mn-sound-player.c.orig 2011-02-02 23:55:02.436500397 +0100
++++ build/src/mn-sound-player.c 2011-02-02 23:55:09.125141055 +0100
+@@ -27,7 +27,7 @@
+ #include <sys/types.h>
+ #include <signal.h>
+ #include <glib/gi18n.h>
+-#include <gnome.h>
++#include <libgnome/libgnome.h>
+ #include "mn-conf.h"
+ #include "mn-locked-callback.h"
+ #include "mn-util.h"
+--- build/src/mn-file-chooser-button.c.orig 2011-02-02 23:55:21.857457045 +0100
++++ build/src/mn-file-chooser-button.c 2011-02-02 23:55:30.422996901 +0100
+@@ -25,7 +25,7 @@
+ #line 39 "src/mn-file-chooser-button.gob"
+
+ #include <glib/gi18n.h>
+-#include <gnome.h>
++#include <libgnome/libgnome.h>
+ #include "mn-util.h"
+
+ #line 32 "mn-file-chooser-button.c"
+--- build/src/mn-message.c.orig 2011-02-02 23:55:41.160420099 +0100
++++ build/src/mn-message.c 2011-02-02 23:55:47.755065850 +0100
+@@ -26,7 +26,7 @@
+
+ #include <errno.h>
+ #include <glib/gi18n.h>
+-#include <gnome.h>
++#include <libgnome/libgnome.h>
+ #include <libgnomevfs/gnome-vfs.h>
+ #include "mn-conf.h"
+ #include "mn-util.h"
+--- build/src/mn-file-chooser-button.c.orig 2011-02-03 00:15:16.178407712 +0100
++++ build/src/mn-file-chooser-button.c 2011-02-03 00:18:17.865681563 +0100
+@@ -463,6 +463,7 @@
+
+ GDK_THREADS_ENTER();
+
++#if 0
+ if (results)
+ {
+ GnomeVFSGetFileInfoResult *result = results->data;
+@@ -494,6 +495,7 @@
+ }
+ }
+ }
++#endif
+
+ selfp->async_handle = NULL;
+ g_object_unref(self);
+--- build/src/mn-evolution-folder-tree-server.c.orig 2011-02-07 20:17:09.574274620 +0100
++++ build/src/mn-evolution-folder-tree-server.c 2011-02-07 20:23:25.196053994 +0100
+@@ -25,6 +25,7 @@
+ #line 24 "src/mn-evolution-folder-tree-server.gob"
+
+ #include <dbus/dbus.h>
++#include <gtk/gtkx.h>
+ #include <libedataserver/eds-version.h>
+ #if !EDS_CHECK_VERSION(2,29,0)
+ #include <mail/mail-component.h>
+@@ -71,7 +72,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);
+@@ -456,7 +457,7 @@
+ selfp->tree = em_folder_tree_new_with_model(model);
+ #endif
+
+- selfp->plug = gtk_plug_new((GdkNativeWindow) selfp->id);
++ selfp->plug = gtk_plug_new((Window) selfp->id);
+ gtk_container_add(GTK_CONTAINER(selfp->plug), selfp->tree);
+ gtk_widget_show_all(selfp->plug);
+
+@@ -490,7 +491,7 @@
+
+ #line 84 "src/mn-evolution-folder-tree-server.gob"
+ static void
+-mn_evolution_folder_tree_server_plug_destroy_h (GtkObject * object, gpointer user_data)
++mn_evolution_folder_tree_server_plug_destroy_h (GtkWidget * object, gpointer user_data)
+ {
+ #line 482 "mn-evolution-folder-tree-server.c"
+ #define __GOB_FUNCTION__ "MN:Evolution:Folder:Tree:Server::plug_destroy_h"
+--- src/eggtrayicon.h.orig 2011-02-07 20:25:26.352057350 +0100
++++ src/eggtrayicon.h 2011-02-07 20:27:54.495032920 +0100
+@@ -23,10 +23,9 @@
+ #ifndef __EGG_TRAY_ICON_H__
+ #define __EGG_TRAY_ICON_H__
+
+-#include <gtk/gtkplug.h>
+-#ifdef GDK_WINDOWING_X11
++#include <gtk/gtk.h>
++#include <gtk/gtkx.h>
+ #include <gdk/gdkx.h>
+-#endif
+
+ G_BEGIN_DECLS
+
+--- build/src/mn-mail-icon.c.orig 2011-02-07 20:24:58.971663075 +0100
++++ build/src/mn-mail-icon.c 2011-02-07 20:30:33.714401306 +0100
+@@ -833,11 +833,13 @@
+ #line 239 "src/mn-mail-icon.gob"
+
+ GtkWidget *widget = user_data;
++ GtkAllocation allocation;
+
+- gdk_window_get_origin(widget->window, x, y);
++ gdk_window_get_origin(gtk_widget_get_window(widget), x, y);
++ gtk_widget_get_allocation(widget, &allocation);
+
+- *x += widget->allocation.x;
+- *y += widget->allocation.y;
++ *x += allocation.x;
++ *y += allocation.y;
+
+ if (*y > gdk_screen_get_height(gtk_widget_get_screen(widget)) / 2)
+ {
+@@ -847,7 +849,7 @@
+ *y -= req.height;
+ }
+ else
+- *y += widget->allocation.height;
++ *y += allocation.height;
+
+ *push_in = TRUE;
+ }}
+--- build/src/mn-mail-icon-widget.c.orig 2011-02-07 20:31:19.475816763 +0100
++++ build/src/mn-mail-icon-widget.c 2011-02-07 21:53:48.858814715 +0100
+@@ -64,9 +64,13 @@
+ #line 65 "mn-mail-icon-widget.c"
+ #line 110 "src/mn-mail-icon-widget.gob"
+ static void ___7_mn_mail_icon_widget_size_request (GtkWidget * widget, GtkRequisition * requisition);
++static void
++mn_mail_icon_widget_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width);
++static void
++mn_mail_icon_widget_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height);
+ #line 68 "mn-mail-icon-widget.c"
+ #line 132 "src/mn-mail-icon-widget.gob"
+-static gboolean ___8_mn_mail_icon_widget_expose_event (GtkWidget * widget, GdkEventExpose * event);
++static gboolean ___8_mn_mail_icon_widget_draw (GtkWidget * widget, cairo_t *cr);
+ #line 71 "mn-mail-icon-widget.c"
+ #line 244 "src/mn-mail-icon-widget.gob"
+ static GdkPixbuf * mn_mail_icon_widget_render_icon (MNMailIconWidget * self);
+@@ -187,9 +191,10 @@
+ parent_class = g_type_class_ref (GTK_TYPE_WIDGET);
+
+ #line 110 "src/mn-mail-icon-widget.gob"
+- gtk_widget_class->size_request = ___7_mn_mail_icon_widget_size_request;
++ gtk_widget_class->get_preferred_width = mn_mail_icon_widget_get_preferred_width;
++ gtk_widget_class->get_preferred_height = mn_mail_icon_widget_get_preferred_height;
+ #line 132 "src/mn-mail-icon-widget.gob"
+- gtk_widget_class->expose_event = ___8_mn_mail_icon_widget_expose_event;
++ gtk_widget_class->draw = ___8_mn_mail_icon_widget_draw;
+ #line 194 "mn-mail-icon-widget.c"
+ g_object_class->dispose = ___dispose;
+ g_object_class->finalize = ___finalize;
+@@ -234,7 +239,7 @@
+ {
+ #line 93 "src/mn-mail-icon-widget.gob"
+
+- GTK_WIDGET_SET_FLAGS(self, GTK_NO_WINDOW);
++ gtk_widget_set_has_window(GTK_WIDGET(self), FALSE);
+
+ gtk_widget_set_name(GTK_WIDGET(self), "mn-mail-icon");
+
+@@ -457,9 +462,28 @@
+ #undef __GOB_FUNCTION__
+ #undef PARENT_HANDLER
+
++static void
++mn_mail_icon_widget_get_preferred_width(GtkWidget *widget, gint *minimal_width, gint *natural_width)
++{
++ GtkRequisition requisition;
++
++ ___7_mn_mail_icon_widget_size_request (widget, &requisition);
++ *minimal_width = *natural_width = requisition.width;
++}
++
++static void
++mn_mail_icon_widget_get_preferred_height(GtkWidget *widget, gint *minimal_height, gint *natural_height)
++{
++ GtkRequisition requisition;
++
++ ___7_mn_mail_icon_widget_size_request (widget, &requisition);
++
++ *minimal_height = *natural_height = requisition.height;
++}
++
+ #line 132 "src/mn-mail-icon-widget.gob"
+ static gboolean
+-___8_mn_mail_icon_widget_expose_event (GtkWidget * widget G_GNUC_UNUSED, GdkEventExpose * event)
++___8_mn_mail_icon_widget_draw (GtkWidget * widget G_GNUC_UNUSED, cairo_t *cr)
+ #line 464 "mn-mail-icon-widget.c"
+ #define PARENT_HANDLER(___widget,___event) \
+ ((GTK_WIDGET_CLASS(parent_class)->expose_event)? \
+@@ -472,7 +496,7 @@
+
+ Self *self = SELF(widget);
+
+- if (! GTK_WIDGET_DRAWABLE(widget) || ! selfp->stock_id)
++ if (! gtk_widget_is_drawable(widget) || ! selfp->stock_id)
+ return FALSE;
+
+ if (selfp->is_on)
+@@ -480,23 +504,34 @@
+ int x;
+ int y;
+ GdkRectangle image_area;
++ GtkAllocation allocation;
++ GtkRequisition requisition;
+
+ /* note: widget->requisition is the pixbuf size, see size_request() */
+
+- x = floor(widget->allocation.x + ((widget->allocation.width - widget->requisition.width) * ICON_XALIGN));
+- y = floor(widget->allocation.y + ((widget->allocation.height - widget->requisition.height) * ICON_YALIGN));
++ gtk_widget_get_allocation(widget, &allocation);
++ gtk_widget_get_requisition(widget, &requisition);
++
++ x = floor(allocation.x + ((allocation.width - requisition.width) * ICON_XALIGN));
++ y = floor(allocation.y + ((allocation.height - requisition.height) * ICON_YALIGN));
+
+ image_area.x = x;
+ image_area.y = y;
+- image_area.width = widget->requisition.width;
+- image_area.height = widget->requisition.height;
++ image_area.width = requisition.width;
++ image_area.height = requisition.height;
+
++#if 0
+ if (gdk_rectangle_intersect(&event->area, &image_area, &image_area))
++#endif
+ {
+ GdkPixbuf *pixbuf;
+
+ pixbuf = self_render_icon(self);
++ gdk_cairo_set_source_pixbuf(cr, pixbuf, image_area.x, image_area.y);
++ cairo_move_to(cr, image_area.x - x, image_area.y - y);
++ cairo_paint(cr);
+
++#if 0
+ gdk_draw_pixbuf(widget->window,
+ NULL,
+ pixbuf,
+@@ -509,6 +544,7 @@
+ GDK_RGB_DITHER_NORMAL,
+ 0,
+ 0);
++#endif
+
+ g_object_unref(pixbuf);
+ }
+@@ -523,13 +559,16 @@
+ int box_y;
+ int box_width;
+ int box_height;
++ GtkAllocation allocation;
++
++ gtk_widget_get_allocation(widget, &allocation);
+
+ if (! selfp->count_layout)
+ {
+ const char *size;
+ char *markup;
+
+- if (widget->allocation.height < 32)
++ if (allocation.height < 32)
+ size = "small";
+ else
+ size = "medium";
+@@ -546,17 +585,16 @@
+ box_width = count_rect.width + COUNT_BOX_XPAD * 2;
+ box_height = count_rect.height + COUNT_BOX_YPAD * 2;
+
+- box_x = widget->allocation.x + widget->allocation.width - box_width - COUNT_BOX_XMARGIN;
+- box_y = widget->allocation.y + widget->allocation.height - box_height - COUNT_BOX_YMARGIN;
++ box_x = allocation.x + allocation.width - box_width - COUNT_BOX_XMARGIN;
++ box_y = allocation.y + allocation.height - box_height - COUNT_BOX_YMARGIN;
+
+ count_x = box_x - count_rect.x + COUNT_BOX_XPAD;
+ count_y = box_y - count_rect.y + COUNT_BOX_YPAD;
+
+- gtk_paint_box(widget->style,
+- widget->window,
+- GTK_WIDGET_STATE(widget),
++ gtk_paint_box(gtk_widget_get_style(widget),
++ cr,
++ gtk_widget_get_state_flags(widget),
+ GTK_SHADOW_OUT,
+- &event->area,
+ widget,
+ NULL,
+ box_x,
+@@ -564,11 +602,10 @@
+ box_width,
+ box_height);
+
+- gtk_paint_layout(widget->style,
+- widget->window,
+- GTK_WIDGET_STATE(widget),
++ gtk_paint_layout(gtk_widget_get_style(widget),
++ cr,
++ gtk_widget_get_state_flags(widget),
+ FALSE,
+- &event->area,
+ widget,
+ NULL,
+ count_x,
+--- build/src/mn-mailbox-properties-dialog.c.orig 2011-02-07 21:57:31.257251776 +0100
++++ build/src/mn-mailbox-properties-dialog.c 2011-02-07 21:56:56.989854854 +0100
+@@ -456,7 +456,7 @@
+ MNMailboxProperties *properties;
+
+ mn_container_create_interface(GTK_CONTAINER(self),
+- PKGDATADIR G_DIR_SEPARATOR_S "mailbox-properties-dialog.glade",
++ PKGDATADIR G_DIR_SEPARATOR_S "mailbox-properties-dialog.ui",
+ "notebook",
+ "mn_mailbox_properties_dialog_",
+ "notebook", &self->notebook,
+@@ -1290,7 +1290,7 @@
+ {
+ #line 686 "src/mn-mailbox-properties-dialog.gob"
+
+- if (GTK_WIDGET_IS_SENSITIVE(GTK_WINDOW(self)->default_widget))
++ if (gtk_widget_is_sensitive(gtk_window_get_default_widget(GTK_WINDOW(self))))
+ gtk_window_activate_default(GTK_WINDOW(self));
+ else
+ {
+@@ -1313,9 +1313,9 @@
+ if (elem->data == entry)
+ break;
+
+- if (GTK_WIDGET_MAPPED(elem->data)
+- && GTK_WIDGET_VISIBLE(elem->data)
+- && GTK_WIDGET_SENSITIVE(elem->data))
++ if (gtk_widget_get_mapped(elem->data)
++ && gtk_widget_get_visible(elem->data)
++ && gtk_widget_get_sensitive(elem->data))
+ next = elem->data;
+ }
+ while (! next);
+--- build/src/mn-mailbox-view.c.orig 2011-02-07 22:18:49.962462920 +0100
++++ build/src/mn-mailbox-view.c 2011-02-07 23:01:39.990363248 +0100
+@@ -412,23 +412,23 @@
+ binding_set = gtk_binding_set_by_class(class);
+
+ /* Delete removes a row */
+- gtk_binding_entry_add_signal(binding_set, GDK_Delete, 0, "activate-remove", 0);
+- gtk_binding_entry_add_signal(binding_set, GDK_KP_Delete, 0, "activate-remove", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_Delete, 0, "activate-remove", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_KP_Delete, 0, "activate-remove", 0);
+
+ /* HIG 2.0 cut/copy/paste shortcuts */
+- gtk_binding_entry_add_signal(binding_set, GDK_x, GDK_CONTROL_MASK, "activate-cut", 0);
+- gtk_binding_entry_add_signal(binding_set, GDK_c, GDK_CONTROL_MASK, "activate-copy", 0);
+- gtk_binding_entry_add_signal(binding_set, GDK_v, GDK_CONTROL_MASK, "activate-paste", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_x, GDK_CONTROL_MASK, "activate-cut", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_c, GDK_CONTROL_MASK, "activate-copy", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_v, GDK_CONTROL_MASK, "activate-paste", 0);
+
+ /* cut/copy/paste shortcuts taken from gtkentry.c */
+- gtk_binding_entry_add_signal(binding_set, GDK_Delete, GDK_SHIFT_MASK, "activate-cut", 0);
+- gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_CONTROL_MASK, "activate-copy", 0);
+- gtk_binding_entry_add_signal(binding_set, GDK_Insert, GDK_SHIFT_MASK, "activate-paste", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_Delete, GDK_SHIFT_MASK, "activate-cut", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_Insert, GDK_CONTROL_MASK, "activate-copy", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_Insert, GDK_SHIFT_MASK, "activate-paste", 0);
+
+ /* HIG 2.0 properties */
+- gtk_binding_entry_add_signal(binding_set, GDK_Return, GDK_MOD1_MASK, "activate-properties", 0);
+- gtk_binding_entry_add_signal(binding_set, GDK_ISO_Enter, GDK_MOD1_MASK, "activate-properties", 0);
+- gtk_binding_entry_add_signal(binding_set, GDK_KP_Enter, GDK_MOD1_MASK, "activate-properties", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_Return, GDK_MOD1_MASK, "activate-properties", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_ISO_Enter, GDK_MOD1_MASK, "activate-properties", 0);
++ gtk_binding_entry_add_signal(binding_set, GDK_KEY_KP_Enter, GDK_MOD1_MASK, "activate-properties", 0);
+
+ #line 434 "mn-mailbox-view.c"
+ }
+@@ -934,14 +934,13 @@
+ #line 183 "src/mn-mailbox-view.gob"
+
+ GtkSelectionData *data;
+-
+ data = gtk_clipboard_wait_for_contents(global_clipboard, clipboard_info[TARGET_MAILBOXES].atom);
+ if (data)
+ {
+ GSList *configurations;
+ GSList *l;
+
+- memcpy(&configurations, data->data, data->length);
++ memcpy(&configurations, gtk_selection_data_get_data(data), gtk_selection_data_get_length(data));
+
+ MN_LIST_FOREACH(l, configurations)
+ {
+@@ -962,14 +961,14 @@
+ data = gtk_clipboard_wait_for_contents(global_clipboard, clipboard_info[TARGET_GNOME_COPIED_FILES].atom);
+ if (data)
+ {
+- if (data->format == 8 && data->length > 0)
++ if (gtk_selection_data_get_format(data) == 8 && gtk_selection_data_get_length(data) > 0)
+ {
+ char *gnome_copied_files;
+ gboolean status;
+ MNGnomeCopiedFilesType type;
+ GSList *uri_list;
+
+- gnome_copied_files = g_strndup(data->data, data->length);
++ gnome_copied_files = g_strndup(gtk_selection_data_get_data(data), gtk_selection_data_get_length(data));
+ status = mn_parse_gnome_copied_files(gnome_copied_files, &type, &uri_list);
+ g_free(gnome_copied_files);
+
+--- build/src/mn-shell.c.orig 2011-02-07 23:02:17.852293679 +0100
++++ build/src/mn-shell.c 2011-02-07 23:04:39.223548403 +0100
+@@ -158,7 +158,7 @@
+ static void mn_shell_icon_activate_about_h (MNMailIcon * icon, gpointer user_data);
+ #line 160 "mn-shell.c"
+ #line 499 "src/mn-shell.gob"
+-static void mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data);
++static void mn_shell_icon_destroy_h (GtkWidget * object, gpointer user_data);
+ #line 163 "mn-shell.c"
+ #line 508 "src/mn-shell.gob"
+ static void mn_shell_update_sensitivity (MNShell * self);
+@@ -1006,7 +1006,7 @@
+
+ #line 499 "src/mn-shell.gob"
+ static void
+-mn_shell_icon_destroy_h (GtkObject * object, gpointer user_data)
++mn_shell_icon_destroy_h (GtkWidget * object, gpointer user_data)
+ {
+ #line 1004 "mn-shell.c"
+ #define __GOB_FUNCTION__ "MN:Shell::icon_destroy_h"
+--- build/src/mn-text-table.c.orig 2011-02-07 23:05:08.799927792 +0100
++++ build/src/mn-text-table.c 2011-02-07 23:18:06.480056895 +0100
+@@ -69,9 +69,11 @@
+ #line 70 "mn-text-table.c"
+ #line 104 "src/mn-text-table.gob"
+ static void ___4_mn_text_table_size_request (GtkWidget * widget, GtkRequisition * requisition);
++static void mn_text_table_get_preferred_width (GtkWidget * widget, gint * minimal_width, gint * natural_width);
++static void mn_text_table_get_preferred_height (GtkWidget * widget, gint * minimal_height, gint * natural_height);
+ #line 73 "mn-text-table.c"
+ #line 115 "src/mn-text-table.gob"
+-static gboolean ___5_mn_text_table_expose_event (GtkWidget * widget, GdkEventExpose * event);
++static gboolean ___5_mn_text_table_draw (GtkWidget * widget, cairo_t *cr);
+ #line 76 "mn-text-table.c"
+ #line 165 "src/mn-text-table.gob"
+ static void mn_text_table_set_dirty (MNTextTable * self);
+@@ -188,9 +190,10 @@
+ parent_class = g_type_class_ref (GTK_TYPE_WIDGET);
+
+ #line 104 "src/mn-text-table.gob"
+- gtk_widget_class->size_request = ___4_mn_text_table_size_request;
++ gtk_widget_class->get_preferred_width = mn_text_table_get_preferred_width;
++ gtk_widget_class->get_preferred_height = mn_text_table_get_preferred_height;
+ #line 115 "src/mn-text-table.gob"
+- gtk_widget_class->expose_event = ___5_mn_text_table_expose_event;
++ gtk_widget_class->draw = ___5_mn_text_table_draw;
+ #line 257 "src/mn-text-table.gob"
+ c->clear = ___real_mn_text_table_clear;
+ #line 197 "mn-text-table.c"
+@@ -216,7 +219,7 @@
+ {
+ #line 80 "src/mn-text-table.gob"
+
+- GTK_WIDGET_SET_FLAGS(self, GTK_NO_WINDOW);
++ gtk_widget_set_has_window(GTK_WIDGET(self), FALSE);
+
+ g_object_connect(self,
+ "swapped-signal::style-set", self_context_changed, self,
+@@ -290,9 +293,29 @@
+ #undef __GOB_FUNCTION__
+ #undef PARENT_HANDLER
+
++static void
++mn_text_table_get_preferred_width (GtkWidget * widget, gint * minimal_width, gint * natural_width)
++{
++ GtkRequisition requisition;
++
++ ___4_mn_text_table_size_request (widget, &requisition);
++
++ *minimal_width = *natural_width = requisition.width;
++}
++
++static void
++mn_text_table_get_preferred_height (GtkWidget * widget, gint * minimal_height, gint * natural_height)
++{
++ GtkRequisition requisition;
++
++ ___4_mn_text_table_size_request (widget, &requisition);
++
++ *minimal_height = *natural_height = requisition.height;
++}
++
+ #line 115 "src/mn-text-table.gob"
+ static gboolean
+-___5_mn_text_table_expose_event (GtkWidget * widget G_GNUC_UNUSED, GdkEventExpose * event)
++___5_mn_text_table_draw (GtkWidget * widget G_GNUC_UNUSED, cairo_t *cr)
+ #line 297 "mn-text-table.c"
+ #define PARENT_HANDLER(___widget,___event) \
+ ((GTK_WIDGET_CLASS(parent_class)->expose_event)? \
+@@ -304,10 +327,14 @@
+ #line 117 "src/mn-text-table.gob"
+
+ Self *self = SELF(widget);
++ GtkAllocation allocation;
+ int i;
+- int y = widget->allocation.y;
++ int y;
++
++ gtk_widget_get_allocation(widget, &allocation);
++ y = 0;
+
+- if (! GTK_WIDGET_DRAWABLE(widget))
++ if (! gtk_widget_is_drawable(widget))
+ return FALSE;
+
+ self_relayout(self);
+@@ -316,7 +343,7 @@
+ {
+ Row *row = g_ptr_array_index(selfp->rows, i);
+ int j;
+- int x = widget->allocation.x;
++ int x = 0;
+ int column = 0;
+
+ MN_ARRAY_FOREACH(j, row->cells)
+@@ -324,11 +351,10 @@
+ MNTextTableCell *cell = g_ptr_array_index(row->cells, j);
+
+ if (cell->layout)
+- gtk_paint_layout(widget->style,
+- widget->window,
+- GTK_WIDGET_STATE(widget),
++ gtk_paint_layout(gtk_widget_get_style(widget),
++ cr,
++ gtk_widget_get_state_flags(widget),
+ FALSE,
+- &event->area,
+ widget,
+ NULL,
+ x,
+--- build/src/mn-tooltips.c.orig 2011-02-07 23:19:05.903761972 +0100
++++ build/src/mn-tooltips.c 2011-02-07 23:41:19.368621912 +0100
+@@ -104,7 +104,7 @@
+ static void mn_tooltips_set_tip_widget_real (MNTooltips * self, GtkWidget * widget, GtkWidget * tip_widget, int border_width);
+ #line 106 "mn-tooltips.c"
+ #line 287 "src/mn-tooltips.gob"
+-static gboolean mn_tooltips_paint_window (MNTooltips * self);
++static gboolean mn_tooltips_paint_window (MNTooltips * self, cairo_t *cr);
+ #line 109 "mn-tooltips.c"
+ #line 308 "src/mn-tooltips.gob"
+ static void mn_tooltips_draw_tips (MNTooltips * self);
+@@ -422,7 +422,13 @@
+
+ if (! selfp->window)
+ {
++ GtkStyleContext *ctx;
++
+ selfp->window = gtk_window_new(GTK_WINDOW_POPUP);
++
++ ctx = gtk_widget_get_style_context(GTK_WIDGET(selfp->window));
++ gtk_style_context_add_class(ctx, "tooltip");
++
+ self_update_screen(self, TRUE);
+ gtk_widget_set_app_paintable(selfp->window, TRUE);
+ gtk_window_set_resizable(GTK_WINDOW(selfp->window), FALSE);
+@@ -430,7 +430,7 @@
+ gtk_container_set_border_width(GTK_CONTAINER(selfp->window), selfp->border_width);
+
+ g_signal_connect_swapped(selfp->window,
+- "expose-event",
++ "draw",
+ G_CALLBACK(self_paint_window),
+ self);
+
+@@ -490,7 +490,7 @@
+
+ if (selfp->active_data
+ && selfp->active_data->widget == widget
+- && GTK_WIDGET_DRAWABLE(selfp->active_data->widget))
++ && gtk_widget_is_drawable(selfp->active_data->widget))
+ {
+ if (data->tip_widget)
+ g_object_unref(data->tip_widget);
+@@ -594,7 +594,7 @@
+
+ #line 287 "src/mn-tooltips.gob"
+ static gboolean
+-mn_tooltips_paint_window (MNTooltips * self)
++mn_tooltips_paint_window (MNTooltips * self, cairo_t *cr)
+ {
+ #line 600 "mn-tooltips.c"
+ #define __GOB_FUNCTION__ "MN:Tooltips::paint_window"
+@@ -608,18 +608,13 @@
+
+ GtkRequisition req;
+
+- gtk_widget_size_request(selfp->window, &req);
+- gtk_paint_flat_box(selfp->window->style,
+- selfp->window->window,
+- GTK_STATE_NORMAL,
+- GTK_SHADOW_OUT,
+- NULL,
+- selfp->window,
+- "tooltip",
+- 0,
+- 0,
+- req.width,
+- req.height);
++ gtk_widget_size_request(GTK_WIDGET(selfp->window), &req);
++ gtk_render_background(gtk_widget_get_style_context(GTK_WIDGET(selfp->window)),
++ cr,
++ 0,
++ 0,
++ req.width,
++ req.height);
+
+ return FALSE;
+ }}
+@@ -651,10 +650,11 @@
+ gint monitor_num, px, py;
+ GdkRectangle monitor;
+ int screen_width;
++ GtkAllocation allocation;
+
+ if (! selfp->window)
+ self_force_window(self);
+- else if (GTK_WIDGET_VISIBLE(selfp->window))
++ else if (gtk_widget_get_visible(selfp->window))
+ g_get_current_time(&selfp->last_popdown);
+
+ gtk_widget_ensure_style(selfp->window);
+@@ -670,7 +670,7 @@
+
+ data = selfp->active_data;
+
+- child = GTK_BIN(selfp->window)->child;
++ child = gtk_bin_get_child(GTK_BIN(selfp->window));
+ if (child)
+ gtk_container_remove(GTK_CONTAINER(selfp->window), child);
+
+@@ -684,14 +684,16 @@
+ w = requisition.width;
+ h = requisition.height;
+
+- gdk_window_get_origin(widget->window, &x, &y);
+- if (GTK_WIDGET_NO_WINDOW(widget))
++ gtk_widget_get_allocation(selfp->window, &allocation);
++
++ gdk_window_get_origin(gtk_widget_get_window(widget), &x, &y);
++ if (! gtk_widget_get_has_window(widget))
+ {
+- x += widget->allocation.x;
+- y += widget->allocation.y;
++ x += allocation.x;
++ y += allocation.y;
+ }
+
+- x += widget->allocation.width / 2;
++ x += allocation.width / 2;
+
+ if (! keyboard_mode)
+ gdk_window_get_pointer(gdk_screen_get_root_window(screen), &x, NULL, NULL);
+@@ -712,11 +714,11 @@
+ else if (x < monitor.x)
+ x = monitor.x;
+
+- if ((y + h + widget->allocation.height + 4) > monitor.y + monitor.height
++ if ((y + h + allocation.height + 4) > monitor.y + monitor.height
+ && (y - 4) > monitor.y)
+ y = y - h - 4;
+ else
+- y = y + widget->allocation.height + 4;
++ y = y + allocation.height + 4;
+
+ /*
+ * The following block is not part of GTK+ and has been added to
+@@ -760,7 +762,7 @@
+
+ Self *self = SELF(data);
+
+- if (selfp->active_data && GTK_WIDGET_DRAWABLE(selfp->active_data->widget))
++ if (selfp->active_data && gtk_widget_is_drawable(selfp->active_data->widget))
+ self_draw_tips(self);
+
+ selfp->timeout_id = 0;
+@@ -785,7 +787,7 @@
+
+ if (selfp->window)
+ {
+- if (GTK_WIDGET_VISIBLE(selfp->window))
++ if (gtk_widget_get_visible(selfp->window))
+ g_get_current_time(&selfp->last_popdown);
+ gtk_widget_hide(selfp->window);
+ }
+@@ -802,7 +804,7 @@
+ {
+ TooltipsData *data = l->data;
+
+- if (data->widget == widget && GTK_WIDGET_DRAWABLE(widget))
++ if (data->widget == widget && gtk_widget_is_drawable(widget))
+ {
+ selfp->active_data = data;
+ break;
+@@ -937,7 +939,7 @@
+
+ if (GTK_IS_WINDOW(toplevel))
+ {
+- GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget;
++ GtkWidget *focus = gtk_window_get_focus(GTK_WINDOW(toplevel));
+
+ g_object_set_data(G_OBJECT(toplevel), TOOLTIPS_KEYBOARD_MODE, GINT_TO_POINTER(TRUE));
+
+@@ -966,7 +968,7 @@
+
+ if (GTK_IS_WINDOW(toplevel))
+ {
+- GtkWidget *focus = GTK_WINDOW(toplevel)->focus_widget;
++ GtkWidget *focus = gtk_window_get_focus(GTK_WINDOW(toplevel));
+
+ if (focus)
+ self_hide_tip(focus);
+@@ -1057,24 +1059,24 @@
+ break;
+
+ case GDK_ENTER_NOTIFY:
+- if (! (GTK_IS_MENU_ITEM(widget) && GTK_MENU_ITEM(widget)->submenu))
++ if (! (GTK_IS_MENU_ITEM(widget) && gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget))))
+ self_start_delay(self, widget);
+ break;
+
+ case GDK_LEAVE_NOTIFY:
+ self_set_active_widget(self, NULL);
+- selfp->use_sticky_delay = selfp->window && GTK_WIDGET_VISIBLE(selfp->window);
++ selfp->use_sticky_delay = selfp->window && gtk_widget_get_visible(selfp->window);
+ break;
+
+ case GDK_MOTION_NOTIFY:
+ /* Handle menu items specially ... pend popup for each motion
+ * on other widgets, we ignore motion.
+ */
+- if (GTK_IS_MENU_ITEM(widget) && ! GTK_MENU_ITEM(widget)->submenu)
++ if (GTK_IS_MENU_ITEM(widget) && ! gtk_menu_item_get_submenu(GTK_MENU_ITEM(widget)))
+ {
+ /* Completely evil hack to make sure we get the LEAVE_NOTIFY
+ */
+- GTK_PRIVATE_SET_FLAG(widget, GTK_LEAVE_PENDING);
++ //GTK_PRIVATE_SET_FLAG(widget, GTK_LEAVE_PENDING);
+ self_set_active_widget(self, NULL);
+ self_start_delay(self, widget);
+ break;
+--- src/nautilus-cell-renderer-pixbuf-emblem.c.orig 2011-02-08 00:16:43.847831409 +0100
++++ src/nautilus-cell-renderer-pixbuf-emblem.c 2011-02-08 00:32:59.128682767 +0100
+@@ -39,17 +39,16 @@
+ GtkWidget *widget);
+ static void nautilus_cell_renderer_pixbuf_emblem_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+- GdkRectangle *rectangle,
++ const GdkRectangle *rectangle,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+ gint *height);
+ static void nautilus_cell_renderer_pixbuf_emblem_render (GtkCellRenderer *cell,
+- GdkWindow *window,
++ cairo_t *cr,
+ GtkWidget *widget,
+- GdkRectangle *background_area,
+- GdkRectangle *cell_area,
+- GdkRectangle *expose_area,
++ const GdkRectangle *background_area,
++ const GdkRectangle *cell_area,
+ GtkCellRendererState flags);
+
+ enum {
+@@ -356,7 +355,7 @@
+ static void
+ nautilus_cell_renderer_pixbuf_emblem_get_size (GtkCellRenderer *cell,
+ GtkWidget *widget,
+- GdkRectangle *cell_area,
++ const GdkRectangle *cell_area,
+ gint *x_offset,
+ gint *y_offset,
+ gint *width,
+@@ -368,6 +367,10 @@
+ gint pixbuf_height = 0;
+ gint calc_width;
+ gint calc_height;
++ int xpad;
++ int ypad;
++ gfloat xalign;
++ gfloat yalign;
+
+ if (!cellpixbuf->pixbuf && cellinfo->stock_id)
+ nautilus_cell_renderer_pixbuf_emblem_create_stock_pixbuf (cellpixbuf, widget);
+@@ -385,8 +388,11 @@
+ pixbuf_height = MAX (pixbuf_height, gdk_pixbuf_get_height (cellpixbuf->pixbuf_expander_closed));
+ }
+
+- calc_width = (gint) cell->xpad * 2 + pixbuf_width;
+- calc_height = (gint) cell->ypad * 2 + pixbuf_height;
++ gtk_cell_renderer_get_padding(cell, &xpad, &ypad);
++ gtk_cell_renderer_get_alignment(cell, &xalign, &yalign);
++
++ calc_width = (gint) xpad * 2 + pixbuf_width;
++ calc_height = (gint) ypad * 2 + pixbuf_height;
+
+ if (x_offset) *x_offset = 0;
+ if (y_offset) *y_offset = 0;
+@@ -394,14 +400,14 @@
+ if (cell_area && pixbuf_width > 0 && pixbuf_height > 0) {
+ if (x_offset) {
+ *x_offset = (((gtk_widget_get_direction (widget) == GTK_TEXT_DIR_RTL) ?
+- 1.0 - cell->xalign : cell->xalign) *
+- (cell_area->width - calc_width - 2 * cell->xpad));
+- *x_offset = MAX (*x_offset, 0) + cell->xpad;
++ 1.0 - xalign : xalign) *
++ (cell_area->width - calc_width - 2 * xpad));
++ *x_offset = MAX (*x_offset, 0) + xpad;
+ }
+ if (y_offset) {
+- *y_offset = (cell->yalign *
+- (cell_area->height - calc_height - 2 * cell->ypad));
+- *y_offset = MAX (*y_offset, 0) + cell->ypad;
++ *y_offset = (yalign *
++ (cell_area->height - calc_height - 2 * ypad));
++ *y_offset = MAX (*y_offset, 0) + ypad;
+ }
+ }
+
+@@ -414,11 +420,10 @@
+
+ static void
+ nautilus_cell_renderer_pixbuf_emblem_render (GtkCellRenderer *cell,
+- GdkWindow *window,
++ cairo_t *cr,
+ GtkWidget *widget,
+- GdkRectangle *background_area,
+- GdkRectangle *cell_area,
+- GdkRectangle *expose_area,
++ const GdkRectangle *background_area,
++ const GdkRectangle *cell_area,
+ GtkCellRendererState flags)
+
+ {
+@@ -429,13 +434,19 @@
+ GdkRectangle pix_emblem_rect;
+ GdkRectangle draw_rect;
+ gboolean stock_pixbuf = FALSE;
++ gboolean is_expander = FALSE;
++ gboolean is_expanded = FALSE;
++ int xpad;
++ int ypad;
++
++ g_object_get(cell, "is-expander", &is_expander, "is-expanded", &is_expanded, NULL);
+
+ pixbuf = cellpixbuf->pixbuf;
+- if (cell->is_expander) {
+- if (cell->is_expanded &&
++ if (is_expander) {
++ if (is_expanded &&
+ cellpixbuf->pixbuf_expander_open != NULL) {
+ pixbuf = cellpixbuf->pixbuf_expander_open;
+- } else if (!cell->is_expanded &&
++ } else if (!is_expanded &&
+ cellpixbuf->pixbuf_expander_closed != NULL) {
+ pixbuf = cellpixbuf->pixbuf_expander_closed;
+ }
+@@ -456,15 +467,20 @@
+ if (stock_pixbuf)
+ pixbuf = cellpixbuf->pixbuf;
+
++ gtk_cell_renderer_get_padding(cell, &xpad, &ypad);
++
+ pix_rect.x += cell_area->x;
+ pix_rect.y += cell_area->y;
+- pix_rect.width -= cell->xpad * 2;
+- pix_rect.height -= cell->ypad * 2;
++ pix_rect.width -= xpad * 2;
++ pix_rect.height -= ypad * 2;
+
++ if (gdk_rectangle_intersect (cell_area, &pix_rect, &draw_rect)) {
++#if 0
+ if (gdk_rectangle_intersect (cell_area, &pix_rect, &draw_rect) &&
+ gdk_rectangle_intersect (expose_area, &draw_rect, &draw_rect)) {
++
+ gdk_draw_pixbuf (window,
+- widget->style->black_gc,
++ gtk_widget_get_style(widget)->black_gc,
+ pixbuf,
+ /* pixbuf 0, 0 is at pix_rect.x, pix_rect.y */
+ draw_rect.x - pix_rect.x,
+@@ -475,6 +491,11 @@
+ draw_rect.height,
+ GDK_RGB_DITHER_NORMAL,
+ 0, 0);
++#endif
++
++ cairo_move_to (cr, draw_rect.x - pix_rect.x, draw_rect.y - pix_rect.y);
++ gdk_cairo_set_source_pixbuf (cr, pixbuf, draw_rect.x, draw_rect.y);
++ cairo_paint (cr);
+ }
+
+ if (cellpixbuf->pixbuf_emblem) {
+@@ -482,8 +503,11 @@
+ pix_emblem_rect.height = gdk_pixbuf_get_height (cellpixbuf->pixbuf_emblem);
+ pix_emblem_rect.x = pix_rect.x;
+ pix_emblem_rect.y = pix_rect.y + pix_rect.height - pix_emblem_rect.height;
++ if (gdk_rectangle_intersect (cell_area, &pix_emblem_rect, &draw_rect)) {
++#if 0
+ if (gdk_rectangle_intersect (cell_area, &pix_emblem_rect, &draw_rect) &&
+ gdk_rectangle_intersect (expose_area, &draw_rect, &draw_rect)) {
++
+ gdk_draw_pixbuf (window,
+ widget->style->black_gc,
+ cellpixbuf->pixbuf_emblem,
+@@ -496,6 +520,11 @@
+ draw_rect.height,
+ GDK_RGB_DITHER_NORMAL,
+ 0, 0);
++#endif
++
++ cairo_move_to (cr, draw_rect.x - pix_emblem_rect.x, draw_rect.y - pix_emblem_rect.y);
++ gdk_cairo_set_source_pixbuf (cr, cellpixbuf->pixbuf_emblem, draw_rect.x, draw_rect.y);
++ cairo_paint (cr);
+ }
+ }
+ }
+--- src/nautilus-cell-renderer-pixbuf-emblem.h.orig 2011-02-07 22:18:12.336471764 +0100
++++ src/nautilus-cell-renderer-pixbuf-emblem.h 2011-02-08 00:20:30.461758697 +0100
+@@ -25,18 +25,18 @@
+ #ifndef NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM_H
+ #define NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM_H
+
+-#include <gtk/gtkcellrenderer.h>
++#include <gtk/gtk.h>
+
+ #define NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM \
+ (nautilus_cell_renderer_pixbuf_emblem_get_type ())
+ #define NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM(obj) \
+- (GTK_CHECK_CAST ((obj), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM, NautilusCellRendererPixbufEmblem))
++ (G_TYPE_CHECK_INSTANCE_CAST ((obj), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM, NautilusCellRendererPixbufEmblem))
+ #define NAUTILUS_CELL_RENDERER_PIXBUF_EMBLEM_CLASS(klass) \
+- (GTK_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM, NautilusCellRendererPixbufEmblemClass))
++ (G_TYPE_CHECK_CLASS_CAST ((klass), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM, NautilusCellRendererPixbufEmblemClass))
+ #define NAUTILUS_IS_CELL_RENDERER_PIXBUF_EMBLEM(obj) \
+- (GTK_CHECK_TYPE ((obj), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM))
++ (G_TYPE_CHECK_INSTANCE_TYPE ((obj), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM))
+ #define NAUTILUS_IS_CELL_RENDERER_PIXBUF_EMBLEM_CLASS(klass) \
+- (GTK_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM))
++ (G_TYPE_CHECK_CLASS_TYPE ((klass), NAUTILUS_TYPE_CELL_RENDERER_PIXBUF_EMBLEM))
+
+ typedef struct _NautilusCellRendererPixbufEmblem NautilusCellRendererPixbufEmblem;
+ typedef struct _NautilusCellRendererPixbufEmblemClass NautilusCellRendererPixbufEmblemClass;
+--- build/src/mn-authenticated-mailbox.c.orig 2011-02-08 00:34:16.332610802 +0100
++++ build/src/mn-authenticated-mailbox.c 2011-02-08 00:36:23.706936717 +0100
+@@ -25,7 +25,7 @@
+ #line 29 "src/mn-authenticated-mailbox.gob"
+
+ #include <glib/gi18n.h>
+-#include <gnome.h>
++#include <libgnome/libgnome.h>
+ #include "mn-mailbox-private.h"
+ #include "mn-shell.h"
+ #include "mn-util.h"
+@@ -859,6 +859,7 @@
+
+ /* keep the title in sync with gnome-authentication-manager */
+
++#if 0
+ /* translators: header capitalization */
+ selfp->auth_dialog = gnome_password_dialog_new(_("Authentication Required"),
+ message,
+@@ -891,6 +892,9 @@
+ gtk_widget_destroy(selfp->auth_dialog);
+
+ return ok;
++#else
++ return FALSE;
++#endif
+ }}
+ #line 896 "mn-authenticated-mailbox.c"
+ #undef __GOB_FUNCTION__
+--- build/src/mn-about-dialog.c.orig 2011-02-08 22:20:54.469841262 +0100
++++ build/src/mn-about-dialog.c 2011-02-08 22:21:13.309839037 +0100
+@@ -111,9 +111,11 @@
+ {
+ #line 32 "src/mn-about-dialog.gob"
+
++#if 0
+ gtk_about_dialog_set_email_hook(self_activate_link_cb, "mailto:", NULL);
+ gtk_about_dialog_set_url_hook(self_activate_link_cb, NULL, NULL);
+-
++#endif
++
+ #line 118 "mn-about-dialog.c"
+ }
+ }
+--- build/src/mn-autodetect-mailbox-properties.c.orig 2011-02-08 22:21:58.639427345 +0100
++++ build/src/mn-autodetect-mailbox-properties.c 2011-02-08 22:22:43.564035901 +0100
+@@ -355,10 +355,9 @@
+
+ toplevel = gtk_widget_get_toplevel(GTK_WIDGET(button));
+ /* translators: header capitalization */
+- selfp->chooser = gtk_file_chooser_dialog_new_with_backend(_("Select a File or Folder"),
++ selfp->chooser = gtk_file_chooser_dialog_new(_("Select a File or Folder"),
+ GTK_WINDOW(toplevel),
+ GTK_FILE_CHOOSER_ACTION_OPEN,
+- "gnome-vfs",
+ GTK_STOCK_CANCEL, GTK_RESPONSE_CANCEL,
+ GTK_STOCK_OPEN, 1,
+ NULL);
+--- build/src/mn-pi-mailbox-properties.c.orig 2011-02-08 22:30:08.051375715 +0100
++++ build/src/mn-pi-mailbox-properties.c 2011-02-08 22:30:21.398665261 +0100
+@@ -415,7 +415,7 @@
+ int i;
+
+ for (i = 0; i < MN_PI_MAILBOX_N_CONNECTION_TYPES; i++)
+- gtk_widget_set_sensitive(self->port_spin[i], GTK_WIDGET_SENSITIVE(self->conn_radio[i]) && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self->conn_radio[i])));
++ gtk_widget_set_sensitive(self->port_spin[i], gtk_widget_get_sensitive(self->conn_radio[i]) && gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(self->conn_radio[i])));
+
+ g_object_notify(G_OBJECT(self), "complete");
+ }}
+--- src/eggtrayicon.c.orig 2011-02-07 23:42:30.405791829 +0100
++++ src/eggtrayicon.c 2011-02-08 23:06:16.092968325 +0100
+@@ -25,7 +25,7 @@
+
+ #include "eggtrayicon.h"
+
+-#include <gdkconfig.h>
++#include <gdk/gdk.h>
+ #if defined (GDK_WINDOWING_X11)
+ #include <gdk/gdkx.h>
+ #include <X11/Xatom.h>
+@@ -258,7 +258,7 @@
+ {
+ GdkWindow *gdkwin;
+
+- gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (widget),
++ gdkwin = gdk_x11_window_lookup_for_display (gtk_widget_get_display (widget),
+ icon->manager_window);
+
+ gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon);
+@@ -290,7 +290,7 @@
+ ev.window = window;
+ ev.message_type = icon->system_tray_opcode_atom;
+ ev.format = 32;
+- ev.data.l[0] = gdk_x11_get_server_time (GTK_WIDGET (icon)->window);
++ ev.data.l[0] = gdk_x11_get_server_time (gtk_widget_get_window(GTK_WIDGET (icon)));
+ ev.data.l[1] = message;
+ ev.data.l[2] = data1;
+ ev.data.l[3] = data2;
+@@ -342,12 +342,12 @@
+ {
+ GdkWindow *gdkwin;
+
+- gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
++ gdkwin = gdk_x11_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
+ icon->manager_window);
+
+ gdk_window_add_filter (gdkwin, egg_tray_icon_manager_filter, icon);
+
+- if (dock_if_realized && GTK_WIDGET_REALIZED (icon))
++ if (dock_if_realized && gtk_widget_get_realized (GTK_WIDGET(icon)))
+ egg_tray_icon_send_dock_request (icon);
+
+ egg_tray_icon_get_orientation_property (icon);
+@@ -355,10 +355,16 @@
+ }
+
+ static gboolean
+-transparent_expose_event (GtkWidget *widget, GdkEventExpose *event, gpointer user_data)
++transparent_draw (GtkWidget *widget, cairo_t *cr, gpointer user_data)
+ {
+- gdk_window_clear_area (widget->window, event->area.x, event->area.y,
++#if 0
++ gdk_window_clear_area (gtk_widget_get_window(widget), event->area.x, event->area.y,
+ event->area.width, event->area.height);
++#endif
++ cairo_set_operator (cr, CAIRO_OPERATOR_CLEAR);
++ //gdk_cairo_region (cr, event->region);
++ cairo_fill (cr);
++
+ return FALSE;
+ }
+
+@@ -366,20 +372,20 @@
+ make_transparent_again (GtkWidget *widget, GtkStyle *previous_style,
+ gpointer user_data)
+ {
+- gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
++ //gdk_window_set_back_pixmap (gtk_widget_get_window(widget), NULL, TRUE);
+ }
+
+ static void
+ make_transparent (GtkWidget *widget, gpointer user_data)
+ {
+- if (GTK_WIDGET_NO_WINDOW (widget) || GTK_WIDGET_APP_PAINTABLE (widget))
++ if (! gtk_widget_get_has_window (widget) || gtk_widget_get_app_paintable (widget))
+ return;
+
+ gtk_widget_set_app_paintable (widget, TRUE);
+ gtk_widget_set_double_buffered (widget, FALSE);
+- gdk_window_set_back_pixmap (widget->window, NULL, TRUE);
+- g_signal_connect (widget, "expose_event",
+- G_CALLBACK (transparent_expose_event), NULL);
++ //gdk_window_set_back_pixmap (gtk_widget_get_window(widget), NULL, TRUE);
++ g_signal_connect (widget, "draw",
++ G_CALLBACK (transparent_draw), NULL);
+ g_signal_connect_after (widget, "style_set",
+ G_CALLBACK (make_transparent_again), NULL);
+ }
+@@ -391,7 +397,7 @@
+
+ g_return_if_fail (icon->manager_window != None);
+
+- gdkwin = gdk_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
++ gdkwin = gdk_x11_window_lookup_for_display (gtk_widget_get_display (GTK_WIDGET (icon)),
+ icon->manager_window);
+
+ gdk_window_remove_filter (gdkwin, egg_tray_icon_manager_filter, icon);
+--- build/src/mn-properties-dialog.c.orig 2011-02-08 23:37:12.605200174 +0100
++++ build/src/mn-properties-dialog.c 2011-02-08 23:37:18.601881191 +0100
+@@ -183,7 +183,7 @@
+ GtkTreeSelection *selection;
+
+ mn_container_create_interface(GTK_CONTAINER(self),
+- PKGDATADIR G_DIR_SEPARATOR_S "properties-dialog.glade",
++ PKGDATADIR G_DIR_SEPARATOR_S "properties-dialog.ui",
+ "main_vbox",
+ "mn_properties_dialog_",
+ "notebook", &selfp->notebook,
+--- src/mn-util.c.orig 2011-02-08 00:01:25.167207512 +0100
++++ src/mn-util.c 2011-02-09 00:01:35.718285446 +0100
+@@ -26,8 +26,7 @@
+ #include <gmodule.h>
+ #include <glib/gi18n.h>
+ #include <gobject/gvaluecollector.h>
+-#include <gnome.h>
+-#include <glade/glade.h>
++#include <libgnome/libgnome.h>
+ #include "mn-util.h"
+ #include "mn-mailboxes.h"
+ #include "mn-shell.h"
+@@ -303,49 +302,55 @@
+ return pixbuf;
+ }
+
+-static GladeXML *
++static GtkBuilder *
+ mn_glade_xml_new (const char *filename, const char *root, const char *domain)
+ {
+- GladeXML *xml;
++ GtkBuilder *builder;
++ GError *err = NULL;
+
+ g_return_val_if_fail(filename != NULL, NULL);
+
+- xml = glade_xml_new(filename, root, domain);
+- if (! xml)
+- mn_show_fatal_error_dialog(NULL, "Unable to load interface \"%s\".", filename);
++ builder = gtk_builder_new();
++ gtk_builder_set_translation_domain(builder, domain);
++ if (! gtk_builder_add_from_file(builder, filename, &err)) {
++ mn_show_fatal_error_dialog(NULL, "Unable to load interface \"%s\": %s.", filename, err->message);
++ g_error_free(err);
++ g_object_unref(builder);
++ return NULL;
++ }
+
+- return xml;
++ return builder;
+ }
+
+ static GtkWidget *
+-mn_glade_xml_get_widget (GladeXML *xml, const char *widget_name)
++mn_glade_xml_get_widget (GtkBuilder *builder, const char *widget_name)
+ {
+ GtkWidget *widget;
+
+- g_return_val_if_fail(GLADE_IS_XML(xml), NULL);
++ g_return_val_if_fail(GTK_IS_BUILDER(builder), NULL);
+ g_return_val_if_fail(widget_name != NULL, NULL);
+
+- widget = glade_xml_get_widget(xml, widget_name);
++ widget = GTK_WIDGET(gtk_builder_get_object(builder, widget_name));
+ if (! widget)
+- mn_show_fatal_error_dialog(NULL, "Widget \"%s\" not found in interface \"%s\".", widget_name, xml->filename);
++ mn_show_fatal_error_dialog(NULL, "Widget \"%s\" not found in interface.", widget_name);
+
+ return widget;
+ }
+
+ static void
+-create_interface_connect_cb (const char *handler_name,
++create_interface_connect_cb (GtkBuilder *builder,
+ GObject *object,
+ const char *signal_name,
+- const char *signal_data,
++ const char *handler_name,
+ GObject *connect_object,
+- gboolean after,
++ GConnectFlags flags,
+ gpointer user_data)
+ {
+ static GModule *module = NULL;
+ ContainerCreateInterfaceConnectInfo *info = user_data;
+ char *cb_name;
+ GCallback cb;
+- GConnectFlags flags;
++ GConnectFlags cflags;
+
+ if (! module)
+ {
+@@ -359,11 +364,9 @@
+ mn_show_fatal_error_dialog(NULL, "Signal handler \"%s\" not found.", cb_name);
+ g_free(cb_name);
+
+- flags = G_CONNECT_SWAPPED;
+- if (after)
+- flags |= G_CONNECT_AFTER;
++ cflags = G_CONNECT_SWAPPED;
+
+- g_signal_connect_data(object, signal_name, cb, info->container, NULL, flags);
++ g_signal_connect_data(object, signal_name, cb, info->container, NULL, cflags);
+ }
+
+ void
+@@ -373,7 +376,7 @@
+ const char *callback_prefix,
+ ...)
+ {
+- GladeXML *xml;
++ GtkBuilder *xml;
+ GtkWidget *child;
+ ContainerCreateInterfaceConnectInfo info;
+ va_list args;
+@@ -387,14 +390,16 @@
+ xml = mn_glade_xml_new(filename, child_name, NULL);
+ child = mn_glade_xml_get_widget(xml, child_name);
+
+- if (GTK_IS_DIALOG(container))
+- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(container)->vbox), child, TRUE, TRUE, 0);
+- else
++ if (GTK_IS_DIALOG(container)) {
++ gtk_widget_unparent(child);
++ gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(container))), child, TRUE, TRUE, 0);
++ } else {
+ gtk_container_add(container, child);
++ }
+
+ info.container = container;
+ info.callback_prefix = callback_prefix;
+- glade_xml_signal_autoconnect_full(xml, create_interface_connect_cb, &info);
++ gtk_builder_connect_signals_full(xml, create_interface_connect_cb, &info);
+
+ va_start(args, callback_prefix);
+
+@@ -422,7 +427,7 @@
+
+ toplevel = gtk_widget_get_toplevel(widget);
+
+- return GTK_WIDGET_TOPLEVEL(toplevel) ? GTK_WINDOW(toplevel) : NULL;
++ return gtk_widget_get_toplevel(toplevel) ? GTK_WINDOW(toplevel) : NULL;
+ }
+
+ static void
+@@ -493,9 +498,11 @@
+ gpointer user_data)
+ {
+ GtkAdjustment *adjustment;
++ GtkAllocation allocation;
+
++ gtk_widget_get_allocation(widget, &allocation);
+ adjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(widget));
+- gtk_adjustment_set_value(adjustment, (double) y / (widget->allocation.height - 2) * (adjustment->upper - adjustment->page_size));
++ gtk_adjustment_set_value(adjustment, (double) y / (allocation.height - 2) * (gtk_adjustment_get_upper(adjustment) - gtk_adjustment_get_page_size(adjustment)));
+
+ return TRUE; /* we're forcibly in a drop zone */
+ }
+@@ -562,7 +569,7 @@
+ MNMailbox *mailbox;
+
+ /* text/x-moz-url is encoded in UCS-2 but in format 8: broken */
+- if (selection_data->format != 8 || selection_data->length <= 0 || (selection_data->length % 2) != 0)
++ if (gtk_selection_data_get_format(selection_data) != 8 || gtk_selection_data_get_length(selection_data) <= 0 || (gtk_selection_data_get_length(selection_data) % 2) != 0)
+ {
+ mn_show_error_dialog(mn_widget_get_parent_window(widget),
+ _("A drag and drop error has occurred"),
+@@ -570,8 +577,8 @@
+ return;
+ }
+
+- char_data = (const guint16 *) selection_data->data;
+- char_len = selection_data->length / 2;
++ char_data = (const guint16 *) gtk_selection_data_get_data(selection_data);
++ char_len = gtk_selection_data_get_length(selection_data) / 2;
+
+ url = g_string_new(NULL);
+ for (i = 0; i < char_len && char_data[i] != '\n'; i++)
+@@ -1322,7 +1329,7 @@
+ }
+
+ static void
+-dialog_run_nonmodal_destroy_h (GtkObject *object, gpointer user_data)
++dialog_run_nonmodal_destroy_h (GtkWidget *object, gpointer user_data)
+ {
+ RunNonmodalInfo *info = user_data;
+
+@@ -1375,7 +1382,7 @@
+
+ g_object_ref(dialog);
+
+- if (! GTK_WIDGET_VISIBLE(dialog))
++ if (! gtk_widget_get_visible(dialog))
+ gtk_widget_show(GTK_WIDGET(dialog));
+
+ g_object_connect(dialog,
+--- src/mn-main.c.gtk3 2008-05-22 17:45:35.000000000 +0200
++++ src/mn-main.c 2011-02-08 23:32:33.800030659 +0100
+@@ -21,7 +21,7 @@
+ #include <stdlib.h>
+ #include <signal.h>
+ #include <glib/gi18n.h>
+-#include <gnome.h>
++#include <libgnome/libgnome.h>
+ #include <libgnomevfs/gnome-vfs.h>
+ #include <libnotify/notify.h>
+ #include <dbus/dbus-glib-lowlevel.h>
+@@ -452,7 +452,7 @@
+
+ gnome_program_init(PACKAGE,
+ VERSION,
+- LIBGNOMEUI_MODULE,
++ LIBGNOME_MODULE,
+ argc,
+ argv,
+ GNOME_PARAM_HUMAN_READABLE_NAME, _("Mail Notification"),
+@@ -460,6 +460,8 @@
+ GNOME_PARAM_GOPTION_CONTEXT, option_context,
+ NULL);
+
++ gtk_init(&argc, &argv);
++
+ if (arg_version)
+ {
+ print_version();
+@@ -497,7 +499,9 @@
+ if (! gnome_vfs_init())
+ mn_show_fatal_error_dialog(NULL, _("Unable to initialize the GnomeVFS library."));
+
++#if 0
+ gnome_authentication_manager_init();
++#endif
+
+ /* must be called before init_gmime() */
+ mn_conf_init();
+--- src/mn-conf.c.gtk3 2008-05-22 17:45:35.000000000 +0200
++++ src/mn-conf.c 2011-02-07 20:07:01.630580132 +0100
+@@ -23,7 +23,7 @@
+ #include <errno.h>
+ #include <stdarg.h>
+ #include <glib/gi18n.h>
+-#include <gnome.h>
++#include <libgnome/libgnome.h>
+ #include "mn-util.h"
+ #include "mn-conf.h"
+ #include "mn-shell.h"
+--- data/mail-notification.desktop.in.orig 2011-07-08 13:46:52.327548264 +0200
++++ data/mail-notification.desktop.in 2011-07-08 13:47:00.732704467 +0200
+@@ -5,7 +5,7 @@
+ _Comment=Get notified when new mail arrives
+ Type=Application
+ Categories=GNOME;GTK;Network;Email;
+-Exec=mail-notification --sm-disable
++Exec=mail-notification
+ Terminal=false
+ StartupNotify=true
+ X-GNOME-DocPath=mail-notification/mail-notification.xml
diff --git a/mail-notification-5.4-icons.patch b/mail-notification-5.4-icons.patch
new file mode 100644
index 000000000000..48d54742a23d
--- /dev/null
+++ b/mail-notification-5.4-icons.patch
@@ -0,0 +1,39 @@
+diff -Nrbu mail-notification-5.4/src/mn-stock.c mail-notification-5.4-OK/src/mn-stock.c
+--- mail-notification-5.4/src/mn-stock.c 2008-05-22 19:45:35.000000000 +0400
++++ mail-notification-5.4-OK/src/mn-stock.c 2010-05-24 19:36:03.000000000 +0400
+@@ -32,11 +32,11 @@
+ const char *icon_name;
+ const char *source_stock_id;
+ } icons[] = {
+- { MN_STOCK_MAIL, NULL, "stock_mail" },
+- { MN_STOCK_NO_MAIL, NULL, "stock_inbox" },
+- { MN_STOCK_LOCAL, NULL, "stock_folder" },
+- { MN_STOCK_REMOTE, NULL, "stock_internet" },
+- { MN_STOCK_UNKNOWN, NULL, "stock_unknown" },
++ { MN_STOCK_MAIL, NULL, "mail-message-new" },
++ { MN_STOCK_NO_MAIL, NULL, "mail-notification" },
++ { MN_STOCK_LOCAL, NULL, "folder" },
++ { MN_STOCK_REMOTE, NULL, "applications-internet" },
++ { MN_STOCK_UNKNOWN, NULL, "dialog-question" },
+ { MN_STOCK_ERROR, NULL, NULL, GTK_STOCK_DIALOG_ERROR },
+ #if WITH_GMAIL
+ { MN_STOCK_GMAIL, PKGDATADIR G_DIR_SEPARATOR_S "gmail.png" },
+@@ -48,14 +48,14 @@
+ { MN_STOCK_HOTMAIL, PKGDATADIR G_DIR_SEPARATOR_S "hotmail.png" },
+ #endif
+ #if WITH_MBOX || WITH_MOZILLA || WITH_MH || WITH_MAILDIR || WITH_SYLPHEED
+- { MN_STOCK_SYSTEM_MAILBOX, NULL, "system" },
++ { MN_STOCK_SYSTEM_MAILBOX, NULL, "applications-system" },
+ #endif
+ #if WITH_EVOLUTION
+ { MN_STOCK_EVOLUTION_MAILBOX, NULL, "evolution" },
+ #endif
+- { MN_STOCK_MAIL_READER, NULL, "stock_mail-handling" },
+- { MN_STOCK_OPEN_MESSAGE, NULL, "stock_mail-open" },
+- { MN_STOCK_CONSIDER_NEW_MAIL_AS_READ, NULL, "stock_mark" }
++ { MN_STOCK_MAIL_READER, NULL, "mail-unread" },
++ { MN_STOCK_OPEN_MESSAGE, NULL, "mail-read" },
++ { MN_STOCK_CONSIDER_NEW_MAIL_AS_READ, NULL, "mail-mark-read" }
+ };
+ GtkIconFactory *factory;
+ GtkIconTheme *icon_theme;
diff --git a/mail-notification-5.4-kde-trayicon.patch b/mail-notification-5.4-kde-trayicon.patch
new file mode 100644
index 000000000000..a3bdc8372001
--- /dev/null
+++ b/mail-notification-5.4-kde-trayicon.patch
@@ -0,0 +1,72 @@
+diff -Nrbu mail-notification-5.4/build/src/mn-shell.c mail-notification-5.4-OK/build/src/mn-shell.c
+--- mail-notification-5.4/build/src/mn-shell.c 2010-10-11 17:45:23.000000000 +0400
++++ mail-notification-5.4-OK/build/src/mn-shell.c 2010-10-11 17:45:48.000000000 +0400
+@@ -313,6 +313,29 @@
+ #undef __GOB_FUNCTION__
+
+ static void
++mn_shell_init_icon_base (MNShell * self)
++{
++ g_return_if_fail (self != NULL);
++ g_return_if_fail (MN_IS_SHELL (self));
++
++ self->icon = MN_MAIL_ICON(mn_mail_icon_new());
++ mn_add_weak_pointer(&self->icon);
++
++ g_object_connect(self->icon,
++ "signal::activate", self_icon_activate_h, self,
++ "signal::activate-mail-reader", self_icon_activate_mail_reader_h, self,
++ "signal::activate-open-latest-message", self_icon_activate_open_latest_message_h, self,
++ "swapped-signal::activate-consider-new-mail-as-read", self_consider_new_mail_as_read, self,
++ "swapped-signal::activate-update", self_update, self,
++ "signal::activate-properties", self_icon_activate_properties_h, self,
++ "signal::activate-help", self_icon_activate_help_h, self,
++ "signal::activate-about", self_icon_activate_about_h, self,
++ "swapped-signal::activate-remove", self_quit, self,
++ "signal::destroy", self_icon_destroy_h, self,
++ NULL);
++}
++
++static void
+ mn_shell_init (MNShell * o G_GNUC_UNUSED)
+ {
+ #define __GOB_FUNCTION__ "MN:Shell::init"
+@@ -793,22 +816,7 @@
+ {
+ #line 360 "src/mn-shell.gob"
+
+- self->icon = MN_MAIL_ICON(mn_mail_icon_new());
+- mn_add_weak_pointer(&self->icon);
+-
+- g_object_connect(self->icon,
+- "signal::activate", self_icon_activate_h, self,
+- "signal::activate-mail-reader", self_icon_activate_mail_reader_h, self,
+- "signal::activate-open-latest-message", self_icon_activate_open_latest_message_h, self,
+- "swapped-signal::activate-consider-new-mail-as-read", self_consider_new_mail_as_read, self,
+- "swapped-signal::activate-update", self_update, self,
+- "signal::activate-properties", self_icon_activate_properties_h, self,
+- "signal::activate-help", self_icon_activate_help_h, self,
+- "signal::activate-about", self_icon_activate_about_h, self,
+- "swapped-signal::activate-remove", self_quit, self,
+- "signal::destroy", self_icon_destroy_h, self,
+- NULL);
+-
++ mn_shell_init_icon_base(self);
+ self_update_sensitivity(self);
+ self_update_tooltip(self);
+ self_update_icon(self);
+@@ -1094,7 +1102,13 @@
+ }
+ else
+ {
+- gtk_widget_hide(GTK_WIDGET(self->icon));
++ /* Re-create the icon as a regular gtk_widget_hide causes the
++ * icon to remain visible on non-GNOME environments. We can't
++ * use the callback self_icon_destroy_h here as it can cause an
++ * endless recursion */
++ g_signal_handlers_disconnect_by_func(self->icon, self_icon_destroy_h, self);
++ gtk_widget_destroy(GTK_WIDGET(self->icon));
++ mn_shell_init_icon_base(self);
+ mn_mail_icon_set_blinking(self->icon, FALSE);
+ }
+ }}
diff --git a/mail-notification-5.4-libx11.patch b/mail-notification-5.4-libx11.patch
new file mode 100644
index 000000000000..bb3574fda310
--- /dev/null
+++ b/mail-notification-5.4-libx11.patch
@@ -0,0 +1,13 @@
+Link with libX11 explicitly.
+
+--- mail-notification-5.4.dfsg.1.orig/jbsrc/jb.c
++++ mail-notification-5.4.dfsg.1/jbsrc/jb.c
+@@ -445,6 +445,8 @@
+
+ jb_compile_options_add_libs(object->compile_options, "-lm");
+
++ jb_compile_options_add_libs(object->compile_options, "-lX11");
++
+ jb_compile_options_add_package(object->compile_options, "gettext");
+ jb_compile_options_add_package(object->compile_options, "gnome");
+ jb_compile_options_add_package(object->compile_options, "dbus");
diff --git a/mail-notification-5.4-popup-attach.patch b/mail-notification-5.4-popup-attach.patch
new file mode 100644
index 000000000000..b8d5f6a09ccd
--- /dev/null
+++ b/mail-notification-5.4-popup-attach.patch
@@ -0,0 +1,45 @@
+diff -Nrbu mail-notification-5.4/build/src/mn-popup.c mail-notification-5.4-OK/build/src/mn-popup.c
+--- mail-notification-5.4/build/src/mn-popup.c 2008-05-22 19:47:49.000000000 +0400
++++ mail-notification-5.4-OK/build/src/mn-popup.c 2010-10-11 17:42:32.000000000 +0400
+@@ -177,6 +177,29 @@
+ #undef __GOB_FUNCTION__
+
+ static void
++mn_popup_wait_for_icon_to_become_ready (void)
++{
++ int x, y;
++ int count = 0;
++
++ /* When the tray icon is created, it can still take some time before
++ * it has arrived at the correct position. This is especially the case
++ * on KDE environments. To work around this, add a little delay of at
++ * most 2 seconds before showing a popup which is attached to the notification */
++ do {
++ gdk_window_get_origin (gtk_widget_get_window (mn_shell->icon), &x, &y);
++
++ if (x != 0 || y != 0) {
++ break;
++ }
++
++ g_usleep(G_USEC_PER_SEC / 10);
++ count++;
++ } while (count < 20);
++}
++
++
++static void
+ mn_popup_init (MNPopup * o G_GNUC_UNUSED)
+ {
+ #define __GOB_FUNCTION__ "MN:Popup::init"
+@@ -299,8 +322,10 @@
+ "icon-name", "stock_mail",
+ NULL);
+
+- if (mn_conf_get_enum_value(MN_TYPE_POPUP_POSITION, MN_CONF_POPUPS_POSITION) == MN_POPUP_POSITION_ATTACHED)
++ if (mn_conf_get_enum_value(MN_TYPE_POPUP_POSITION, MN_CONF_POPUPS_POSITION) == MN_POPUP_POSITION_ATTACHED) {
++ mn_popup_wait_for_icon_to_become_ready();
+ g_object_set(self, "attach-widget", mn_shell->icon, NULL);
++ }
+
+ g_string_free(body, TRUE);
+
diff --git a/mail-notification-5.4-sasl_encode64.patch b/mail-notification-5.4-sasl_encode64.patch
new file mode 100644
index 000000000000..80a7304d10d1
--- /dev/null
+++ b/mail-notification-5.4-sasl_encode64.patch
@@ -0,0 +1,24 @@
+diff -up mail-notification-5.4/build/src/mn-pop3-mailbox.c mail-notification-5.4-OK/build/src/mn-pop3-mailbox.c
+--- mail-notification-5.4/build/src/mn-pop3-mailbox.c 2009-05-19 10:29:58.448201837 +0200
++++ mail-notification-5.4-OK/build/src/mn-pop3-mailbox.c 2009-05-19 10:23:29.356204287 +0200
+@@ -619,7 +619,7 @@ mn_pop3_mailbox_enter_auth_cb (MNClientS
+
+ if (initial_clientoutlen > 0)
+ {
+- char buf64[initial_clientoutlen * 2]; /* Base64 is 33% larger than the data it encodes */
++ char buf64[initial_clientoutlen * 2 + 1]; /* Base64 is 33% larger than the data it encodes */
+ unsigned int outlen;
+ int result;
+ char *str;
+diff -up mail-notification-5.4/src/mn-client-session.c mail-notification-5.4-OK/src/mn-client-session.c
+--- mail-notification-5.4/src/mn-client-session.c 2008-05-22 17:45:35.000000000 +0200
++++ mail-notification-5.4-OK/src/mn-client-session.c 2009-05-19 10:29:09.112211055 +0200
+@@ -1030,7 +1030,7 @@ mn_client_session_write (MNClientSession
+ static int
+ write_base64 (MNClientSession *session, const char *buf, unsigned int len)
+ {
+- char buf64[len * 2]; /* Base64 is 33% larger than the data it encodes */
++ char buf64[len * 2 + 1]; /* Base64 is 33% larger than the data it encodes */
+ unsigned int outlen;
+ int result;
+ char *str;
diff --git a/mail-notification-5.4-weak.patch b/mail-notification-5.4-weak.patch
new file mode 100644
index 000000000000..2e2a233aab20
--- /dev/null
+++ b/mail-notification-5.4-weak.patch
@@ -0,0 +1,11 @@
+diff -Nrbu mail-notification-5.4/build/src/mn-shell.c mail-notification-5.4-OK/build/src/mn-shell.c
+--- mail-notification-5.4/build/src/mn-shell.c 2008-05-22 19:47:49.000000000 +0400
++++ mail-notification-5.4-OK/build/src/mn-shell.c 2010-05-24 19:39:48.000000000 +0400
+@@ -1008,6 +1008,7 @@
+ Self *self = user_data;
+
+ /* The Notification Area applet has been terminated. Recreate the icon. */
++ mn_remove_weak_pointer(&self->icon);
+ self_init_icon(self);
+ }}
+ #line 1014 "mn-shell.c"
diff --git a/mail-notification.install b/mail-notification.install
new file mode 100644
index 000000000000..21cd943996af
--- /dev/null
+++ b/mail-notification.install
@@ -0,0 +1,24 @@
+pkgname=mail-notification
+
+post_install() {
+ usr/sbin/gconfpkg --install ${pkgname}
+ kill -s HUP `pidof bonobo-activation-server` > /dev/null 2>&1
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
+
+pre_upgrade() {
+ pre_remove $1
+}
+
+post_upgrade() {
+ post_install $1
+}
+
+pre_remove() {
+ usr/sbin/gconfpkg --uninstall ${pkgname}
+}
+
+post_remove() {
+ kill -s HUP `pidof bonobo-activation-server` > /dev/null 2>&1
+ gtk-update-icon-cache -q -t -f usr/share/icons/hicolor
+}
diff --git a/remove-ubuntu-special-case.patch b/remove-ubuntu-special-case.patch
new file mode 100644
index 000000000000..4516f32c6f52
--- /dev/null
+++ b/remove-ubuntu-special-case.patch
@@ -0,0 +1,33 @@
+--- jbsrc/lib/src/core/jb-feature.c.~1~ 2008-04-27 16:47:27.000000000 +0200
++++ jbsrc/lib/src/core/jb-feature.c 2008-07-22 11:40:50.856886210 +0200
+@@ -164,8 +164,6 @@
+ static void
+ gconf_configure (void)
+ {
+- JBVariable *variable;
+-
+ jb_require_program("gconftool-2");
+
+ if (! strcmp(jb_variable_get_string("gconf-config-source"), "autodetect"))
+@@ -178,21 +176,6 @@
+ jb_variable_set_string("gconf-config-source", config_source);
+ g_free(config_source);
+ }
+-
+- /* fix the default schemas dir on Ubuntu */
+- variable = jb_variable_get_variable_or_error("gconf-schemas-dir");
+- if (! variable->user_set)
+- {
+- static const char *ubuntu_dir = "$datadir/gconf/schemas";
+- char *expanded;
+-
+- expanded = jb_variable_expand(ubuntu_dir, NULL);
+-
+- if (g_file_test(expanded, G_FILE_TEST_IS_DIR))
+- jb_variable_set_string("gconf-schemas-dir", ubuntu_dir);
+-
+- g_free(expanded);
+- }
+ }
+
+ static void