diff --git a/apps/desktop/src/components/sidebar/ConnectionTree.vue b/apps/desktop/src/components/sidebar/ConnectionTree.vue index 777c6a0bc1..05d3824fa8 100644 --- a/apps/desktop/src/components/sidebar/ConnectionTree.vue +++ b/apps/desktop/src/components/sidebar/ConnectionTree.vue @@ -208,10 +208,12 @@ const activeTab = computed(() => queryStore.tabs.find((tab) => tab.id === queryS // ancestor. The overlay reuses , so collapse/expand comes for free. const stickyScrollTop = ref(0); const sidebarScrollMetrics = ref({ scrollTop: 0, clientHeight: 0, scrollHeight: 0 }); +const isScrollingSidebar = ref(false); const isDraggingSidebarScrollbar = ref(false); let sidebarScrollbarResizeObserver: ResizeObserver | null = null; let sidebarScrollbarAnimationFrame = 0; let sidebarScrollbarDragOffset = 0; +let sidebarScrollingTimer = 0; function updateSidebarScrollMetrics() { const scroller = currentTreeScroller(); @@ -234,6 +236,11 @@ function scheduleSidebarScrollMetricsUpdate() { } function onTreeScroll() { + isScrollingSidebar.value = true; + window.clearTimeout(sidebarScrollingTimer); + sidebarScrollingTimer = window.setTimeout(() => { + isScrollingSidebar.value = false; + }, 700); scheduleSidebarScrollMetricsUpdate(); } @@ -780,6 +787,7 @@ onUnmounted(() => { stopSidebarScrollbarDrag(); sidebarScrollbarResizeObserver?.disconnect(); window.cancelAnimationFrame(sidebarScrollbarAnimationFrame); + window.clearTimeout(sidebarScrollingTimer); }); defineExpose({ focusSearch, createNewGroup }); @@ -853,7 +861,7 @@ defineExpose({ focusSearch, createNewGroup });
- -