Skip to content

Make the barrier panel on the Material Drawer non-dismissible #164810

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged

Conversation

romanejaquez
Copy link
Contributor

@romanejaquez romanejaquez commented Mar 7, 2025

This PR entails making the modal barrier behind the Material Drawer dismissible / non-dismissible via a Scaffold flag named "drawerBarrierDismissible", as in:

Scaffold(
   drawerBarrierDismissible: false, // defaults to true so it behaves as normal
   ....
)

This is so as to force the Drawer to be opened / closed programmatically using either:

Scaffold.of(context).openEndDrawer() / openDrawer()

or

Scaffold.of(Utils.adminNav.currentContext!).closeDrawer() / closeEndDrawer()

and the user not closing the Drawer upon tapping on the modal barrier.

Pre-launch Checklist

  • I read the [Contributor Guide] and followed the process outlined there for submitting PRs.
  • I read the [Tree Hygiene] wiki page, which explains my responsibilities.
  • I read and followed the [Flutter Style Guide], including [Features we expect every widget to implement].
  • I signed the [CLA].
  • I listed at least one issue that this PR fixes in the description above.
  • I updated/added relevant documentation (doc comments with ///).
  • I added new tests to check the change I am making, or this PR is [test-exempt].
  • I followed the [breaking change policy] and added [Data Driven Fixes] where supported.
  • All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on [Discord].

@romanejaquez romanejaquez requested a review from matanlurey as a code owner March 7, 2025 19:56
@github-actions github-actions bot added framework flutter/packages/flutter repository. See also f: labels. f: material design flutter/packages/flutter/material repository. labels Mar 7, 2025
@dkwingsmt dkwingsmt self-requested a review March 19, 2025 18:21
// If set to false, prevents the barrier behind the [Drawer] from being dismissed.
// Defaults to true. The value of this flag also gets inherited by the parent Scaffold,
// or can be overridden if a [DrawerController] is extended and this value set accordingly.
final bool drawerDismissible;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I wonder why we call it drawerDismissible here instead of simply dismissible, since this is already known as a DrawerController. (I know some other properties are also prefixed with "drawer", which also appears weird to me.)

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd totally be open to call it dismissible - I was just trying to keep the existing convention which I also thought it was a bit redundant but didn't want to have to change the rest if there was a purpose for it.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got it. Can you rename it to dismissible?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

will do!

Comment on lines 1740 to 1742
/// If false, and a [drawer] is specified, then the barrier behind the drawer should not
/// respond to a tap event and thus remain open. The default behavior is to close upon the
/// user tapping on the barrier.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Same doc style guide problem as above.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this should be split into 2 paragraphs so that the first paragraph is a single sentence, per the styleguide.

@@ -27,4 +27,109 @@ void main() {
await tester.pumpAndSettle();
expect(findHeadingLevelOnes, findsOne);
});

