From e16614bce8c2433e012df2d3f60b1dde9465b7de Mon Sep 17 00:00:00 2001
From: Robert Rollins <rrollins@caltech.edu>
Date: Wed, 1 Nov 2023 16:31:05 -0700
Subject: [PATCH] Add next_url to Edit and Add Child page-listing buttons
 (#11170)

---
 CHANGELOG.txt                  | 1 +
 docs/releases/6.0.md           | 1 +
 wagtail/admin/wagtail_hooks.py | 6 ++++--
 3 files changed, 6 insertions(+), 2 deletions(-)

diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index e98a4c403b..9e5cb8c4f8 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -5,6 +5,7 @@ Changelog
 ~~~~~~~~~~~~~~~~
 
  * Added `search_index` option to StreamField blocks to control whether the block is indexed for searching (Vedant Pandey)
+ * Remember previous location on returning from page add/edit actions (Robert Rollins)
  * Fix: Update system check for overwriting storage backends to recognise the `STORAGES` setting introduced in Django 4.2 (phijma-leukeleu)
  * Fix: Prevent password change form from raising a validation error when browser autocomplete fills in the "Old password" field (Chiemezuo Akujobi)
  * Fix: Ensure that the legacy dropdown options, when closed, do not get accidentally clicked by other interactions wide viewports (CheesyPhoenix, Christer Jensen)
diff --git a/docs/releases/6.0.md b/docs/releases/6.0.md
index b94fcbe089..bb502f1234 100644
--- a/docs/releases/6.0.md
+++ b/docs/releases/6.0.md
@@ -15,6 +15,7 @@ depth: 1
 ### Other features
 
  * Added `search_index` option to StreamField blocks to control whether the block is indexed for searching (Vedant Pandey)
+ * Remember previous location on returning from page add/edit actions (Robert Rollins)
 
 ### Bug fixes
 
diff --git a/wagtail/admin/wagtail_hooks.py b/wagtail/admin/wagtail_hooks.py
index 8542e30f38..f85b0cd02e 100644
--- a/wagtail/admin/wagtail_hooks.py
+++ b/wagtail/admin/wagtail_hooks.py
@@ -375,10 +375,12 @@ class PageListingSortMenuOrderButton(PageListingButton):
 
 @hooks.register("register_page_listing_more_buttons")
 def page_listing_more_buttons(page, user, next_url=None):
-    yield PageListingEditButton(page=page, user=user, priority=2)
+    yield PageListingEditButton(page=page, user=user, next_url=next_url, priority=2)
     yield PageListingViewDraftButton(page=page, user=user, priority=4)
     yield PageListingViewLiveButton(page=page, user=user, url=page.url, priority=6)
-    yield PageListingAddChildPageButton(page=page, user=user, priority=8)
+    yield PageListingAddChildPageButton(
+        page=page, user=user, next_url=next_url, priority=8
+    )
     yield PageListingMoveButton(page=page, user=user, priority=10)
     yield PageListingCopyButton(page=page, user=user, next_url=next_url, priority=20)
     yield PageListingDeleteButton(page=page, user=user, next_url=next_url, priority=30)