diff --git a/apps/files/js/filelist.js b/apps/files/js/filelist.js
index 047837cd9d76ac1222dfc546273c13b942b420aa..7a8a8b80e1054d1ebdbbd0bb65af46a6f7e402aa 100644
--- a/apps/files/js/filelist.js
+++ b/apps/files/js/filelist.js
@@ -653,8 +653,13 @@
 		 */
 		_onShow: function(e) {
 			if (this.shown) {
-				this._setCurrentDir('/', false);
-				this.reload();
+				if (e.itemId === this.id) {
+					this._setCurrentDir('/', false);
+				}
+				// Only reload if we don't navigate to a different directory
+				if (typeof e.dir === 'undefined' || e.dir === this.getCurrentDirectory()) {
+					this.reload();
+				}
 			}
 			this.shown = true;
 		},
diff --git a/apps/files/js/navigation.js b/apps/files/js/navigation.js
index b3648fedc6c06b843d72da05ee603323a824819e..02a0af2b3693aed7166d997723b77e6257694350 100644
--- a/apps/files/js/navigation.js
+++ b/apps/files/js/navigation.js
@@ -154,7 +154,12 @@
 			this.$currentContent = $('#app-content-' + (typeof itemView === 'string' && itemView !== '' ? itemView : itemId));
 			this.$currentContent.removeClass('hidden');
 			if (!options || !options.silent) {
-				this.$currentContent.trigger(jQuery.Event('show'));
+				this.$currentContent.trigger(jQuery.Event('show', {
+					itemId: itemId,
+					previousItemId: oldItemId,
+					dir: itemDir,
+					view: itemView
+				}));
 				this.$el.trigger(
 					new $.Event('itemChanged', {
 						itemId: itemId,