Events namespace
Classes
Class | Description |
---|---|
BlockBase | Abstract class for any event related to blocks. |
BlockChange | Notifies listeners when some element of a block has changed (e.g. field values, comments, etc). |
BlockCreate | Notifies listeners when a block (or connected stack of blocks) is created. |
BlockDelete | Notifies listeners when a block (or connected stack of blocks) is deleted. |
BlockDrag | Notifies listeners when a block is being manually dragged/dropped. |
BlockFieldIntermediateChange | Notifies listeners when the value of a block's field has changed but the change is not yet complete, and is expected to be followed by a block change event. |
BlockMove | Notifies listeners when a block is moved. This could be from one connection to another, or from one location on the workspace to another. |
BubbleOpen | Class for a bubble open event. |
Click | Notifies listeners that some blockly element was clicked. |
CommentBase | Abstract class for a comment event. |
CommentChange | Notifies listeners that the contents of a workspace comment has changed. |
CommentCollapse | |
CommentCreate | Notifies listeners that a workspace comment was created. |
CommentDelete | Notifies listeners that a workspace comment has been deleted. |
CommentDrag | Notifies listeners when a comment is being manually dragged/dropped. |
CommentMove | Notifies listeners that a workspace comment has moved. |
CommentResize | Notifies listeners that a workspace comment has resized. |
FinishedLoading | Notifies listeners when the workspace has finished deserializing from JSON/XML. |
Selected | Class for a selected event. Notifies listeners that a new element has been selected. |
ThemeChange | Notifies listeners that the workspace theme has changed. |
ToolboxItemSelect | Notifies listeners that a toolbox item has been selected. |
TrashcanOpen | Notifies listeners when the trashcan is opening or closing. |
UiBase | Base class for a UI event. UI events are events that don't need to be sent over the wire for multi-user editing to work (e.g. scrolling the workspace, zooming, opening toolbox categories). UI events do not undo or redo. |
VarBase | Abstract class for a variable event. |
VarCreate | Notifies listeners that a variable model has been created. |
VarDelete | Notifies listeners that a variable model has been deleted. |
VarRename | Notifies listeners that a variable model was renamed. |
VarTypeChange | Notifies listeners that a variable's type has changed. |
ViewportChange | Notifies listeners that the workspace surface's position or scale has changed. Does not notify when the workspace itself resizes. |
Abstract Classes
Abstract Class | Description |
---|---|
Abstract | Abstract class for an event. |
Enumerations
Enumeration | Description |
---|---|
BubbleType | |
ClickTarget |
Functions
Function | Description |
---|---|
clearPendingUndo() | Modify pending undo events so that when they are fired they don't land in the undo stack. Called by Workspace.clearUndo. |
disable() | Stop sending events. Every call to this function MUST also call enable. |
disableOrphans(event) | Set if a block is disabled depending on whether it is properly connected. Use this on applications where all blocks should be connected to a top block. |
enable() | Start sending events. Unless events were already disabled when the corresponding call to disable was made. |
filter(queue) | Filter the queued events by merging duplicates, removing null events and reording BlockChange events. History of this function: This function was originally added in commit cf257ea5 with the intention of dramatically reduing the total number of dispatched events. Initialy it affected only BlockMove events but others were added over time. Code was added to reorder BlockChange events added in commit 5578458, for uncertain reasons but most probably as part of an only-partially-successful attemp to fix problems with event ordering during block mutations. This code should probably have been added to the top of the function, before merging and null-removal, but was added at the bottom for now-forgotten reasons. See these bug investigations for a fuller discussion of the underlying issue and some of the failures that arose because of this incomplete/incorrect fix: https://github.com/google/blockly/issues/8225#issuecomment-2195751783 https://github.com/google/blockly/issues/2037#issuecomment-2209696351 Later, in PR #1205 the original O(n^2) implementation was replaced by a linear-time implementation, though additonal fixes were made subsequently. In August 2024 a number of significant simplifications were made: This function was previously called from Workspace.prototype.undo, but the mutation of events by this function was the cause of issue #7026 (note that events would combine differently in reverse order vs. forward order). The originally-chosen fix for this was the addition (in PR #7069) of code to fireNow to post-filter the .undoStack_ and .redoStack_ of any workspace that had just been involved in dispatching events; this apparently resolved the issue but added considerable additional complexity and made it difficult to reason about how events are processed for undo/redo, so both the call from undo and the post-processing code was removed, and forward=true was made the default while calling the function with forward=false was deprecated. At the same time, the buggy code to reorder BlockChange events was replaced by a less-buggy version of the same functionality in a new function, enqueueEvent, called from fireInternal, thus assuring that events will be in the correct order at the time filter is called. Additionally, the event merging code was modified so that only immediately adjacent events would be merged. This simplified the implementation while ensuring that the merging of events cannot cause them to be reordered. |
fire(event) | Enqueue an event to be dispatched to change listeners. Notes: - Events are enqueued until a timeout, generally after rendering is complete or at the end of the current microtask, if not running in a browser. - Queued events are subject to destructive modification by being combined with later-enqueued events, but only until they are fired. - Events are dispatched via the fireChangeListener method on the affected workspace. |
fromJson(json, workspace) | Decode the JSON into an event. |
get(eventType) | Gets the class for a specific event type from the registry. |
getGroup() | Current group. |
getRecordUndo() | Returns whether or not events will be added to the undo stack. |
isEnabled() | Returns whether events may be fired or not. |
setGroup(state) | Start or stop a group. |
setRecordUndo(newValue) | Sets whether events should be added to the undo stack. |
Interfaces
Variables
Variable | Description |
---|---|
BLOCK_CHANGE | |
BLOCK_CREATE | |
BLOCK_DELETE | |
BLOCK_DRAG | |
BLOCK_FIELD_INTERMEDIATE_CHANGE | |
BLOCK_MOVE | |
BUBBLE_OPEN | |
BUMP_EVENTS | List of events that cause objects to be bumped back into the visible portion of the workspace. Not to be confused with bumping so that disconnected connections do not appear connected. |
CHANGE | |
CLICK | |
COMMENT_CHANGE | |
COMMENT_CREATE | |
COMMENT_DELETE | |
COMMENT_DRAG | |
COMMENT_MOVE | |
COMMENT_RESIZE | |
CREATE | |
DELETE | |
FINISHED_LOADING | |
MOVE | |
SELECTED | |
THEME_CHANGE | |
TOOLBOX_ITEM_SELECT | |
TRASHCAN_OPEN | |
UI | |
VAR_CREATE | |
VAR_DELETE | |
VAR_RENAME | |
VIEWPORT_CHANGE |
Type Aliases
Type Alias | Description |
---|---|
BumpEvent | Type of events that cause objects to be bumped back into the visible portion of the workspace. Not to be confused with bumping so that disconnected connections do not appear connected. |