testWidgets('drawer is dismissible', (WidgetTester tester) async {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unless it's intentional, test cases should reside in packages/flutter/test/material/drawer_test.dart, not a11y_assessments.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no, not intentional. I actually saw some of the other drawer tests there so I wanted to put them along with the rest, but these can easily be moved wherever is more appropriate.

romanejaquez and others added 2 commits April 4, 2025 14:31
Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
…missible"; moved tests topackages/flutter/test/material/drawer_test.dart
@matanlurey matanlurey removed their request for review April 9, 2025 18:56
@dkwingsmt
Copy link
Contributor

Can you move the test to the unit test file? (packages/flutter/test/material/drawer_test.dart) Also there are some analyser issues.



   info • Missing a newline at the end of the file • dev/a11y_assessments/lib/use_cases/drawer.dart:80:2 • eol_at_end_of_file
   info • The value of the argument is redundant because it matches the default value • packages/flutter/test/material/drawer_test.dart:772:30 • avoid_redundant_argument_values
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:774:54 • prefer_const_constructors
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:776:22 • prefer_const_constructors
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:779:20 • prefer_const_constructors
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:785:20 • prefer_const_constructors
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:786:22 • prefer_const_constructors
   info • Missing type annotation • packages/flutter/test/material/drawer_test.dart:794:5 • always_specify_types
   info • Missing type annotation • packages/flutter/test/material/drawer_test.dart:823:5 • always_specify_types
   info • Missing type annotation • packages/flutter/test/material/drawer_test.dart:826:5 • always_specify_types
   info • Missing type annotation • packages/flutter/test/material/drawer_test.dart:830:5 • always_specify_types
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:830:32 • prefer_const_constructors
   info • Missing type annotation • packages/flutter/test/material/drawer_test.dart:831:5 • always_specify_types
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:850:54 • prefer_const_constructors
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:852:22 • prefer_const_constructors
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:855:20 • prefer_const_constructors
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:861:20 • prefer_const_constructors
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:862:22 • prefer_const_constructors
   info • Missing type annotation • packages/flutter/test/material/drawer_test.dart:870:5 • always_specify_types
   info • Missing type annotation • packages/flutter/test/material/drawer_test.dart:899:5 • always_specify_types
   info • Missing type annotation • packages/flutter/test/material/drawer_test.dart:902:5 • always_specify_types
   info • Missing type annotation • packages/flutter/test/material/drawer_test.dart:906:5 • always_specify_types
   info • Use 'const' with the constructor to improve performance • packages/flutter/test/material/drawer_test.dart:906:32 • prefer_const_constructors
   info • Missing type annotation • packages/flutter/test/material/drawer_test.dart:907:5 • always_specify_types

@dkwingsmt
Copy link
Contributor

One analyzer issue missing

   info � Missing a newline at the end of the file � packages/flutter/test/material/drawer_test.dart:1005:2 � eol_at_end_of_file

Copy link
Contributor

@dkwingsmt dkwingsmt left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM

Copy link
Contributor

@justinmc justinmc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few small things here, and it looks like the analyzer is failing. Thank you for the PR!

Is there an issue for this by the way?

Comment on lines 1740 to 1742
/// If false, and a [drawer] is specified, then the barrier behind the drawer should not
/// respond to a tap event and thus remain open. The default behavior is to close upon the
/// user tapping on the barrier.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

+1, this should be split into 2 paragraphs so that the first paragraph is a single sentence, per the styleguide.

),
);

// check the flag is set at the Scaffold level
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nit: Capital letter at the start and period at the end, here and elsewhere.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Took care of the comments above. However for the comment on the scaffold.dart, for the first sentence I had to split it into 2 because it would exceed the max length on a comment line.
Fixed the punctuation and capitalization on the other comments - thank you for catching that.

@@ -851,3 +1003,5 @@ void main() {
});
});
}

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove these newlines.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

gotcha - addressed the newline issue on the drawer_test.dart, but for some reason the Linux analyzer keeps barking on the newline not being added.

romanejaquez and others added 3 commits April 21, 2025 14:35
Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
Co-authored-by: Tong Mu <dkwingsmt@users.noreply.github.com>
@romanejaquez
Copy link
Contributor Author

Just a few small things here, and it looks like the analyzer is failing. Thank you for the PR!

Is there an issue for this by the way?

@dkwingsmt
Copy link
Contributor

The analyzer errors seem to be only format errors, which can be resolved by running dart format . under the packages/flutter directory.

@romanejaquez
Copy link
Contributor Author

The analyzer errors seem to be only format errors, which can be resolved by running dart format . under the packages/flutter directory.

will do 👍

@dkwingsmt dkwingsmt requested a review from justinmc April 23, 2025 22:24
@justinmc
Copy link
Contributor

justinmc commented May 9, 2025

This is probably good to go but I will give it a closer re-review on Monday. Sorry for the delay.

Copy link
Contributor

@justinmc justinmc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM but I see a few things that you seem to have intended to change but didn't. See my comments below. Maybe you forgot to push a commit.

