Closed vkovalcik closed 3 months ago
Sorry I couldn't imagine what happens on your environment... Could you post a screencast?
Sure, this is the result. In reality the blinking is much faster.
Thanks, I agree that it may happen on environments with always-visible scrollbars (Windows 10 and older).
I've tried it on Windows 11 with modified accessibility option to show scrollbars always, but I couldn't reproduce the problem. Could you paste exported settings of TST, if you use any user stylesheet?
I've introduced some changes to reduce needless update around tab bar. Could you try a development build? https://github.com/piroor/treestyletab?tab=readme-ov-file#development-builds
You are crazy fast :) Sorry for the late answer.
I have tested the last development build, but unfortunately the behavior is still there.
You are right, I am indeed on Windows 10, so I see it may be difficult to debug. But if you want me to test something etc. perhaps I can help.
I am attaching the config configs-treestyletab@piro.sakura.ne.jp.json
... and my custom stylesheet follows. However I have tested that the stylesheet text completely, the "blinking issues" still occurs.
tab-item.discarded tab-favicon {
opacity: 0.2;
}
tab-item.discarded tab-label,
tab-item.discarded tab-counter {
color: #888;
}
/* Hide CLOSE button on tabs */
#tabbar tab-item tab-item-substance tab-closebox {
display: none;
}
Hmm... the "blinking" happens on my environment also, but it stops soon. On my case, the console says as following while the blinking:
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Underflow common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: resize common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 20, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Overflow common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 19, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: resize common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 19, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:735:13
tst<Sidebar-1>: sidebar/scroll: canBeStickyTabs
Array []
common.js:735:13
tst<Sidebar-1>: sidebar/scroll: updateStickyTab
Array []
Object { above: [], below: [] }
common.js:735:13
tst<Sidebar-1>: sidebar/scroll: renderVirtualScrollViewport
Object { firstRenderableIndex: 0, firstRenderableTabIndex: 5, lastRenderableIndex: 14, lastRenderableTabIndex: 56, old: (15) […], new: (15) […], renderOperations: (1) […], scrollPosition: 0, viewPortSize: 479, allRenderableTabsSize: 479 }
common.js:735:13
tst<Sidebar-1>: sidebar/scroll: 1 msec, offset = 0 common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Underflow common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: resize common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 20, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:735:13
tst<Sidebar-1>: sidebar/scroll: canBeStickyTabs
Array []
common.js:735:13
tst<Sidebar-1>: sidebar/scroll: updateStickyTab
Array []
Object { above: [], below: [] }
common.js:735:13
tst<Sidebar-1>: sidebar/scroll: renderVirtualScrollViewport
Object { firstRenderableIndex: 0, firstRenderableTabIndex: 5, lastRenderableIndex: 14, lastRenderableTabIndex: 56, old: (15) […], new: (15) […], renderOperations: (1) […], scrollPosition: 0, viewPortSize: 478, allRenderableTabsSize: 479 }
common.js:735:13
tst<Sidebar-1>: sidebar/scroll: 2 msec, offset = 0 common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Underflow common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Overflow common.js:735:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Overflow common.js:735:13
Could you paste logs on your case with the config?: configs-treestyletab@piro.sakura.ne.jp.json (I've just modified your json file to report debug logs about operations to refresh the tab bar. You can deactivate the debug mode with TST options => Development => unchecking "Debug mode".)
See also https://github.com/piroor/treestyletab/wiki/How-to-inspect-tree-of-tabs#how-to-collect-debug-logs-of-tst to collect debug logs of TST.
Sure thing! My log starts when I had a lot of tabs and was one tab before reaching the issue. So the log captures creating a new tab, then a lot of "blinking" and ends with me closing the new tab.
tst<Sidebar-1>: sidebar/scroll: tryFinishPositionLocking
Set []
on tab created common.js:733:13
tst<Sidebar-1>: sidebar/scroll: renderVirtualScrollViewport
Object { firstRenderableIndex: 0, firstRenderableTabIndex: 0, lastRenderableIndex: 50, lastRenderableTabIndex: 180, old: (51) […], new: (51) […], renderOperations: (1) […], scrollPosition: 0, viewPortSize: 1631, allRenderableTabsSize: 1631 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: 0 msec, offset = 0 common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Underflow common.js:733:13
tst<Sidebar-1>: sidebar/scroll: isTabInViewport 184
Object { allowedOffset: 0, tabTop: 1599, tabBottom: 1632, viewPortTop: 0, viewPortBottom: 1630.5999755859375 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: scroll to active tab on updateTabbarLayout common.js:733:13
tst<Sidebar-1>: sidebar/scroll: scrollToTab to 184 undefined
Object { }
Object { stack: "scrollToTab@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:806:33\n@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:831:14\nFrameRequestCallback*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:824:10\ndispatchWithDetails@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:68:32\ndispatch@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:47:26\nonOverflow@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:149:41\nonOverflowEvent@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1093:7\nEventListener.handleEvent*watchOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1097:10\nstartObserveOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:142:27\ninit@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:101:3\ninit/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:288:14\nasync*addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:31:19\naddAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:52:32\ninit@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:287:17\nasync*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/index.js:31:8\n" }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: resize common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 20, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Underflow common.js:733:13
tst<Sidebar-1>: sidebar/scroll: isTabInViewport 184
Object { allowedOffset: 0, tabTop: 1599, tabBottom: 1632, viewPortTop: 0, viewPortBottom: 1629.800048828125 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: isTabInViewport 184
Object { allowedOffset: 0, tabTop: 1599, tabBottom: 1632, viewPortTop: 0, viewPortBottom: 1629.800048828125 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: canBeStickyTabs
Array []
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: updateStickyTab
Array []
Object { above: [], below: [] }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: renderVirtualScrollViewport
Object { firstRenderableIndex: 0, firstRenderableTabIndex: 0, lastRenderableIndex: 50, lastRenderableTabIndex: 180, old: (51) […], new: (51) […], renderOperations: (1) […], scrollPosition: 0.8000030517578125, viewPortSize: 1630.1999969482422, allRenderableTabsSize: 1631 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: 1 msec, offset = 0 common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Overflow common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: resize common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 19, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: resize common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 19, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Overflow common.js:733:13
tst<Sidebar-1>: sidebar/scroll: tryFinishPositionLocking
Set []
on tab removed 184 common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 19, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: scrollTo
Object { tab: {…} }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: smoothScrollTo
Object { tab: {…} }
smoothScrollTo@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:698:34
scrollTo@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:602:12
scrollToTab@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:892:11
async*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:831:14
FrameRequestCallback*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:824:10
dispatchWithDetails@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:68:32
dispatch@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:47:26
onOverflow@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:149:41
watchOverflowStateChange/onObserved/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1032:9
FrameRequestCallback*onObserved@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1019:12
watchOverflowStateChange/resizeObserver<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1047:9
ResizeObserverCallback*watchOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1043:22
startObserveOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:142:27
init@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:101:3
init/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:288:14
async*addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:31:19
addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:52:32
init@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:287:17
async*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/index.js:31:8
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: calculateScrollDeltaForTab 184
Object { delta: 18.4000244140625, tabTop: 1599, tabBottom: 1632, scrollBoxBottom: 1630.5999755859375 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: scrollTo
Object { tab: {…} }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: smoothScrollTo
Object { tab: {…} }
smoothScrollTo@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:698:34
scrollTo@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:602:12
scrollToTab@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:892:11
async*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:831:14
FrameRequestCallback*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:824:10
dispatchWithDetails@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:68:32
dispatch@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:47:26
onOverflow@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:149:41
onOverflowEvent@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1093:7
EventListener.handleEvent*watchOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1097:10
startObserveOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:142:27
init@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:101:3
init/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:288:14
async*addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:31:19
addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:52:32
init@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:287:17
async*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/index.js:31:8
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: calculateScrollDeltaForTab 184
Object { delta: 18.4000244140625, tabTop: 1599, tabBottom: 1632, scrollBoxBottom: 1630.5999755859375 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: isTabInViewport 184
Object { allowedOffset: 0, tabTop: 1599, tabBottom: 1632, viewPortTop: 0, viewPortBottom: 1630.5999755859375 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: scroll to active tab on updateTabbarLayout common.js:733:13
tst<Sidebar-1>: sidebar/scroll: scrollToTab to 184 undefined
Object { }
Object { stack: "scrollToTab@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:806:33\n@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:831:14\nFrameRequestCallback*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:824:10\ndispatchWithDetails@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:68:32\ndispatch@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:47:26\nonOverflow@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:149:41\nwatchOverflowStateChange/onObserved/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1032:9\nFrameRequestCallback*onObserved@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1019:12\nwatchOverflowStateChange/resizeObserver<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1047:9\nResizeObserverCallback*watchOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1043:22\nstartObserveOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:142:27\ninit@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:101:3\ninit/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:288:14\nasync*addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:31:19\naddAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:52:32\ninit@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:287:17\nasync*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/index.js:31:8\n" }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: canBeStickyTabs
Array []
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: updateStickyTab
Array []
Object { above: [], below: [] }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: renderVirtualScrollViewport
Object { firstRenderableIndex: 0, firstRenderableTabIndex: 0, lastRenderableIndex: 50, lastRenderableTabIndex: 180, old: (51) […], new: (51) […], renderOperations: (1) […], scrollPosition: 0, viewPortSize: 1631, allRenderableTabsSize: 1631 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: 0 msec, offset = 0 common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Underflow common.js:733:13
tst<Sidebar-1>: sidebar/scroll: isTabInViewport 184
Object { allowedOffset: 0, tabTop: 1599, tabBottom: 1632, viewPortTop: 0, viewPortBottom: 1630.5999755859375 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: scroll to active tab on updateTabbarLayout common.js:733:13
tst<Sidebar-1>: sidebar/scroll: scrollToTab to 184 undefined
Object { }
Object { stack: "scrollToTab@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:806:33\n@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:831:14\nFrameRequestCallback*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:824:10\ndispatchWithDetails@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:68:32\ndispatch@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:47:26\nonOverflow@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:149:41\nonOverflowEvent@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1093:7\nEventListener.handleEvent*watchOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1097:10\nstartObserveOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:142:27\ninit@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:101:3\ninit/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:288:14\nasync*addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:31:19\naddAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:52:32\ninit@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:287:17\nasync*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/index.js:31:8\n" }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: resize common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 20, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Underflow common.js:733:13
tst<Sidebar-1>: sidebar/scroll: isTabInViewport 184
Object { allowedOffset: 0, tabTop: 1599, tabBottom: 1632, viewPortTop: 0, viewPortBottom: 1629.800048828125 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: isTabInViewport 184
Object { allowedOffset: 0, tabTop: 1599, tabBottom: 1632, viewPortTop: 0, viewPortBottom: 1629.800048828125 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: canBeStickyTabs
Array []
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: updateStickyTab
Array []
Object { above: [], below: [] }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: renderVirtualScrollViewport
Object { firstRenderableIndex: 0, firstRenderableTabIndex: 0, lastRenderableIndex: 50, lastRenderableTabIndex: 180, old: (51) […], new: (51) […], renderOperations: (1) […], scrollPosition: 0.8000030517578125, viewPortSize: 1630.1999969482422, allRenderableTabsSize: 1631 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: 1 msec, offset = 0 common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Overflow common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: resize common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 19, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: resize common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 19, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Overflow common.js:733:13
tst<Sidebar-1>: sidebar/scroll: scrollTo
Object { tab: {…} }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: smoothScrollTo
Object { tab: {…} }
smoothScrollTo@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:698:34
scrollTo@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:602:12
scrollToTab@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:892:11
async*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:831:14
FrameRequestCallback*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:824:10
dispatchWithDetails@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:68:32
dispatch@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:47:26
onOverflow@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:149:41
watchOverflowStateChange/onObserved/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1032:9
FrameRequestCallback*onObserved@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1019:12
watchOverflowStateChange/resizeObserver<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1047:9
ResizeObserverCallback*watchOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1043:22
startObserveOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:142:27
init@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:101:3
init/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:288:14
async*addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:31:19
addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:52:32
init@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:287:17
async*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/index.js:31:8
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: scrollTo
Object { tab: {…} }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: smoothScrollTo
Object { tab: {…} }
smoothScrollTo@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:698:34
scrollTo@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:602:12
scrollToTab@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:892:11
async*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:831:14
FrameRequestCallback*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:824:10
dispatchWithDetails@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:68:32
dispatch@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:47:26
onOverflow@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:149:41
onOverflowEvent@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1093:7
EventListener.handleEvent*watchOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/common.js:1097:10
startObserveOverflowStateChange@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:142:27
init@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:101:3
init/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:288:14
async*addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:31:19
addAsync@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/common/MetricsData.js:52:32
init@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/sidebar.js:287:17
async*@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/index.js:31:8
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: isTabInViewport 180
Object { allowedOffset: 0, tabTop: 1567, tabBottom: 1600, viewPortTop: 0, viewPortBottom: 1630.5999755859375 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 19, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: canBeStickyTabs
Array []
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: updateStickyTab
Array []
Object { above: [], below: [] }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: renderVirtualScrollViewport
Object { firstRenderableIndex: 0, firstRenderableTabIndex: 0, lastRenderableIndex: 49, lastRenderableTabIndex: 179, old: (51) […], new: (50) […], renderOperations: (2) […], scrollPosition: 0, viewPortSize: 1631, allRenderableTabsSize: 1599 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: 2 msec, offset = 0 common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Underflow common.js:733:13
tst<Sidebar-1>: sidebar/scroll: isTabInViewport 180
Object { allowedOffset: 0, tabTop: 1567, tabBottom: 1600, viewPortTop: 0, viewPortBottom: 1600 }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: resize common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 20, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: scrollToTab to 180 undefined
Object { }
Object { stack: "scrollToTab@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:806:33\nreserveToScrollToTab/<@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:1106:16\nFrameRequestCallback*reserveToScrollToTab@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:1099:10\nonBackgroundMessage@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/scroll.js:1268:27\nasync*dispatchWithDetails@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:68:32\ndispatch@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/extlib/EventListenerManager.js:47:26\nonConnectionMessage@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/background-connection.js:129:17\nonConnectionMessage@moz-extension://fee3c9bc-23b4-46eb-a937-e47ca33e5189/sidebar/background-connection.js:112:26\n" }
common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: Normal Tabs Underflow common.js:733:13
tst<Sidebar-1>: sidebar/scroll: canBeStickyTabs
Array []
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: updateStickyTab
Array []
Object { above: [], below: [] }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: renderVirtualScrollViewport
Object { firstRenderableIndex: 0, firstRenderableTabIndex: 0, lastRenderableIndex: 49, lastRenderableTabIndex: 179, old: (50) […], new: (50) […], renderOperations: (1) […], scrollPosition: 0, viewPortSize: 1630.1999969482422, allRenderableTabsSize: 1599 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: 1 msec, offset = 0 common.js:733:13
tst<Sidebar-1>: sidebar/scroll: isTabInViewport 180
Object { allowedOffset: 0, tabTop: 1567, tabBottom: 1600, viewPortTop: 0, viewPortBottom: 1600 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: => already visible common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: updateTabbarLayout reasons: common.js:733:13
tst<Sidebar-1>: sidebar/sidebar: height:
Object { newTabButtonSize: 20, extraTabbarTopContainerSize: 0, extraTabbarBottomContainerSize: 0 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: canBeStickyTabs
Array []
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: updateStickyTab
Array []
Object { above: [], below: [] }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: renderVirtualScrollViewport
Object { firstRenderableIndex: 0, firstRenderableTabIndex: 0, lastRenderableIndex: 49, lastRenderableTabIndex: 179, old: (50) […], new: (50) […], renderOperations: (1) […], scrollPosition: 0, viewPortSize: 1630.1999969482422, allRenderableTabsSize: 1599 }
common.js:733:13
tst<Sidebar-1>: sidebar/scroll: 0 msec, offset = 0 common.js:733:13
Good news: I've successfully reproduced the problem.
There are two triggers:
viewPortSize
and scrollPosition
have decimal fraction and sub number, this means the device pixel ratio is not 1:1.When both these condition become true, the height of overflowed sidebar contents become smaller than the view port on the edge case, so it repeatedly transitioned between overflow and underflow states.
I've introduced a change 817950a to stabilize sizes of "New Tab" buttons. On my environment the flashing of the scrollbar has gone away even when I apply 125% zoom.
Great work, seems resolved!
I was able to confirm that with the current normal release version the blinking is still happening, but stops when setting zoom to 100 % in my Windows settings. Indeed, it is normally set to 125 % (and Windows even recommends 150 %, so I the >100 % zoom should be fairly common on high resolution monitors).
After installation of the latest development build the problem stops or at least I am no longer able to reproduce it. Excellent :)
BTW I was looking for a way to donate to your project, but didn't find any. Is there a way to do it?
Thanks, but there is no donation way for now. Here is a FAQ topic about that: https://github.com/piroor/treestyletab/blob/trunk/README.md#user-content-other-topics-how-to-donate-to-this-project
I see, I have never read a FAQ entry about not receiving donations (or expected to see one :) ), but it is an interesting read. So anyway thank you very much for the fix and for your add-on!
This issue has been closed due to no response within 14 days after labeled as "maybe fixed", 7 days after last reopened, and 7 days after last commented.
Abstract
TST repeatedly shows and hides the vertical scroll bar, about 10 times per second. The tabs jump left and right super quickly and everything appear fuzzy :)
It seems it started to happen in the last weeks.
Steps to reproduce
Make so many tabs that they EXACTLY fill the height of the tree panel. Now move the window up or down to find the problematic height. The issue appears only when pixel height is exactly in the wrong part of the tab (so it may appear with height 504, but not 505 or 503)
Expected result
The scroll bar should either stay there or be hidden.
Actual result
The scroll bar cannot decide...
Environment