From cea704e1eed86d3d65375e59eb497f629473d285 Mon Sep 17 00:00:00 2001 From: Alex Kaminskii Date: Wed, 29 Jun 2022 11:10:52 +0200 Subject: [PATCH] fix(tracker): check node scrolls only on start --- tracker/tracker/src/main/app/nodes.ts | 6 +++--- tracker/tracker/src/main/app/observer/observer.ts | 6 +++--- tracker/tracker/src/main/modules/scroll.ts | 4 ++-- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/tracker/tracker/src/main/app/nodes.ts b/tracker/tracker/src/main/app/nodes.ts index 73ba4f311..1651c7fe5 100644 --- a/tracker/tracker/src/main/app/nodes.ts +++ b/tracker/tracker/src/main/app/nodes.ts @@ -1,4 +1,4 @@ -type NodeCallback = (node: Node) => void; +type NodeCallback = (node: Node, isStart: boolean) => void; type ElementListener = [string, EventListener]; export default class Nodes { @@ -57,8 +57,8 @@ export default class Nodes { } return id; } - callNodeCallbacks(node: Node): void { - this.nodeCallbacks.forEach((cb) => cb(node)); + callNodeCallbacks(node: Node, start: boolean): void { + this.nodeCallbacks.forEach((cb) => cb(node, start)); } getID(node: Node): number | undefined { return (node as any)[this.node_id]; diff --git a/tracker/tracker/src/main/app/observer/observer.ts b/tracker/tracker/src/main/app/observer/observer.ts index c6ede00ce..dfaaa3986 100644 --- a/tracker/tracker/src/main/app/observer/observer.ts +++ b/tracker/tracker/src/main/app/observer/observer.ts @@ -333,12 +333,12 @@ export default abstract class Observer { } return (this.commited[id] = this._commitNode(id, node)); } - private commitNodes(): void { + private commitNodes(isStart: boolean = false): void { let node; this.recents.forEach((type, id) => { this.commitNode(id); if (type === RecentsType.New && (node = this.app.nodes.getNode(id))) { - this.app.nodes.callNodeCallbacks(node); + this.app.nodes.callNodeCallbacks(node, isStart) } }) this.clear(); @@ -356,7 +356,7 @@ export default abstract class Observer { }); this.bindTree(nodeToBind); beforeCommit(this.app.nodes.getID(node)) - this.commitNodes(); + this.commitNodes(true) } disconnect(): void { diff --git a/tracker/tracker/src/main/modules/scroll.ts b/tracker/tracker/src/main/modules/scroll.ts index a16bb166a..3515b58e6 100644 --- a/tracker/tracker/src/main/modules/scroll.ts +++ b/tracker/tracker/src/main/modules/scroll.ts @@ -35,8 +35,8 @@ export default function (app: App): void { nodeScroll.clear(); }); - app.nodes.attachNodeCallback(node => { - if (isElementNode(node) && node.scrollLeft + node.scrollTop > 0) { + app.nodes.attachNodeCallback((node, isStart) => { + if (isStart && isElementNode(node) && node.scrollLeft + node.scrollTop > 0) { nodeScroll.set(node, [node.scrollLeft, node.scrollTop]); } })