+ GError *error = NULL;
+ GtkWindow *window = GTK_WINDOW(gtk_widget_get_toplevel(GTK_WIDGET(glk)));
+ gchar *uri = gtk_recent_chooser_get_current_uri(chooser);
+ gchar *filename;
+ if(!(filename = g_filename_from_uri(uri, NULL, &error))) {
+ error_dialog(window, error, _("Could not open game file '%s': "), uri);
+ g_free(uri);
+ return;
+ }
+
+ if(!confirm_open_new_game(glk)) {
+ g_free(filename);
+ g_free(uri);
+ return;
+ }
+
+ if(!chimara_if_run_game(CHIMARA_IF(glk), filename, &error)) {
+ error_dialog(window, error, _("Could not open game file '%s': "), filename);
+ g_free(filename);
+ g_free(uri);
+ return;
+ }
+ g_free(filename);
+
+ /* Add file to recent files list again, this updates it to most recently used */
+ GtkRecentManager *manager = gtk_recent_manager_get_default();
+ if(!gtk_recent_manager_add_item(manager, uri))
+ g_warning(_("Could not add URI '%s' to recent files list."), uri);
+
+ g_free(uri);