Skip to content

Conversation

@microbit-matt-hillsdon
Copy link
Contributor

@microbit-matt-hillsdon microbit-matt-hillsdon commented Apr 1, 2025

  • Switch to focusin/out for toolbox
    • This might make sense more widely in future if we get more fine-grained focus. What will start to matter is focus entering/leaving an area. The MakeCode toolbox has a search input field alongside the category tree that needs to take the focus.
  • Drop the tab index fiddling as it's not practical to get it right in the face of more than one tab stop in the toolbox, especially if that toolbox has a DOM structure not known to the plugin.

Given that we're reinstating the ability to shift-tab flyout->toolbox it makes sense to allow tab to the flyout. Shift-tab to the flyout remains not possible in the auto-hide case but that's not unreasonable.

This version can be made to work with MakeCode. It might not be the ideal integration but it's a start.

I've structured this PR as commit based against the last v11 version then a merge of main as that v11 version is useful to me to test with MakeCode until we get Blockly 12 sorted.

Demo: https://toolbox-focus.blockly-keyboard-experimentation.pages.dev/

- Switch to focusin/out for toolbox (maybe in future elsewhere)
- Drop the tab index fiddling as it's not practical to get it right in the face
  of more than one tab stop in the toolbox, especially if that toolbox has a
  DOM structure not known to the plugin.

  Given that we're reinstating the ability to shift-tab flyout->toolbox it
  makes sense to allow tab to the flyout. Shift-tab to the flyout remains not
  possible in the auto-hide case but that's not unreasonable.

This version can be made to work with MakeCode without further modifications.
@microbit-matt-hillsdon microbit-matt-hillsdon requested a review from a team as a code owner April 1, 2025 13:45
@microbit-matt-hillsdon microbit-matt-hillsdon requested review from maribethb and removed request for a team April 1, 2025 13:45
microbit-matt-hillsdon added a commit to microbit-matt-hillsdon/pxt that referenced this pull request Apr 1, 2025
Maybe we'll want workspace focus to be inside of the toolbox, TBD.

Plugin based on the Blockly 11 commit of
RaspberryPiFoundation/blockly-keyboard-experimentation#358
@rachel-fenichel rachel-fenichel requested review from rachel-fenichel and removed request for maribethb April 1, 2025 15:57
@rachel-fenichel rachel-fenichel self-assigned this Apr 1, 2025
@rachel-fenichel rachel-fenichel merged commit b4fe52d into RaspberryPiFoundation:main Apr 1, 2025
2 checks passed
microbit-grace pushed a commit to microbit-matt-hillsdon/blockly-keyboard-experimentation that referenced this pull request Apr 2, 2025
…tion (RaspberryPiFoundation#352)

* feat: Introduce Mover class, moving mode

Introduce the Mover class, with shortcuts that will put a workspace
into (and exit from) moving mode.

While in moving mode, cursor navigation via the cursor keys is
disabled.

* feat: Save block starting location and connections

* feat: Experiment: unconstrained movement using Dragger

Create an experimental implementation of unconstrained dragging
using the existing Dragger class.  Implement this on a new
Mover subclass DragMover, to keep this experimental code (that
will probably be thrown away) separate from the main Mover
implementation.

Known bugs:

* Blocks lurch around somewhat wildly while being moved.
* Moving top-level blocks works reasonably well, but attempting
  to move a non-top-level block will result in it being deleted
  unless the move is aborted.

* feat: Add Move Block (M) context menu item

* fix: Allow ctrl+arrows to also perform unconstrained moves

Alt+arrows causes browser navigation on Windows.  :-(

* fix: Use better fake PointerEvents to prevent random deletions

There was a bug that would often cause blocks to be deleted.  This
was because the dragger thought the block was on the toolbox,
which is a delete area.

Fix this by giving the dragger much better fake PointerEvents,
so that it knows where the block actually is - good enough that
you can move the block to the trash can and it will be deleted!

* chore: address feedback from RaspberryPiFoundation#317

* chore: lint and format

* fix: remove allowCollision for m

* fix: RaspberryPiFoundation#356 by hiding the connection preview before reverting a drag

* fix: spelling

---------

Co-authored-by: Christopher Allen <cpcallen+git@google.com>

feat: heuristic insert (RaspberryPiFoundation#355)

* chore: simplify tryToConnectNodes

We only insert blocks so remove other cases.

* feat: heurstic insertion logic

- use first statement or value input
- in statement inputs move to the last next connection in the chain
- use next connections over previous connections

chore: convert webdriverio tests to TypeScript (RaspberryPiFoundation#353)

* chore: convert webdriverio tests to TypeScript

* chore: comment typo fix

feat: allow for toolbox with multiple tab stops (RaspberryPiFoundation#358)

- Switch to focusin/out for toolbox (maybe in future elsewhere)
- Drop the tab index fiddling as it's not practical to get it right in the face
  of more than one tab stop in the toolbox, especially if that toolbox has a
  DOM structure not known to the plugin.

  Given that we're reinstating the ability to shift-tab flyout->toolbox it
  makes sense to allow tab to the flyout. Shift-tab to the flyout remains not
  possible in the auto-hide case but that's not unreasonable.

This version can be made to work with MakeCode without further modifications.

feat: use ts and factor out helper functions
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants