http://bugs.winehq.org/show_bug.cgi?id=60102 Bug ID: 60102 Summary: Tab list is automatically scrolled such that active tab is always visible Product: Wine Version: 11.14 Hardware: x86-64 OS: Linux Status: UNCONFIRMED Severity: minor Priority: P2 Component: comctl32 Assignee: wine-bugs@list.winehq.org Reporter: and44more@gmail.com Target Milestone: --- Distribution: --- At first glance, everything sounds right: A tab bar is automatically scrolled on resize such that the active (focused) tab is always visible. Except that windows isn't doing this at all! I found this bug in the application "notepad++". Here's how to replicate it: When you open notepad++, you see a horizontal tab bar. Create many tabs by spamming Ctrl+N until the bar bar is filled with tabs. The active tab is now the most right tab. Resize the window's right border to make the window smaller. You'll see that the tab bar "shifts to the left", i.e. the most left tab disappears and every tab takes the exact position of its left tab. This does almost certainly happen because wine tries to preserve the active's tab visibility. But windows isn't doing this at all! Under windows, the tab bar would just remain unchanged after any window resize, meaning the active tab would just disappear behind the window's borders when the window becomes too small. Under linux however, the bar bar changes when resizing the window. This isn't really problematic to me. However, there is a related issue to this: minimizing and restoring the window of notepad++. Apparently, minimizing and restoring a window causes resize events (?). When you minimize and restore the notepad++ window, the tab bar changes (shifts) such that the active tab will become the most left tab, meaning all tabs to the left just disappeared (scrolled out of view). Again, windows doesn't scroll (shift) the tab bar. I let a LLM search for the issue and I think I got somewhat useable information from it: In `dlls/comctl32/tab.c` the TAB_WindowProc function receives a WM_SIZE event when the tab bar is resized. Then, TAB_Size will be called which will then call TAB_SetItemBounds which will then call TAB_EnsureSelectionVisible. TAB_EnsureSelectionVisible apparently scrolls the tab bar such that the active tab is always visible. -- Do not reply to this email, post in Bugzilla using the above URL to reply. You are receiving this mail because: You are watching all bug changes.