@@ -339,6 +339,7 @@ class DrawerController extends StatefulWidget {
this.scrimColor,
this.edgeDragWidth,
this.enableOpenDragGesture = true,
this.drawerBarrierDismissible = true,
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like the name drawerBarrierDismissible and I don't think it's too long 👍

final ScaffoldState state = tester.firstState(find.byType(Scaffold));
state.openEndDrawer();

await tester.pump();
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This pump is still here.

state.openEndDrawer();

await tester.pump();
await tester.pump(const Duration(seconds: 1));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This hasn't been replaced by pumpAndSettle (also below).


expect(find.byType(Drawer), findsExactly(1));

// Tap on the modal barrier.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This hasn't been removed.

romanejaquez and others added 2 commits May 12, 2025 16:21
@romanejaquez
Copy link
Contributor Author

LGTM but I see a few things that you seem to have intended to change but didn't. See my comments below. Maybe you forgot to push a commit.

Thanks for the comments. I was missing one additional commit where those remaining changes were - also I left the previous tests there as-is as I didn't want to disrupt anything else other than the ones I added (since I saw a bunch of other pumps and such, and whoever added those must've added them for a reason).

@dkwingsmt dkwingsmt added the autosubmit Merge PR when tree becomes green via auto submit App label May 12, 2025
@auto-submit auto-submit bot added this pull request to the merge queue May 12, 2025
Merged via the queue into flutter:master with commit 5c80840 May 13, 2025
76 checks passed
@flutter-dashboard flutter-dashboard bot removed the autosubmit Merge PR when tree becomes green via auto submit App label May 13, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 13, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request May 13, 2025
auto-submit bot pushed a commit to flutter/packages that referenced this pull request May 13, 2025
flutter/flutter@54de32d...336a7ec

