There are multiple controls in the interface that are interactive, such as play queue scroll bar and the seek bar. Currently, resize handles are inside the window frame, this makes it impossible to interact with the controls placed near the window frame.
This has been a problem since the very beginning, but with !6177 (merged) it is more obvious now.
If Qt 6.9's Qt::ExpandedClientAreaHint preserves having resize handle outside the window frame as with SSD, that can be used.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items
...
Linked items
0
Link issues together to show that they're related.
Learn more.
Fatih Uzunoğluchanged title from Qt: window resize handle overlaps with interactive controls with CSD to Qt: window resize handle overlaps with interactive controls with CSD on Windows
changed title from Qt: window resize handle overlaps with interactive controls with CSD to Qt: window resize handle overlaps with interactive controls with CSD on Windows
With Qt::FramelessWindowHint and QWindowsWindow::setCustomMargins() we could possibly handle the resize and shadow ourselves like we do in other platforms where we have chance to resize outside the interface content. Qt::FramelessWindowHint reportedly disables "aero snapping" feature, but I think this issue is more important than having a feature.
the issue is also present on X11 without extended frame area (where we already use Qt::FramelessWindowHint), this makes the scrollbar unusable unless the application is fullscreen. So the issue needs to be fixed regardless of what can be done on windows.
So the issue needs to be fixed regardless of what can be done on windows.
I'm not sure if this is possible without custom/extended margins. Like Wayland, Qt also has QWindowsWindow::setCustomMargins() which seems to be working (!6510). If X11 does not offer that, then probably there is nothing that we can do about it.
If you use QWindowsWindow::setCustomMargins() without frameless window hint and with all the deeply complex customization applied to imitate frameless window, it ends up broken if I checked it correctly. If Windows offers another way, we can use it as frameless window comes with disadvantages.
I'm not sure if this is possible without custom/extended margins
So we need to ensure that scroll bar are not blocked by the CSD margins (maybe something like the safearea). We really can't have basic functionnality like scrolling unavailable on desktop that don't support _GTK_FRAME_EXTENTS
for what it's worth firefox (left) and chrome (right) add a safe margin boarder in their CSD mode when _GTK_FRAME_EXTENTS isn't available on X11. Regardless on what you'll be able to achieve on Windows, we should probably have a similar margin for compositor where we won't have any form of extended margins
Frame extents may never be available on Windows due to rounded corners, although resize can be done outside the client area when there is CSD. I have added platformHandlesResizeWithCSD(), we can check that for adding safe margins in client area.
If they fix it, I can backport the feature (if we are not going to use Qt 6.9) and we can use that (also Qt::NoTitleBarBackgroundHint) instead of FramelessWindowHint, and we can still remove most of the stuff in MainCtx_win32.cpp.