diff options
| author | Terry Truong <terry06890@gmail.com> | 2022-05-27 23:12:09 +1000 |
|---|---|---|
| committer | Terry Truong <terry06890@gmail.com> | 2022-05-27 23:12:09 +1000 |
| commit | e4da21fd63d24a40e2887c8ac3c88b61fcae31bd (patch) | |
| tree | 1414ba8cec763b6a8ced77a92c25bc10e291dccd /src/App.vue | |
| parent | a2a9434636ae4d9237d69b6c3bc8f538570129e9 (diff) | |
Make search-suggestion-requests and resize-handling initially-immediate
Diffstat (limited to 'src/App.vue')
| -rw-r--r-- | src/App.vue | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/src/App.vue b/src/App.vue index a27cc08..0801124 100644 --- a/src/App.vue +++ b/src/App.vue @@ -127,7 +127,8 @@ export default defineComponent({ // For layout and resize-handling mainAreaDims: [0, 0] as [number, number], tileAreaDims: [0, 0] as [number, number], - pendingResizeHdlr: 0, // Set to a setTimeout() value + lastResizeHdlrTime: 0, // Used to throttle resize handling + pendingResizeHdlr: 0, // Set via setTimeout() for a non-initial resize event // Other justInitialised: false, excessTolNodeThreshold: 1000, // Threshold where excess tolMap entries are removed (done on tile collapse) @@ -590,14 +591,28 @@ export default defineComponent({ }, // For other events onResize(){ + // Handle event, delaying/ignoring if this was recently done if (this.pendingResizeHdlr == 0){ - this.pendingResizeHdlr = setTimeout(() => { + const resizeDelay = 100; + let handleResize = () => { this.uiOpts.scrollGap = getScrollBarWidth(); - this.updateAreaDims().then(() => { - this.relayoutWithCollapse(); - this.pendingResizeHdlr = 0; + return this.updateAreaDims().then(() => this.relayoutWithCollapse()); + }; + let currentTime = new Date().getTime(); + if (currentTime - this.lastResizeHdlrTime > resizeDelay){ + this.lastResizeHdlrTime = currentTime; + handleResize().then(() => { + this.lastResizeHdlrTime = new Date().getTime(); }); - }, 100); + } else { + let remainingDelay = resizeDelay - (currentTime - this.lastResizeHdlrTime); + this.pendingResizeHdlr = setTimeout(() => { + this.pendingResizeHdlr = 0; + handleResize().then(() => { + this.lastResizeHdlrTime = new Date().getTime(); + }); + }, remainingDelay); + } } }, onKeyUp(evt: KeyboardEvent){ |
