Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 1 addition & 7 deletions src/actions/action_menu.ts
Original file line number Diff line number Diff line change
Expand Up @@ -54,14 +54,8 @@ export class ActionMenu {
callback: (workspace) => {
switch (this.navigation.getState(workspace)) {
case Constants.STATE.WORKSPACE:
case Constants.STATE.FLYOUT:
return this.openActionMenu(workspace);
case Constants.STATE.FLYOUT: {
const flyoutWorkspace = workspace.getFlyout()?.getWorkspace();
if (flyoutWorkspace) {
return this.openActionMenu(flyoutWorkspace);
}
return false;
}
default:
return false;
}
Expand Down
36 changes: 22 additions & 14 deletions src/actions/arrow_navigation.ts
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,9 @@ export class ArrowNavigation {
shortcut: ShortcutRegistry.KeyboardShortcut,
): boolean => {
const toolbox = workspace.getToolbox() as Toolbox;
const flyout = workspace.getFlyout();
const flyout = workspace.isFlyout
? workspace.targetWorkspace?.getFlyout()
: workspace.getFlyout();
let isHandled = false;
switch (this.navigation.getState(workspace)) {
case Constants.STATE.WORKSPACE:
Expand Down Expand Up @@ -91,7 +93,9 @@ export class ArrowNavigation {
e: Event,
shortcut: ShortcutRegistry.KeyboardShortcut,
): boolean => {
const toolbox = workspace.getToolbox() as Toolbox;
const toolbox = workspace.isFlyout
? workspace.targetWorkspace?.getToolbox()
: (workspace.getToolbox() as Toolbox);
let isHandled = false;
switch (this.navigation.getState(workspace)) {
case Constants.STATE.WORKSPACE:
Expand Down Expand Up @@ -156,8 +160,6 @@ export class ArrowNavigation {
this.navigation.canCurrentlyNavigate(workspace),
callback: (workspace, e, shortcut) => {
keyboardNavigationController.setIsActive(true);
const toolbox = workspace.getToolbox() as Toolbox;
const flyout = workspace.getFlyout();
let isHandled = false;
switch (this.navigation.getState(workspace)) {
case Constants.STATE.WORKSPACE:
Expand All @@ -175,14 +177,19 @@ export class ArrowNavigation {
return isHandled;
case Constants.STATE.FLYOUT:
isHandled = this.fieldShortcutHandler(workspace, shortcut);
if (!isHandled && flyout) {
if (!this.navigation.defaultFlyoutCursorIfNeeded(workspace)) {
flyout.getWorkspace()?.getCursor()?.next();
if (!isHandled && workspace.targetWorkspace) {
if (
!this.navigation.defaultFlyoutCursorIfNeeded(
workspace.targetWorkspace,
)
) {
workspace.getCursor()?.next();
}
isHandled = true;
}
return isHandled;
case Constants.STATE.TOOLBOX:
case Constants.STATE.TOOLBOX: {
const toolbox = workspace.getToolbox() as Toolbox;
if (toolbox) {
if (!toolbox.getSelectedItem()) {
const firstItem =
Expand All @@ -201,6 +208,7 @@ export class ArrowNavigation {
}
}
return isHandled;
}
default:
return false;
}
Expand All @@ -214,8 +222,6 @@ export class ArrowNavigation {
this.navigation.canCurrentlyNavigate(workspace),
callback: (workspace, e, shortcut) => {
keyboardNavigationController.setIsActive(true);
const flyout = workspace.getFlyout();
const toolbox = workspace.getToolbox() as Toolbox;
let isHandled = false;
switch (this.navigation.getState(workspace)) {
case Constants.STATE.WORKSPACE:
Expand All @@ -234,19 +240,20 @@ export class ArrowNavigation {
return isHandled;
case Constants.STATE.FLYOUT:
isHandled = this.fieldShortcutHandler(workspace, shortcut);
if (!isHandled && flyout) {
if (!isHandled && workspace.targetWorkspace) {
if (
!this.navigation.defaultFlyoutCursorIfNeeded(
workspace,
workspace.targetWorkspace,
'last',
)
) {
flyout.getWorkspace()?.getCursor()?.prev();
workspace.getCursor()?.prev();
}
isHandled = true;
}
return isHandled;
case Constants.STATE.TOOLBOX:
case Constants.STATE.TOOLBOX: {
const toolbox = workspace.getToolbox() as Toolbox;
if (toolbox) {
// @ts-expect-error private method
isHandled = toolbox.selectPrevious();
Expand All @@ -256,6 +263,7 @@ export class ArrowNavigation {
}
}
return isHandled;
}
default:
return false;
}
Expand Down
7 changes: 5 additions & 2 deletions src/actions/enter.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

import {
Events,
Msg,

Check warning on line 9 in src/actions/enter.ts

View workflow job for this annotation

GitHub Actions / Eslint check

'Msg' is defined but never used
ShortcutRegistry,
utils as BlocklyUtils,
getFocusManager,
Expand Down Expand Up @@ -67,13 +67,16 @@
this.handleEnterForWS(workspace);
return true;
case Constants.STATE.FLYOUT:
flyoutCursor = this.navigation.getFlyoutCursor(workspace);
if (!workspace.targetWorkspace) return false;
flyoutCursor = this.navigation.getFlyoutCursor(
workspace.targetWorkspace,
);
if (!flyoutCursor) {
return false;
}
curNode = flyoutCursor.getCurNode();
if (curNode instanceof BlockSvg) {
this.insertFromFlyout(workspace);
this.insertFromFlyout(workspace.targetWorkspace);
} else if (curNode instanceof FlyoutButton) {
this.triggerButtonCallback(workspace);
}
Expand Down
2 changes: 1 addition & 1 deletion src/actions/exit.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ export class ExitAction {
switch (this.navigation.getState(workspace)) {
case Constants.STATE.FLYOUT:
case Constants.STATE.TOOLBOX:
getFocusManager().focusTree(workspace);
getFocusManager().focusTree(workspace.targetWorkspace ?? workspace);
if (!Gesture.inProgress()) {
workspace.hideChaff();
}
Expand Down
4 changes: 3 additions & 1 deletion src/navigation_controller.ts
Original file line number Diff line number Diff line change
Expand Up @@ -203,7 +203,9 @@ export class NavigationController {
switch (this.navigation.getState(workspace)) {
case Constants.STATE.WORKSPACE:
Blockly.getFocusManager().focusTree(
workspace.getToolbox() ?? workspace.getFlyout() ?? workspace,
workspace.getToolbox() ??
workspace.getFlyout()?.getWorkspace() ??
workspace,
);
return true;
default:
Expand Down
1 change: 1 addition & 0 deletions test/webdriverio/test/flyout_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -138,6 +138,7 @@ suite('Toolbox and flyout test', function () {

test('Tabbing to the workspace should close the flyout', async function () {
await tabNavigateToWorkspace(this.browser);
await this.browser.pause(PAUSE_TIME);

// The flyout should be closed since it lost focus.
const flyoutIsOpen = await checkIfFlyoutIsOpen(this.browser);
Expand Down
Loading