Previously a function call with no return value generated:
prefix();
suffix();
function();
The intent was so the prefix and suffix calls in the function body wouldn’t overlap with the prefix and suffix calls of the function call. However, this is doomed to be inconsistent with a function call with a return value:
prefix();
print(function());
suffix();
Thus since overlaping must exist, both types of function calls should have consistent suffix locations.
This allows generators to have more control over the placement of suffix. Needed for ‘if’ blocks and function calls which require their suffix code to be somewhere other than the end.
Also, add loop’s prefix to ‘break’ blocks, since the loop’s suffix will be the next statement hit.
Also, reuse procedures_callreturn generator for procedures_callnoreturn.
This is a squash and merge of a large set of changes by @BeksOmega
* Added functionality to scrolling, dragging, and zooming.
* Fixed incorrect changes to workspaceChanged function.
* Fixed comment.
* Fixed typo.
* Removed scrollbar.set calls from workspace_svg.
* Removed scrollbar.resize() call.
* Added move options to playground.
* Fixed scroll_ calls that replaced scrollbar.set calls.
* Removed this.scrollbar checks.
* Changed zoom so that it always zooms towards the coordinates. Changed isContentBounded_ to be separate from isMovable_ (b/c of the previous change zoomControls had to be added to the bounded check). Fixed scroll_() calls... again.
* Changed procedures so the Highlight definition option is only available if the workspace is moveable.
* Fixed scrollCenter so that it works with flyout toolboxes.
* Fixed zoomToFit so that it works with horizontal flyout toolboxes.
* Fixed Typo.
* Fixed bumping blocks when the workspace is not movable.
* Fixed bumping not working with left and top toolbox positions.
* Re-Added not allowing scrollCenter if the workspace is not movable. Disabled scrollCenter button for this case.
* Cleaned up formatting.
* Fixed bumping... again. Reformatted workspaceChanged a bit.
* Changed blocks to be completely bumped into the workspace.
* Reorganized metrics-getting for workspaceChanged.
* Added bumping workspace comments. Moved event checking.
* Renamed workspaceChanged to bumpObjects.
* Added a bumpObjects developer reminder.
* Added warning to zoomToFit.
* Cleaned up some text.
* Added better inline documentation.
* Fixed up inline docs.
* Cleaned up comments.
* Fixed zoomCenter not actually zooming towards the center.
* Fixed zoomControls error on unmovable bottom-toolbox workspaces
* Fixed programatically placing blocks in an unmovable workspace.
* Removed unnecessary translate call in inject.
* Reversed removal of translate. (apparently it was necessary)
* Cleaned up code in response to first round of reviews.
* Added unit comments to the zoom function.
* Removed bumpObjectsEventChecker. Added BUMP_EVENTS list to Blockly.Events.
* Changed getWorkspaceObjectMetrics call to getBoundingRectangle().
* Fixed utils.mouseToSvg (was causing problems with zoom on wheel if the page was scrolled).
* Fixed zoom when page is scrolled (actually this time). Reverted changes to utils.mouseToSvg.
* Fixed centerOnBlock.
* Added unit docs to translate. Moved setting the grid position to the translate function.
* Added TODO's.
Prevents the coder from using duplicate parameters names in functions.
In the validator function check for parameter names that have been used. If it finds a block with a name that matches return null so that it will revert the change. Also change the name each time a new parameter is created to try to prevent duplicate name.
Fixes#1958
This will drop the input when it's in the empty string state. This
causes the block to remove the input and re-add it when the text
is reverted, but prevents the breakage. A followup fix should leave
the input alone instead of removing it, but this works for now.
Fixes#1344
Extends the event listener on procedure caller blocks to also check
for their definition being enabled/disabled and update their own
state in response.
* Removing goog.arrays.equals() in blocks/procedures.js, with minor refactor.
* Replacing goog.dom.createDom() in blocks/procedures.js, blocks/variables.js, blocks/variables_dynamic.js, and blocks/loops.js.