fix(ui): overlay scrollbars, resizer hit-test, and Linux mini wheel (#255)

Add OverlayScrollArea with shared thumb metrics and drag handling; size the
thumb against the rail track height so panel insets cannot push it past the
visible rail. Route scroll uses a stable viewport id; Genres restores scroll
and infinite-scroll observation against that viewport (merged with upstream
virtualized genres list and lazy routes behind Suspense).

Suppress queue resizer activation when the pointer targets the main-route
overlay scrollbar; disable the resizer while dragging the thumb and use a
grabbing cursor on the body.

Apply WebKitGTK smooth wheel to the mini webview as well as main; the mini
window reapplies the persisted setting after auth store hydration.
This commit is contained in:
cucadmuh
2026-04-21 23:44:28 +03:00
committed by GitHub
parent 2318f9e07a
commit b61c168430
13 changed files with 538 additions and 130 deletions
+6 -2
View File
@@ -132,8 +132,12 @@ fn set_linux_webkit_smooth_scrolling(enabled: bool, app_handle: tauri::AppHandle
#[cfg(target_os = "linux")]
{
use tauri::Manager;
if let Some(win) = app_handle.get_webview_window("main") {
linux_webkit_apply_smooth_scrolling(&win, enabled)?;
// Each WebviewWindow has its own WebKitGTK Settings — main-only left the
// mini player on the default (inertial) wheel until the user toggled again.
for label in ["main", "mini"] {
if let Some(win) = app_handle.get_webview_window(label) {
linux_webkit_apply_smooth_scrolling(&win, enabled)?;
}
}
}
#[cfg(not(target_os = "linux"))]