diff --git a/data/org.gnome.Empathy.gschema.xml.in b/data/org.gnome.Empathy.gschema.xml.in
index c5d95fd..1114712 100644
--- a/data/org.gnome.Empathy.gschema.xml.in
+++ b/data/org.gnome.Empathy.gschema.xml.in
@@ -75,6 +75,12 @@
       <_summary>Open new chats in separate windows</_summary>
       <_description>Always open a separate chat window for new chats.</_description>
     </key>
+    <key name="events-notif-area" type="b">
+      <default>true</default>
+      <_summary>Display incoming events in the status area</_summary>
+      <_description>Display incoming events in the status area. If false
+present them right away to the user.</_description>
+    </key>
     <key name="chat-window-paned-pos" type="i">
       <default>0</default>
       <_summary>The position for the chat window side pane</_summary>
diff --git a/libempathy-gtk/empathy-ui-utils.c b/libempathy-gtk/empathy-ui-utils.c
index 6339a89..ee48fa9 100644
--- a/libempathy-gtk/empathy-ui-utils.c
+++ b/libempathy-gtk/empathy-ui-utils.c
@@ -1670,8 +1670,16 @@ empathy_receive_file_with_file_chooser (EmpathyFTHandler *handler)
 {
 	GtkWidget *widget;
 	const gchar *dir;
+	EmpathyContact *contact;
+	gchar *title;
 
-	widget = gtk_file_chooser_dialog_new (_("Select a destination"),
+	contact = empathy_ft_handler_get_contact (handler);
+	g_assert (contact != NULL);
+
+	title = g_strdup_printf (_("Incoming file from %s"),
+		empathy_contact_get_name (contact));
+
+	widget = gtk_file_chooser_dialog_new (title,
 					      NULL,
 					      GTK_FILE_CHOOSER_ACTION_SAVE,
 					      GTK_STOCK_CANCEL,
@@ -1695,5 +1703,5 @@ empathy_receive_file_with_file_chooser (EmpathyFTHandler *handler)
 		G_CALLBACK (file_manager_receive_file_response_cb), handler);
 
 	gtk_widget_show (widget);
+	g_free (title);
 }
-
diff --git a/libempathy/empathy-gsettings.h b/libempathy/empathy-gsettings.h
index ca6dc0f..2f1b969 100644
--- a/libempathy/empathy-gsettings.h
+++ b/libempathy/empathy-gsettings.h
@@ -65,6 +65,7 @@ G_BEGIN_DECLS
 
 #define EMPATHY_PREFS_UI_SCHEMA EMPATHY_PREFS_SCHEMA ".ui"
 #define EMPATHY_PREFS_UI_SEPARATE_CHAT_WINDOWS     "separate-chat-windows"
+#define EMPATHY_PREFS_UI_EVENTS_NOTIF_AREA         "events-notif-area"
 #define EMPATHY_PREFS_UI_MAIN_WINDOW_HIDDEN        "main-window-hidden"
 #define EMPATHY_PREFS_UI_AVATAR_DIRECTORY          "avatar-directory"
 #define EMPATHY_PREFS_UI_SHOW_AVATARS              "show-avatars"
diff --git a/src/empathy-event-manager.c b/src/empathy-event-manager.c
index 6e45261..79cea81 100644
--- a/src/empathy-event-manager.c
+++ b/src/empathy-event-manager.c
@@ -72,6 +72,7 @@ typedef struct {
   GtkWidget *dialog;
   /* Channel of the CDO that will be used during the approval */
   TpChannel *main_channel;
+  gboolean auto_approved;
 } EventManagerApproval;
 
 typedef struct {
@@ -191,6 +192,22 @@ autoremove_event_timeout_cb (EventPriv *event)
   return FALSE;
 }
 
+static gboolean
+display_notif_area (void)
+
+{
+  GSettings *gsettings;
+  gboolean result;
+
+  gsettings = g_settings_new (EMPATHY_PREFS_UI_SCHEMA);
+
+  result = g_settings_get_boolean (gsettings,
+      EMPATHY_PREFS_UI_EVENTS_NOTIF_AREA);
+  g_object_unref (gsettings);
+
+  return result;
+}
+
 static void
 event_manager_add (EmpathyEventManager *manager,
     EmpathyContact *contact,
@@ -220,6 +237,15 @@ event_manager_add (EmpathyEventManager *manager,
 
   DEBUG ("Adding event %p", event);
   priv->events = g_slist_prepend (priv->events, event);
+
+  if (!display_notif_area ())
+    {
+      /* Don't fire the 'event-added' signal as we activate the event now */
+      approval->auto_approved = TRUE;
+      empathy_event_activate (&event->public);
+      return;
+    }
+
   g_signal_emit (event->manager, signals[EVENT_ADDED], 0, event);
 
   if (!event->public.must_ack)
@@ -278,10 +304,19 @@ handle_with_time_cb (GObject *source,
 static void
 event_manager_approval_approve (EventManagerApproval *approval)
 {
-  gint64 timestamp = gtk_get_current_event_time ();
+  gint64 timestamp;
 
-  if (timestamp == GDK_CURRENT_TIME)
-    timestamp = EMPATHY_DISPATCHER_CURRENT_TIME;
+  if (approval->auto_approved)
+    {
+      timestamp = EMPATHY_DISPATCHER_NON_USER_ACTION;
+    }
+  else
+    {
+      timestamp = gtk_get_current_event_time ();
+
+      if (timestamp == GDK_CURRENT_TIME)
+        timestamp = EMPATHY_DISPATCHER_CURRENT_TIME;
+    }
 
   g_assert (approval->operation != NULL);
 
@@ -415,6 +450,7 @@ event_channel_process_voip_func (EventPriv *event)
   GtkWidget *image;
   EmpathyTpCall *call;
   gboolean video;
+  gchar *title;
 
   if (event->approval->dialog != NULL)
     {
@@ -436,6 +472,12 @@ event_channel_process_voip_func (EventPriv *event)
       _("%s is calling you. Do you want to answer?"),
       empathy_contact_get_name (event->approval->contact));
 
+  title = g_strdup_printf (_("Incoming call from %s"),
+      empathy_contact_get_name (event->approval->contact));
+
+  gtk_window_set_title (GTK_WINDOW (dialog), title);
+  g_free (title);
+
   /* Set image of the dialog */
   if (video)
     {
@@ -639,6 +681,7 @@ event_room_channel_process_func (EventPriv *event)
 {
   GtkWidget *dialog, *button, *image;
   TpChannel *channel = event->approval->main_channel;
+  gchar *title;
 
   if (event->approval->dialog != NULL)
     {
@@ -650,6 +693,12 @@ event_room_channel_process_func (EventPriv *event)
   dialog = gtk_message_dialog_new (NULL, 0,
       GTK_MESSAGE_QUESTION, GTK_BUTTONS_NONE, _("Room invitation"));
 
+  title = g_strdup_printf (_("Invitation to join %s"),
+      tp_channel_get_identifier (channel));
+
+  gtk_window_set_title (GTK_WINDOW (dialog), title);
+  g_free (title);
+
   gtk_message_dialog_format_secondary_text (GTK_MESSAGE_DIALOG (dialog),
       _("%s is inviting you to join %s"),
       empathy_contact_get_name (event->approval->contact),
diff --git a/src/empathy-preferences.c b/src/empathy-preferences.c
index e45e540..6a28e6f 100644
--- a/src/empathy-preferences.c
+++ b/src/empathy-preferences.c
@@ -58,6 +58,7 @@ struct _EmpathyPreferencesPriv {
 	GtkWidget *checkbutton_show_contacts_in_rooms;
 	GtkWidget *combobox_chat_theme;
 	GtkWidget *checkbutton_separate_chat_windows;
+	GtkWidget *checkbutton_events_notif_area;
 	GtkWidget *checkbutton_autoconnect;
 
 	GtkWidget *checkbutton_sounds_enabled;
@@ -221,6 +222,12 @@ preferences_setup_widgets (EmpathyPreferences *preferences)
 			 "active",
 			 G_SETTINGS_BIND_DEFAULT);
 
+	g_settings_bind (priv->gsettings_ui,
+			 EMPATHY_PREFS_UI_EVENTS_NOTIF_AREA,
+			 priv->checkbutton_events_notif_area,
+			 "active",
+			 G_SETTINGS_BIND_DEFAULT);
+
 	g_settings_bind (priv->gsettings_chat,
 			 EMPATHY_PREFS_CHAT_SHOW_SMILEYS,
 			 priv->checkbutton_show_smileys,
@@ -877,6 +884,7 @@ empathy_preferences_init (EmpathyPreferences *preferences)
 		"checkbutton_show_contacts_in_rooms", &priv->checkbutton_show_contacts_in_rooms,
 		"combobox_chat_theme", &priv->combobox_chat_theme,
 		"checkbutton_separate_chat_windows", &priv->checkbutton_separate_chat_windows,
+		"checkbutton_events_notif_area", &priv->checkbutton_events_notif_area,
 		"checkbutton_autoconnect", &priv->checkbutton_autoconnect,
 		"checkbutton_notifications_enabled", &priv->checkbutton_notifications_enabled,
 		"checkbutton_notifications_disabled_away", &priv->checkbutton_notifications_disabled_away,
diff --git a/src/empathy-preferences.ui b/src/empathy-preferences.ui
index e39d36d..822e89d 100644
--- a/src/empathy-preferences.ui
+++ b/src/empathy-preferences.ui
@@ -104,6 +104,21 @@
                                 <property name="position">0</property>
                               </packing>
                             </child>
+                           <child>
+                              <object class="GtkCheckButton" id="checkbutton_events_notif_area">
+                                <property name="label" translatable="yes">Display incoming events in the notification area</property>
+                                <property name="visible">True</property>
+                                <property name="can_focus">True</property>
+                                <property name="receives_default">False</property>
+                                <property name="use_underline">True</property>
+                                <property name="draw_indicator">True</property>
+                              </object>
+                              <packing>
+                                <property name="expand">False</property>
+                                <property name="fill">False</property>
+                                <property name="position">1</property>
+                              </packing>
+                            </child>
                             <child>
                               <object class="GtkCheckButton" id="checkbutton_autoconnect">
                                 <property name="label" translatable="yes">_Automatically connect on startup</property>
@@ -115,7 +130,7 @@
                                 <property name="draw_indicator">True</property>
                               </object>
                               <packing>
-                                <property name="position">1</property>
+                                <property name="position">2</property>
                               </packing>
                             </child>
                           </object>
