diff --git a/thunar/thunar-launcher.c b/thunar/thunar-launcher.c
index 59eeb790558b5299ed811c762ee5fa85d915f851..5810fede111b682791e678603075196df59bee3a 100644
--- a/thunar/thunar-launcher.c
+++ b/thunar/thunar-launcher.c
@@ -93,6 +93,7 @@ enum
 {
   DEVICE_OPERATION_STARTED,
   DEVICE_OPERATION_FINISHED,
+  NEW_FILES_CREATED,
   LAST_SIGNAL,
 };
 
@@ -103,7 +104,6 @@ enum
   PROP_CURRENT_DIRECTORY,
   PROP_SELECTED_FILES,
   PROP_WIDGET,
-  PROP_SELECT_FILES_CLOSURE,
   PROP_SELECTED_DEVICE,
   PROP_SELECTED_LOCATION,
   N_PROPERTIES
@@ -202,6 +202,8 @@ static void                    thunar_launcher_action_create_folder       (Thuna
 static void                    thunar_launcher_action_create_document     (ThunarLauncher                 *launcher,
                                                                            GtkWidget                      *menu_item);
 static GtkWidget              *thunar_launcher_create_document_submenu_new(ThunarLauncher                 *launcher);
+static void                    thunar_launcher_new_files_created          (ThunarLauncher                 *launcher,
+                                                                           GList                          *new_thunar_files);
 
 
 
@@ -231,7 +233,8 @@ struct _ThunarLauncher
   ThunarFile             *single_folder;
   ThunarFile             *parent_folder;
 
-  GClosure               *select_files_closure;
+  /* closure invoked whenever launcher creates new files (create, paste, rename, etc) */
+  GClosure               *new_files_created_closure;
 
   ThunarPreferences      *preferences;
 
@@ -354,6 +357,21 @@ thunar_launcher_class_init (ThunarLauncherClass *klass)
                   g_cclosure_marshal_generic,
                   G_TYPE_NONE, 1, THUNAR_TYPE_DEVICE);
 
+  /**
+   * ThunarLauncher::new-files-created:
+   * @launcher : a #ThunarLauncher
+   * @files   : a GList of #ThunarFiles which were created
+   *
+   * This signal is emitted by the @launcher whenever new files were created (e.g. via "rename", "create" or "paste")
+   **/
+  launcher_signals[NEW_FILES_CREATED] =
+    g_signal_new (I_("new-files-created"),
+                  G_TYPE_FROM_CLASS (klass),
+                  G_SIGNAL_NO_HOOKS, 0,
+                  NULL, NULL,
+                  g_cclosure_marshal_generic,
+                  G_TYPE_NONE, 1, G_TYPE_POINTER);
+
   /**
    * ThunarLauncher:widget:
    *
@@ -366,18 +384,6 @@ thunar_launcher_class_init (ThunarLauncherClass *klass)
                            GTK_TYPE_WIDGET,
                            EXO_PARAM_WRITABLE);
 
-  /**
-   * ThunarLauncher:select-files-closure:
-   *
-   * The #GClosure which will be called if the selected file should be updated after a launcher operation
-   **/
-  launcher_props[PROP_SELECT_FILES_CLOSURE] =
-     g_param_spec_pointer ("select-files-closure",
-                           "select-files-closure",
-                           "select-files-closure",
-                           G_PARAM_WRITABLE
-                           | G_PARAM_CONSTRUCT_ONLY);
-
   /**
    * ThunarLauncher:select-device:
    *
@@ -440,12 +446,16 @@ static void
 thunar_launcher_init (ThunarLauncher *launcher)
 {
   launcher->files_to_process = NULL;
-  launcher->select_files_closure = NULL;
   launcher->device_to_process = NULL;
   launcher->location_to_process = NULL;
 
   /* grab a reference on the preferences */
   launcher->preferences = thunar_preferences_get ();
+
+  /* initialize the new_files_created_closure */
+  launcher->new_files_created_closure = g_cclosure_new_swap (G_CALLBACK (thunar_launcher_new_files_created), launcher, NULL);
+  g_closure_ref (launcher->new_files_created_closure);
+  g_closure_sink (launcher->new_files_created_closure);
 }
 
 
