Skip to content

Commit c18c7ff

Browse files
authored
fix: Fix Flyout auto-closing when creating a var. (#8982)
## The basics - [x] I [validated my changes](https://developers.google.com/blockly/guides/contribute/core#making_and_verifying_a_change) ## The details ### Resolves Fixes #8976 ### Proposed Changes Only auto-close the flyout if focus is being lost to a known tree. ### Reason for Changes I noticed from testing that the system does attempt to restore focus back to the flyout after creating a variable but the auto-closing logic was kicking in due to focus being lost with the variable creation prompt open. Even though an attempt was made to restore focus, this doesn't automatically reopen the flyout (since it is primarily governed by the toolbox selection state). One alternative might be to try and save the previously selected toolbox category and restore it, but that's tricky. This seems simpler, and also seems to largely maintain parity with pre-focus manager Blockly. Clicking outside of the toolbox with the flyout open only closes it if the click is within the toolbox itself or within the workspace. ### Test Coverage No new tests were added. However, it may be worth considering this specific case for future tests added with #8915. ### Documentation No new documentation seems necessary here. ### Additional Information None.
1 parent 6b69541 commit c18c7ff

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

core/workspace_svg.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2755,8 +2755,9 @@ export class WorkspaceSvg
27552755

27562756
/** See IFocusableTree.onTreeBlur. */
27572757
onTreeBlur(nextTree: IFocusableTree | null): void {
2758-
// If the flyout loses focus, make sure to close it.
2759-
if (this.isFlyout && this.targetWorkspace) {
2758+
// If the flyout loses focus, make sure to close it unless focus is being
2759+
// lost to a different element on the page.
2760+
if (nextTree && this.isFlyout && this.targetWorkspace) {
27602761
// Only hide the flyout if the flyout's workspace is losing focus and that
27612762
// focus isn't returning to the flyout itself or the toolbox.
27622763
const flyout = this.targetWorkspace.getFlyout();

0 commit comments

Comments
 (0)