2025-05-13 sokolovskyi.konstantin@gmail.com Add assert for index parameter in IndexedStack. (flutter/flutter#167757)
2025-05-13 jessiewong401@gmail.com Fixed Android Lint Errors (flutter/flutter#168613)
2025-05-13 bruno.leroux@gmail.com Tab bar theme and dialog theme documentation cleanup (flutter/flutter#168724)
2025-05-13 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 6vjKe0bfYDVaECqBL... to 6J81agNhuK4q255Jj... (flutter/flutter#168712)
2025-05-12 romanejaquez@gmail.com Make the barrier panel on the Material Drawer non-dismissible (flutter/flutter#164810)
2025-05-12 engine-flutter-autoroll@skia.org Roll ICU from c9fb4b3a6fb5 to b929596baebf (5 revisions) (flutter/flutter#168691)
2025-05-12 bruno.leroux@gmail.com Fix DropdownButtonFormField icon not vertically centered (flutter/flutter#163205)
2025-05-12 jmccandless@google.com Android home/end keyboard shortcut support (flutter/flutter#168184)
2025-05-12 matanlurey@users.noreply.github.com Update `TESTOWNERS` for Android PV tests (flutter/flutter#168694)
2025-05-12 engine-flutter-autoroll@skia.org Roll Dart SDK from 0bea6379f654 to 645d04a7a964 (14 revisions) (flutter/flutter#168679)
2025-05-12 chinmaygarde@google.com [Impeller] libImpeller: Allow setting text decorations. (flutter/flutter#168408)
2025-05-12 34871572+gmackall@users.noreply.github.com Error when trying to use old HC mode when HCPP is enabled (flutter/flutter#168027)
2025-05-12 victorsanniay@gmail.com Nav bar back label is not clipped mid-transition (flutter/flutter#168194)
2025-05-12 58529443+srujzs@users.noreply.github.com Add test for stack trace mapping and test expression eval tests using DDC library bundle format (flutter/flutter#168017)
2025-05-12 victorsanniay@gmail.com Remove CupertinoSliverNavigationBar background box when large title is extended (flutter/flutter#168407)
2025-05-12 1063596+reidbaker@users.noreply.github.com Label platform view modes using the unified naming scheme (flutter/flutter#168670)
2025-05-12 engine-flutter-autoroll@skia.org Roll Packages from 7814fab to 6a28ad9 (2 revisions) (flutter/flutter#168669)
2025-05-12 matanlurey@users.noreply.github.com Update `Engine-artifacts.md` to reflect the new `engine.version` verifier (flutter/flutter#168413)
2025-05-12 engine-flutter-autoroll@skia.org Roll Skia from 9f9e1f37917e to c97451da059f (1 revision) (flutter/flutter#168671)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
FMorschel pushed a commit to FMorschel/packages that referenced this pull request Jun 9, 2025
…r#9246)

flutter/flutter@54de32d...336a7ec

2025-05-13 sokolovskyi.konstantin@gmail.com Add assert for index parameter in IndexedStack. (flutter/flutter#167757)
2025-05-13 jessiewong401@gmail.com Fixed Android Lint Errors (flutter/flutter#168613)
2025-05-13 bruno.leroux@gmail.com Tab bar theme and dialog theme documentation cleanup (flutter/flutter#168724)
2025-05-13 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 6vjKe0bfYDVaECqBL... to 6J81agNhuK4q255Jj... (flutter/flutter#168712)
2025-05-12 romanejaquez@gmail.com Make the barrier panel on the Material Drawer non-dismissible (flutter/flutter#164810)
2025-05-12 engine-flutter-autoroll@skia.org Roll ICU from c9fb4b3a6fb5 to b929596baebf (5 revisions) (flutter/flutter#168691)
2025-05-12 bruno.leroux@gmail.com Fix DropdownButtonFormField icon not vertically centered (flutter/flutter#163205)
2025-05-12 jmccandless@google.com Android home/end keyboard shortcut support (flutter/flutter#168184)
2025-05-12 matanlurey@users.noreply.github.com Update `TESTOWNERS` for Android PV tests (flutter/flutter#168694)
2025-05-12 engine-flutter-autoroll@skia.org Roll Dart SDK from 0bea6379f654 to 645d04a7a964 (14 revisions) (flutter/flutter#168679)
2025-05-12 chinmaygarde@google.com [Impeller] libImpeller: Allow setting text decorations. (flutter/flutter#168408)
2025-05-12 34871572+gmackall@users.noreply.github.com Error when trying to use old HC mode when HCPP is enabled (flutter/flutter#168027)
2025-05-12 victorsanniay@gmail.com Nav bar back label is not clipped mid-transition (flutter/flutter#168194)
2025-05-12 58529443+srujzs@users.noreply.github.com Add test for stack trace mapping and test expression eval tests using DDC library bundle format (flutter/flutter#168017)
2025-05-12 victorsanniay@gmail.com Remove CupertinoSliverNavigationBar background box when large title is extended (flutter/flutter#168407)
2025-05-12 1063596+reidbaker@users.noreply.github.com Label platform view modes using the unified naming scheme (flutter/flutter#168670)
2025-05-12 engine-flutter-autoroll@skia.org Roll Packages from 7814fab to 6a28ad9 (2 revisions) (flutter/flutter#168669)
2025-05-12 matanlurey@users.noreply.github.com Update `Engine-artifacts.md` to reflect the new `engine.version` verifier (flutter/flutter#168413)
2025-05-12 engine-flutter-autoroll@skia.org Roll Skia from 9f9e1f37917e to c97451da059f (1 revision) (flutter/flutter#168671)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
Ortes pushed a commit to Ortes/packages that referenced this pull request Jun 25, 2025
…r#9246)

flutter/flutter@54de32d...336a7ec

2025-05-13 sokolovskyi.konstantin@gmail.com Add assert for index parameter in IndexedStack. (flutter/flutter#167757)
2025-05-13 jessiewong401@gmail.com Fixed Android Lint Errors (flutter/flutter#168613)
2025-05-13 bruno.leroux@gmail.com Tab bar theme and dialog theme documentation cleanup (flutter/flutter#168724)
2025-05-13 engine-flutter-autoroll@skia.org Roll Fuchsia Linux SDK from 6vjKe0bfYDVaECqBL... to 6J81agNhuK4q255Jj... (flutter/flutter#168712)
2025-05-12 romanejaquez@gmail.com Make the barrier panel on the Material Drawer non-dismissible (flutter/flutter#164810)
2025-05-12 engine-flutter-autoroll@skia.org Roll ICU from c9fb4b3a6fb5 to b929596baebf (5 revisions) (flutter/flutter#168691)
2025-05-12 bruno.leroux@gmail.com Fix DropdownButtonFormField icon not vertically centered (flutter/flutter#163205)
2025-05-12 jmccandless@google.com Android home/end keyboard shortcut support (flutter/flutter#168184)
2025-05-12 matanlurey@users.noreply.github.com Update `TESTOWNERS` for Android PV tests (flutter/flutter#168694)
2025-05-12 engine-flutter-autoroll@skia.org Roll Dart SDK from 0bea6379f654 to 645d04a7a964 (14 revisions) (flutter/flutter#168679)
2025-05-12 chinmaygarde@google.com [Impeller] libImpeller: Allow setting text decorations. (flutter/flutter#168408)
2025-05-12 34871572+gmackall@users.noreply.github.com Error when trying to use old HC mode when HCPP is enabled (flutter/flutter#168027)
2025-05-12 victorsanniay@gmail.com Nav bar back label is not clipped mid-transition (flutter/flutter#168194)
2025-05-12 58529443+srujzs@users.noreply.github.com Add test for stack trace mapping and test expression eval tests using DDC library bundle format (flutter/flutter#168017)
2025-05-12 victorsanniay@gmail.com Remove CupertinoSliverNavigationBar background box when large title is extended (flutter/flutter#168407)
2025-05-12 1063596+reidbaker@users.noreply.github.com Label platform view modes using the unified naming scheme (flutter/flutter#168670)
2025-05-12 engine-flutter-autoroll@skia.org Roll Packages from 7814fab to 6a28ad9 (2 revisions) (flutter/flutter#168669)
2025-05-12 matanlurey@users.noreply.github.com Update `Engine-artifacts.md` to reflect the new `engine.version` verifier (flutter/flutter#168413)
2025-05-12 engine-flutter-autoroll@skia.org Roll Skia from 9f9e1f37917e to c97451da059f (1 revision) (flutter/flutter#168671)

If this roll has caused a breakage, revert this CL and stop the roller
using the controls here:
https://autoroll.skia.org/r/flutter-packages
Please CC stuartmorgan@google.com on the revert to ensure that a human
is aware of the problem.

To file a bug in Packages: https://github.com/flutter/flutter/issues/new/choose

To report a problem with the AutoRoller itself, please file a bug:
https://issues.skia.org/issues/new?component=1389291&template=1850622

Documentation for the AutoRoller is here:
https://skia.googlesource.com/buildbot/+doc/main/autoroll/README.md
@talski
Copy link

talski commented Aug 4, 2025

Should the "Esc" key still close the drawer?

I'm testing and I can't close it by clicking outside, but I think the "Esc" key shouldn't close the drawer either, but it currently can.

@romanejaquez
Copy link
Contributor Author

Should the "Esc" key still close the drawer?

I'm testing and I can't close it by clicking outside, but I think the "Esc" key shouldn't close the drawer either, but it currently can.

You are correct - ESC shouldn't close it. I'll submit a PR to fix that. Thanks for flagging it!

@dkwingsmt
Copy link
Contributor

Good call, and I agree! Feel free to let me review it.

@romanejaquez
Copy link
Contributor Author

Good call, and I agree! Feel free to let me review it.

here's the PR for review! => #173263

engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 14, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 15, 2025
engine-flutter-autoroll added a commit to engine-flutter-autoroll/packages that referenced this pull request Aug 16, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
f: material design flutter/packages/flutter/material repository. framework flutter/packages/flutter repository. See also f: labels.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants