Merge consecutive viewport change events (#4792)

This commit is contained in:
Monica Kozbial
2021-04-23 10:56:52 -07:00
committed by GitHub
parent 2cfd62a229
commit 5139057664
2 changed files with 19 additions and 0 deletions

View File

@@ -305,6 +305,12 @@ Blockly.Events.filter = function(queueIn, forward) {
event.name == lastEvent.name) {
// Merge change events.
lastEvent.newValue = event.newValue;
} else if (event.type == Blockly.Events.VIEWPORT_CHANGE) {
// Merge viewport change events.
lastEvent.viewTop = event.viewTop;
lastEvent.viewLeft = event.viewLeft;
lastEvent.scale = event.scale;
lastEvent.oldScale = event.oldScale;
} else if (event.type == Blockly.Events.CLICK &&
lastEvent.type == Blockly.Events.BUBBLE_OPEN) {
// Drop click events caused by opening/closing bubbles.

View File

@@ -910,6 +910,19 @@ suite('Events', function() {
chai.assert.equal(filteredEvents[0].newValue, 'item2');
});
test('Merge viewport change events', function() {
var events = [
new Blockly.Events.ViewportChange(1, 2, 3, this.workspace, 4),
new Blockly.Events.ViewportChange(5, 6, 7, this.workspace, 8)
];
var filteredEvents = Blockly.Events.filter(events, true);
chai.assert.equal(filteredEvents.length, 1); // second change event merged into first
chai.assert.equal(filteredEvents[0].viewTop, 5);
chai.assert.equal(filteredEvents[0].viewLeft, 6);
chai.assert.equal(filteredEvents[0].scale, 7);
chai.assert.equal(filteredEvents[0].oldScale, 8);
});
test('Merge ui events', function() {
var block1 = this.workspace.newBlock('field_variable_test_block', '1');
var block2 = this.workspace.newBlock('field_variable_test_block', '2');