Index: configure.in
===================================================================
--- configure.in	(revision 35346)
+++ configure.in	(working copy)
@@ -11,7 +11,7 @@ EDS_PACKAGE=1.2
 GTKHTML_PACKAGE=3.14
 
 # Required Packages
-m4_define([glib_minimum_version], [2.15.3])
+m4_define([glib_minimum_version], [2.16.0])
 m4_define([gtk_minimum_version], [2.12.0])
 m4_define([eds_minimum_version], [2.23.1])
 m4_define([gnome_icon_theme_minimum_version], [2.19.91])
Index: composer/e-composer-common.h
===================================================================
--- composer/e-composer-common.h	(revision 35346)
+++ composer/e-composer-common.h	(working copy)
@@ -24,6 +24,7 @@
 #include <config.h>
 #endif
 
+#include <gio/gio.h>
 #include <gtk/gtk.h>
 
 #endif /* E_COMPOSER_COMMON */
Index: composer/evolution-composer.ui
===================================================================
--- composer/evolution-composer.ui	(revision 35346)
+++ composer/evolution-composer.ui	(working copy)
@@ -34,6 +34,7 @@
     <menu action='insert-menu'>
       <placeholder name='insert-menu-top'>
         <menuitem action='attach'/>
+        <menuitem action='recent'/>
         <separator/>
         <menuitem action='send-options'/>
         <separator/>
Index: composer/e-composer-actions.c
===================================================================
--- composer/e-composer-actions.c	(revision 35346)
+++ composer/e-composer-actions.c	(working copy)
@@ -36,6 +36,7 @@ action_attach_cb (GtkAction *action,
 	GtkWidget *dialog;
 	GtkWidget *option;
 	GSList *uris, *iter;
+	const gchar *disposition;
 	gboolean active;
 	gint response;
 
@@ -72,16 +73,15 @@ action_attach_cb (GtkAction *action,
 
 	uris = gtk_file_chooser_get_uris (GTK_FILE_CHOOSER (dialog));
 	active = gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (option));
+	disposition = active ? "inline" : "attachment";
 
 	for (iter = uris; iter != NULL; iter = iter->next) {
-		const gchar *disposition;
 		CamelURL *url;
 
 		url = camel_url_new (iter->data, NULL);
 		if (url == NULL)
 			continue;
 
-		disposition = active ? "inline" : "attachment";
 		if (!g_ascii_strcasecmp (url->protocol, "file"))
 			e_attachment_bar_attach (bar, url->path, disposition);
 		else
@@ -214,6 +214,33 @@ action_print_preview_cb (GtkAction *acti
 }
 
 static void
+action_recent_cb (GtkAction *action,
+                  EMsgComposer *composer)
+{
+	GtkRecentChooser *chooser;
+	GFile *file;
+	gchar *uri;
+
+	chooser = GTK_RECENT_CHOOSER (action);
+
+	/* Wish: gtk_recent_chooser_get_current_file() */
+	uri = gtk_recent_chooser_get_current_uri (chooser);
+	file = g_file_new_for_uri (uri);
+	g_free (uri);
+
+	if (g_file_is_native (file))
+		e_attachment_bar_attach (
+			E_ATTACHMENT_BAR (composer->priv->attachment_bar),
+			g_file_get_path (file), "attachment");
+	else
+		e_attachment_bar_attach_remote_file (
+			E_ATTACHMENT_BAR (composer->priv->attachment_bar),
+			g_file_get_uri (file), "attachment");
+
+	g_object_unref (file);
+}
+
+static void
 action_save_cb (GtkAction *action,
                 EMsgComposer *composer)
 {
@@ -646,6 +673,31 @@ static GtkToggleActionEntry toggle_entri
 	  FALSE }
 };
 
+static void
+composer_actions_add_recent (EMsgComposer *composer,
+                             GtkActionGroup *action_group)
+{
+	GtkAction *action;
+	GtkRecentChooser *chooser;
+
+	action = gtk_recent_action_new (
+		"recent", _("Recent _Documents"), NULL, NULL);
+	gtk_recent_action_set_show_numbers (GTK_RECENT_ACTION (action), TRUE);
+
+	chooser = GTK_RECENT_CHOOSER (action);
+	gtk_recent_chooser_set_show_icons (chooser, TRUE);
+	gtk_recent_chooser_set_show_not_found (chooser, FALSE);
+	gtk_recent_chooser_set_show_private (chooser, FALSE);
+	gtk_recent_chooser_set_show_tips (chooser, TRUE);
+	gtk_recent_chooser_set_sort_type (chooser, GTK_RECENT_SORT_MRU);
+
+	g_signal_connect (
+		action, "item-activated",
+		G_CALLBACK (action_recent_cb), composer);
+
+	gtk_action_group_add_action (action_group, action);
+}
+
 void
 e_composer_actions_init (EMsgComposer *composer)
 {
@@ -667,6 +719,7 @@ e_composer_actions_init (EMsgComposer *c
 	gtk_action_group_add_toggle_actions (
 		action_group, toggle_entries,
 		G_N_ELEMENTS (toggle_entries), composer);
+	composer_actions_add_recent (composer, action_group);
 	gtk_ui_manager_insert_action_group (manager, action_group, 0);
 
 	/* Character Set Actions */
