diff --git a/frontend/src/components/layout/statusbar.rs b/frontend/src/components/layout/statusbar.rs index 1769af5..3856410 100644 --- a/frontend/src/components/layout/statusbar.rs +++ b/frontend/src/components/layout/statusbar.rs @@ -111,9 +111,7 @@ pub fn StatusBar() -> impl IntoView { // Signal-based dropdown state: 0=none, 1=download, 2=upload, 3=theme let (active_dropdown, set_active_dropdown) = create_signal(0u8); - // Guard to prevent global close from firing right after toggle opens - let skip_next_close = store_value(false); - + // Toggle a specific dropdown let toggle = move |id: u8| { let current = active_dropdown.get_untracked(); @@ -121,26 +119,23 @@ pub fn StatusBar() -> impl IntoView { set_active_dropdown.set(0); } else { set_active_dropdown.set(id); - // Mark that the next global close should be skipped - skip_next_close.set_value(true); } }; - + // Close all dropdowns let close_all = move || { set_active_dropdown.set(0); }; - // Close dropdowns when tapping outside — uses click (fires after pointerdown) - let _ = window_event_listener(ev::click, move |_| { - if skip_next_close.get_value() { - skip_next_close.set_value(false); - return; - } - set_active_dropdown.set(0); - }); - view! { + // Transparent overlay to close dropdowns when clicking outside + +
+
+
// --- DOWNLOAD SPEED DROPDOWN --- @@ -148,10 +143,7 @@ pub fn StatusBar() -> impl IntoView {
@@ -167,7 +159,6 @@ pub fn StatusBar() -> impl IntoView {
-
-
+
+ // Transparent overlay to close sort dropdown + +
+
+
"Torrents" @@ -340,15 +340,9 @@ pub fn TorrentTable() -> impl IntoView {
@@ -359,7 +353,6 @@ pub fn TorrentTable() -> impl IntoView {