Skip to content
New issue

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

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

Already on GitHub? # to your account

Make placing blocks using the marker more intuitive #102

Closed
2 of 4 tasks
cpcallen opened this issue Nov 8, 2024 · 3 comments
Closed
2 of 4 tasks

Make placing blocks using the marker more intuitive #102

cpcallen opened this issue Nov 8, 2024 · 3 comments
Assignees

Comments

@cpcallen
Copy link
Contributor

cpcallen commented Nov 8, 2024

This bug concerns the "marker workflow", where the users places a marker somewhere in an existing program, and then goes to the toolbox to select a block to be inserted at the marked location.

In testing, it was observed that users had considerable difficulty using the marker workflow to place blocks:

  • They often forgot (or did not know) that they needed to place the marker before choosing a block from the toolbox.
  • They expected that pressing t to move to the toolbox would (in our terminology) place the marker automatically at their current location.
  • They often placed the marker unintentionally while trying to do something else (e.g., place marker on a connection while trying to open a colour picker on the block attached to that connection.
  • They did not find the depiction of the marker intuitive, and suggested instead that an insertion marker or whitespace gap should be shown instead.
  • They were confused by, or did not understand the significance of having the marker left "lying around" on the workspace, and were not sure how to deactivate it.

Additionally, there are some other less-than-desirable behaviours:

  • Selecting a block that can't be placed at the marked location will cause it to be placed as a top-level block at an arbitrary place on the workspace.

I therefore propose the following changes to how the marker is used and behaves (in order of priority to implement):

  • Pressing enter on a connection should place the marker there and move the cursor to the toolbox.
  • The marker should be transient.
    • It should disappear after a block is placed, or as soon as the cursor is moved to a different part of the workspace.
  • Filtering flyout blocks based on marker location #211
    • the cursor will only visit blocks suitable blocks, or
    • the cursor will visit all blocks, but attempting to select an unsuitable block will display an error message explaining why that block can't be placed at the marked location.
  • Passive focus rendering on blocks and connections #212
    • Depending on how this is implemented it might be that we can actually remove the existing marker code completely.

Visiting the toolbox by any other means than pressing enter while on a connection (e.g. by pressing t, or by tabbing to it—see #101) will still allow any block to selected from the toolbox and placed as a new top-level block on the workspace.

@kmcnaught
Copy link

Visiting the toolbox by any other means than pressing enter while on a connection (e.g. by pressing t, or by tabbing to it—see #101) will still allow any block to selected from the toolbox and placed as a new top-level block on the workspace.

I consider this a slightly controversial assertion at this stage. In some of our discussions we've talked about the cursor location always being the default insertion point, which would stand regardless of how you get to the toolbox and choose a block. We acknowledge there also needs to be a way to insert a block as a new top level block, which could perhaps be enabled by a "disconnect" shortcut, and an available cursor location at the "next canvas location available for a new top level block". In your version, pressing Enter on a connection is a special flow that still uses the concept of a mark albeit temporarily.

I also question whether "pressing Enter on a connection" is definitely the right way to choose to insert something, there is a wider conversation about what Enter does in various situations. If we separate out the concepts of Editing and Inserting then we think there may be a way to disambiguate between connector nodes and content without requiring separate cursor locations. On the flip side, it's possible that with the current insert locations (separate for connector node and content) we would find that adding the "Enter to insert" flow would teach users the difference between the 2 locations.

Overall I think this is still up in the air and subject to other ongoing discussions

@rachel-fenichel
Copy link
Contributor

Current status:

Both of the new issues are targeting the "simple editing complete" milestone but are not required for the micro:bit testing at the beginning of March.

@rachel-fenichel
Copy link
Contributor

Closing because the original marker workflow has been fully replaced with the transient marker.

@github-project-automation github-project-automation bot moved this from In Progress to Done in Blockly Accessibility Feb 20, 2025
# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
Status: Done
Development

No branches or pull requests

3 participants