@@ -477,6 +487,9 @@ thunar_launcher_finalize (GObject *object)
 {
   ThunarLauncher *launcher = THUNAR_LAUNCHER (object);
 
+  g_closure_invalidate (launcher->new_files_created_closure);
+  g_closure_unref (launcher->new_files_created_closure);
+
   /* release the preferences reference */
   g_object_unref (launcher->preferences);
 
@@ -531,10 +544,6 @@ thunar_launcher_set_property (GObject      *object,
       thunar_launcher_set_widget (launcher, g_value_get_object (value));
       break;
 
-    case PROP_SELECT_FILES_CLOSURE:
-      launcher->select_files_closure = g_value_get_pointer (value);
-      break;
-
     case PROP_SELECTED_DEVICE:
       thunar_launcher_set_selection (launcher, NULL, g_value_get_pointer (value), NULL);
       break;
@@ -2053,7 +2062,7 @@ thunar_launcher_action_make_link (ThunarLauncher *launcher)
    */
   application = thunar_application_get ();
   thunar_application_link_into (application, launcher->widget, g_files,
-                                thunar_file_get_file (launcher->current_directory), launcher->select_files_closure);
+                                thunar_file_get_file (launcher->current_directory), launcher->new_files_created_closure);
   g_object_unref (G_OBJECT (application));
   g_list_free (g_files);
 }
@@ -2082,7 +2091,7 @@ thunar_launcher_action_duplicate (ThunarLauncher *launcher)
        */
       application = thunar_application_get ();
       thunar_application_copy_into (application, launcher->widget, files_to_process,
-                                    thunar_file_get_file (launcher->current_directory), launcher->select_files_closure);
+                                    thunar_file_get_file (launcher->current_directory), launcher->new_files_created_closure);
       g_object_unref (G_OBJECT (application));
 
       /* clean up */
@@ -2402,7 +2411,7 @@ thunar_launcher_action_create_folder (ThunarLauncher *launcher)
 
       /* launch the operation */
       application = thunar_application_get ();
-      thunar_application_mkdir (application, launcher->widget, &path_list, launcher->select_files_closure);
+      thunar_application_mkdir (application, launcher->widget, &path_list, launcher->new_files_created_closure);
       g_object_unref (G_OBJECT (application));
 
       /* release the path */
@@ -2471,7 +2480,7 @@ thunar_launcher_action_create_document (ThunarLauncher *launcher,
           application = thunar_application_get ();
           thunar_application_creat (application, launcher->widget, &target_path_list,
                                     template_file != NULL ? thunar_file_get_file (template_file) : NULL,
-                                    launcher->select_files_closure);
+                                    launcher->new_files_created_closure);
           g_object_unref (G_OBJECT (application));
 
           /* release the target path */
@@ -2718,7 +2727,7 @@ thunar_launcher_action_paste (ThunarLauncher *launcher)
   _thunar_return_if_fail (THUNAR_IS_LAUNCHER (launcher));
 
   clipboard = thunar_clipboard_manager_get_for_display (gtk_widget_get_display (launcher->widget));
-  thunar_clipboard_manager_paste_files (clipboard, thunar_file_get_file (launcher->current_directory), launcher->widget, launcher->select_files_closure);
+  thunar_clipboard_manager_paste_files (clipboard, thunar_file_get_file (launcher->current_directory), launcher->widget, launcher->new_files_created_closure);
   g_object_unref (G_OBJECT (clipboard));
 }
 
@@ -2735,7 +2744,7 @@ thunar_launcher_action_paste_into_folder (ThunarLauncher *launcher)
     return;
 
   clipboard = thunar_clipboard_manager_get_for_display (gtk_widget_get_display (launcher->widget));
-  thunar_clipboard_manager_paste_files (clipboard, thunar_file_get_file (launcher->single_folder), launcher->widget, launcher->select_files_closure);
+  thunar_clipboard_manager_paste_files (clipboard, thunar_file_get_file (launcher->single_folder), launcher->widget, launcher->new_files_created_closure);
   g_object_unref (G_OBJECT (clipboard));
 }
 
@@ -3068,3 +3077,14 @@ thunar_launcher_set_selection (ThunarLauncher *launcher,
   /* for selected files things are a bit more conmplicated */
   thunar_launcher_set_selected_files (THUNAR_COMPONENT (launcher), selected_thunar_files);
 }
+
+
+
+static void
+thunar_launcher_new_files_created (ThunarLauncher *launcher,
+                                   GList          *new_thunar_files)
+{
+  _thunar_return_if_fail (THUNAR_IS_LAUNCHER (launcher));
+
+  g_signal_emit (launcher, launcher_signals[NEW_FILES_CREATED], 0, new_thunar_files);
+}
diff --git a/thunar/thunar-tree-view.c b/thunar/thunar-tree-view.c
index 306c2b73f2ce94bd0b238a132b3ccd4952f3093a..f16d1aed049ad7111145476c4df6f2969664d462 100644
--- a/thunar/thunar-tree-view.c
+++ b/thunar/thunar-tree-view.c
@@ -194,11 +194,6 @@ struct _ThunarTreeView
   guint                   drop_occurred : 1;
   GList                  *drop_file_list;      /* the list of URIs that are contained in the drop data */
 
-  /* the "new-files" closure, which is used to
-   * open newly created directories once done.
-   */
-  GClosure               *new_files_closure;
-
   /* sometimes we want to keep the cursor on a certain item to allow
    * more intuitive navigation, even though the main view shows another path
    */
@@ -407,15 +402,11 @@ thunar_tree_view_init (ThunarTreeView *view)
   gtk_drag_dest_set (GTK_WIDGET (view), 0, drop_targets, G_N_ELEMENTS (drop_targets),
                      GDK_ACTION_COPY | GDK_ACTION_LINK | GDK_ACTION_MOVE);
 
-  view->new_files_closure = g_cclosure_new_swap (G_CALLBACK (thunar_tree_view_select_files), view, NULL);
-  g_closure_ref (view->new_files_closure);
-  g_closure_sink (view->new_files_closure);
-
-  view->launcher =  g_object_new (THUNAR_TYPE_LAUNCHER, "widget", GTK_WIDGET (view),
-                                                        "select-files-closure", view->new_files_closure, NULL);
+  view->launcher =  g_object_new (THUNAR_TYPE_LAUNCHER, "widget", GTK_WIDGET (view), NULL);
 
   g_signal_connect_swapped (G_OBJECT (view->launcher), "change-directory", G_CALLBACK (thunar_tree_view_action_open), view);
   g_signal_connect_swapped (G_OBJECT (view->launcher), "open-new-tab", G_CALLBACK (thunar_navigator_open_new_tab), view);
+  g_signal_connect_swapped (G_OBJECT (view->launcher), "new-files-created", G_CALLBACK (thunar_tree_view_select_files), view);
   exo_binding_new (G_OBJECT (view), "current-directory", G_OBJECT (view->launcher), "current-directory");
 }
 
@@ -460,13 +451,6 @@ thunar_tree_view_finalize (GObject *object)
   /* free the tree model */
   g_object_unref (G_OBJECT (view->model));
 
-  /* drop any existing "new-files" closure */
-  if (G_UNLIKELY (view->new_files_closure != NULL))
-    {
-      g_closure_invalidate (view->new_files_closure);
-      g_closure_unref (view->new_files_closure);
-    }
-
   (*G_OBJECT_CLASS (thunar_tree_view_parent_class)->finalize) (object);
 }
 
diff --git a/thunar/thunar-window.c b/thunar/thunar-window.c
index 20ef3e2dda651846358d4a6d24f1fe79b4fe2034..82301e5a3ae1c065f96e9970a501c9d2c39acc7f 100644
--- a/thunar/thunar-window.c
+++ b/thunar/thunar-window.c
@@ -369,9 +369,6 @@ struct _ThunarWindow
    * see the toggle_sidepane() function.
    */
   GType                   toggle_sidepane_type;
-
-  /* Takes care to select a file after e.g. rename/create */
-  GClosure               *select_files_closure;
 };
 
 
@@ -708,16 +705,12 @@ thunar_window_init (ThunarWindow *window)
   g_signal_connect (window, "key-press-event", G_CALLBACK (thunar_window_propagate_key_event), NULL);
   g_signal_connect (window, "key-release-event", G_CALLBACK (thunar_window_propagate_key_event), NULL);
 
-
-  window->select_files_closure = g_cclosure_new_swap (G_CALLBACK (thunar_window_select_files), window, NULL);
-  g_closure_ref (window->select_files_closure);
-  g_closure_sink (window->select_files_closure);
-  window->launcher = g_object_new (THUNAR_TYPE_LAUNCHER, "widget", GTK_WIDGET (window),
-                                  "select-files-closure",  window->select_files_closure, NULL);
+  window->launcher = g_object_new (THUNAR_TYPE_LAUNCHER, "widget", GTK_WIDGET (window), NULL);
 
   exo_binding_new (G_OBJECT (window), "current-directory", G_OBJECT (window->launcher), "current-directory");
   g_signal_connect_swapped (G_OBJECT (window->launcher), "change-directory", G_CALLBACK (thunar_window_set_current_directory), window);
   g_signal_connect_swapped (G_OBJECT (window->launcher), "open-new-tab", G_CALLBACK (thunar_window_notebook_open_new_tab), window);
+  g_signal_connect_swapped (G_OBJECT (window->launcher), "new-files-created", G_CALLBACK (thunar_window_select_files), window);
   thunar_launcher_append_accelerators (window->launcher, window->accel_group);
 
   /* determine the default window size from the preferences */
@@ -1266,9 +1259,6 @@ thunar_window_finalize (GObject *object)
   /* release the preferences reference */
   g_object_unref (window->preferences);
 
-  g_closure_invalidate (window->select_files_closure);
-  g_closure_unref (window->select_files_closure);
-
   (*G_OBJECT_CLASS (thunar_window_parent_class)->finalize) (object);
 }