Previously it returned x,y,width,height. Returning top,bottom,left,right results in simpler code, both in this function and in downstream callers.
This commit makes the minumum change to the metrics_test. I’m happy to change the test’s data if that makes more sense.
Old: a box object with two coordinate objects, each with two numbers.
New: a box object with four numbers.
The old system would make sense if there was a reason to group the top-left and bottom-right coordinates. But in our code we only pulled out top/bottom/left/right numbers.
New code is simpler and faster.
Traced one cause of Mocha tests sometimes failing to blocks being
bumped back into bounds. It looks like a block being moved to be
a child of another block was ended up out of bounds probably
because the size of the workspace isn't set yet. When the change
handler tried to move it back in it would throw an error since you
can't move child blocks with that method.
Search all workspaces. The flaw with looking at the workspace of the selected block is that dragging a workspace is a gesture but has no selected block.
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.
Fixes#1653
Makes the bounds checker created in inject correctly set the event group
before moving blocks in bounds.
When a workspace can't scroll the inject method sets up an event listener
to bump blocks back into the visible bounds when dropped off the edge. The
event group wasn't being used, though, causing the move to be a separate
undo step. When undone, this would get you stuck in a loop where the
workspace would keep pulling it back into the visible range.
* Making all blocks use the MSG colour values.
* Deprecating Blockly.Constants.Lists.HUE and similar constants.
* Removing deprecated Blockly.Blocks.lists.HUE constants.
* Allowing message references in the Block.setColour() parameter.
* Adding checking of older constants, ensuring they are not overwritten.