From 91231874e3b92eadafe83e0870f4dd14baea99ae Mon Sep 17 00:00:00 2001 From: SiriusXT <1160925501@qq.com> Date: Mon, 14 Apr 2025 18:43:54 +0800 Subject: [PATCH] Avoid triggering tab switch on long press. --- src/public/app/types-lib.d.ts | 2 +- src/public/app/widgets/tab_row.ts | 18 ++++++++++++------ 2 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/public/app/types-lib.d.ts b/src/public/app/types-lib.d.ts index 51155abfb..770021751 100644 --- a/src/public/app/types-lib.d.ts +++ b/src/public/app/types-lib.d.ts @@ -13,7 +13,7 @@ declare module "draggabilly" { containment: HTMLElement }); element: HTMLElement; - on(event: "pointerDown" | "dragStart" | "dragEnd" | "dragMove", callback: Callback); + on(event: "pointerDown" | "pointerUp" | "dragStart" | "dragEnd" | "dragMove", callback: Callback); dragEnd(); isDragging: boolean; positionDrag: () => void; diff --git a/src/public/app/widgets/tab_row.ts b/src/public/app/widgets/tab_row.ts index a1c731971..44299aa8e 100644 --- a/src/public/app/widgets/tab_row.ts +++ b/src/public/app/widgets/tab_row.ts @@ -388,13 +388,13 @@ export default class TabRowWidget extends BasicWidget { setupScrollEvents() { this.$scrollButtonLeft[0].addEventListener('click', () => this.scrollTabContainer(-200)); - this.$scrollButtonRight[0].addEventListener('click', () => this.scrollTabContainer(200)); + this.$scrollButtonRight[0].addEventListener('click', () => this.scrollTabContainer(200)); this.$tabScrollingContainer[0].addEventListener('wheel', (event) => { - const targetScrollLeft = event.deltaY*1.5; + const targetScrollLeft = event.deltaY * 1.5; this.scrollTabContainer(targetScrollLeft); }); - + this.$tabScrollingContainer[0].addEventListener('scroll', () => { clearTimeout(this.updateScrollTimeout); this.updateScrollTimeout = setTimeout(() => { @@ -458,7 +458,7 @@ export default class TabRowWidget extends BasicWidget { // this.$newTab may include margin, and using NEW_TAB_WIDTH could cause tabsContainerWidth to be slightly larger, // resulting in misaligned scrollbars/buttons. Therefore, use outerwidth. this.updateOuterWidth(); - let tabsContainerWidth = Math.floor(this.$widget.width() ?? 0); + let tabsContainerWidth = Math.floor(this.$widget.width() ?? 0); tabsContainerWidth -= this.newTabOuterWidth + MIN_FILLER_WIDTH; // Check whether the scroll buttons need to be displayed. if ((TAB_CONTAINER_MIN_WIDTH + MARGIN_WIDTH) * numberOfTabs > tabsContainerWidth) { @@ -671,8 +671,14 @@ export default class TabRowWidget extends BasicWidget { this.draggabillies.push(draggabilly); + let pointerDownTime: number = 0; draggabilly.on("pointerDown", () => { - appContext.tabManager.activateNoteContext(tabEl.getAttribute("data-ntx-id")); + pointerDownTime = Date.now(); + }); + draggabilly.on("pointerUp", () => { + if (Date.now() - pointerDownTime < 200) { + appContext.tabManager.activateNoteContext(tabEl.getAttribute("data-ntx-id")); + } }); draggabilly.on("dragStart", () => { @@ -780,7 +786,7 @@ export default class TabRowWidget extends BasicWidget { setupContainerAnchor() { this.$containerAnchor = $(CONTAINER_ANCHOR_TPL); - + this.$tabContainer.append(this.$containerAnchor); }