mirror of
https://github.com/google/blockly.git
synced 2026-01-10 10:27:08 +01:00
Merge consecutive viewport change events (#4792)
This commit is contained in:
@@ -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.
|
||||
|
||||
@@ -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');
|
||||
|
||||
Reference in New Issue
Block a user