mirror of
https://github.com/google/blockly.git
synced 2026-01-08 01:20:12 +01:00
fix: immediately render for JavaFX (#7502)
This commit is contained in:
@@ -6,6 +6,7 @@
|
||||
|
||||
import {BlockSvg} from './block_svg.js';
|
||||
import {Coordinate} from './utils/coordinate.js';
|
||||
import * as userAgent from './utils/useragent.js';
|
||||
|
||||
/** The set of all blocks in need of rendering which don't have parents. */
|
||||
const rootBlocks = new Set<BlockSvg>();
|
||||
@@ -42,6 +43,12 @@ let animationRequestId = 0;
|
||||
*/
|
||||
export function queueRender(block: BlockSvg): Promise<void> {
|
||||
queueBlock(block);
|
||||
|
||||
if (alwaysImmediatelyRender()) {
|
||||
doRenders();
|
||||
return Promise.resolve();
|
||||
}
|
||||
|
||||
if (!afterRendersPromise) {
|
||||
afterRendersPromise = new Promise((resolve) => {
|
||||
afterRendersResolver = resolve;
|
||||
@@ -77,6 +84,15 @@ export function triggerQueuedRenders() {
|
||||
if (afterRendersResolver) afterRendersResolver();
|
||||
}
|
||||
|
||||
/**
|
||||
* @returns True if we should always trigger an immediate render.
|
||||
* Some platforms don't properly support `requestAnimationFrame`, so to
|
||||
* avoid glitchiness, we give up the performance improvements.
|
||||
*/
|
||||
function alwaysImmediatelyRender() {
|
||||
return userAgent.JavaFx;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds the given block and its parents to the render queue. Adds the root block
|
||||
* to the list of root blocks.
|
||||
|
||||
Reference in New Issue
Block a user