diff --git a/src/addon/mod/forum/components/index/index.ts b/src/addon/mod/forum/components/index/index.ts
index 8ab76ab1f..14f357f03 100644
--- a/src/addon/mod/forum/components/index/index.ts
+++ b/src/addon/mod/forum/components/index/index.ts
@@ -81,8 +81,10 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom
         }, this.siteId);
 
         // Listen for discussions added. When a discussion is added, we reload the data.
-        this.newDiscObserver = this.eventsProvider.on(AddonModForumProvider.NEW_DISCUSSION_EVENT, this.eventReceived.bind(this));
-        this.replyObserver = this.eventsProvider.on(AddonModForumProvider.REPLY_DISCUSSION_EVENT, this.eventReceived.bind(this));
+        this.newDiscObserver = this.eventsProvider.on(AddonModForumProvider.NEW_DISCUSSION_EVENT,
+                this.eventReceived.bind(this, true));
+        this.replyObserver = this.eventsProvider.on(AddonModForumProvider.REPLY_DISCUSSION_EVENT,
+                this.eventReceived.bind(this, false));
 
         // Select the current opened discussion.
         this.viewDiscObserver = this.eventsProvider.on(AddonModForumProvider.VIEW_DISCUSSION_EVENT, (data) => {
@@ -389,11 +391,33 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom
     /**
      * Function called when we receive an event of new discussion or reply to discussion.
      *
+     * @param {boolean} isNewDiscussion Whether it's a new discussion event.
      * @param {any} data Event data.
      */
-    protected eventReceived(data: any): void {
+    protected eventReceived(isNewDiscussion: boolean, data: any): void {
         if ((this.forum && this.forum.id === data.forumId) || data.cmId === this.module.id) {
-            this.showLoadingAndRefresh(false);
+            if (isNewDiscussion && this.splitviewCtrl.isOn()) {
+                // Discussion added, clear details page.
+                this.splitviewCtrl.emptyDetails();
+            }
+
+            this.showLoadingAndRefresh(false).finally(() => {
+                // If it's a new discussion in tablet mode, try to open it.
+                if (isNewDiscussion && this.splitviewCtrl.isOn()) {
+
+                    if (data.discussionId) {
+                        // Discussion sent to server, search it in the list of discussions.
+                        const discussion = this.discussions.find((disc) => { return disc.discussion == data.discussionId; });
+                        if (discussion) {
+                            this.openDiscussion(discussion);
+                        }
+
+                    } else if (data.discTimecreated) {
+                        // It's an offline discussion, open it.
+                        this.openNewDiscussion(data.discTimecreated);
+                    }
+                }
+            });
 
             // Check completion since it could be configured to complete once the user adds a new discussion or replies.
             this.courseProvider.checkModuleCompletion(this.courseId, this.module.completionstatus);
@@ -430,6 +454,8 @@ export class AddonModForumIndexComponent extends CoreCourseModuleMainActivityCom
             timeCreated: timeCreated,
         };
         this.splitviewCtrl.push('AddonModForumNewDiscussionPage', params);
+
+        this.selectedDiscussion = 0;
     }
 
     /**
diff --git a/src/addon/mod/forum/pages/new-discussion/new-discussion.ts b/src/addon/mod/forum/pages/new-discussion/new-discussion.ts
index e5bc20b4e..bb5c7f95a 100644
--- a/src/addon/mod/forum/pages/new-discussion/new-discussion.ts
+++ b/src/addon/mod/forum/pages/new-discussion/new-discussion.ts
@@ -354,12 +354,14 @@ export class AddonModForumNewDiscussionPage implements OnDestroy {
      * Convenience function to update or return to discussions depending on device.
      *
      * @param {number} [discussionId] Id of the new discussion.
+     * @param {number} [discTimecreated] The time created of the discussion (if offline).
      */
-    protected returnToDiscussions(discussionId?: number): void {
+    protected returnToDiscussions(discussionId?: number, discTimecreated?: number): void {
         const data: any = {
             forumId: this.forumId,
             cmId: this.cmId,
             discussionId: discussionId,
+            discTimecreated: discTimecreated
         };
         this.eventsProvider.trigger(AddonModForumProvider.NEW_DISCUSSION_EVENT, data, this.sitesProvider.getCurrentSiteId());
 
@@ -467,7 +469,7 @@ export class AddonModForumNewDiscussionPage implements OnDestroy {
                 this.forumHelper.deleteNewDiscussionStoredFiles(this.forumId, discTimecreated);
             }
 
-            this.returnToDiscussions(discussionId);
+            this.returnToDiscussions(discussionId, discTimecreated);
         }).catch((message) => {
             this.domUtils.showErrorModalDefault(message, 'addon.mod_forum.cannotcreatediscussion', true);
         }).finally(() => {