diff --git a/BitDream/Views/Shared/TorrentDetail.swift b/BitDream/Views/Shared/TorrentDetail.swift index 9434689..69dc8f2 100644 --- a/BitDream/Views/Shared/TorrentDetail.swift +++ b/BitDream/Views/Shared/TorrentDetail.swift @@ -717,7 +717,7 @@ struct TorrentDetailToolbar: ToolbarContent { } }) } label: { - Image(systemName: "ellipsis.circle") + Image(systemName: "ellipsis") } } #endif diff --git a/BitDream/Views/iOS/iOSContentView.swift b/BitDream/Views/iOS/iOSContentView.swift index 3e84afd..e3c222d 100644 --- a/BitDream/Views/iOS/iOSContentView.swift +++ b/BitDream/Views/iOS/iOSContentView.swift @@ -362,7 +362,7 @@ private extension iOSContentView { Label("Resume All", systemImage: "play") }) } label: { - Image(systemName: "ellipsis.circle") + Image(systemName: "ellipsis") .foregroundStyle(Color.primary.opacity(isSidebarOpen && colorScheme == .light ? 0.5 : 1)) } .iOSHapticControlActivation() @@ -372,18 +372,20 @@ private extension iOSContentView { var bottomToolbarItems: some ToolbarContent { Group { ToolbarItem(placement: .bottomBar) { - Button { - hapticFeedback.play(.actionTriggered) - showPrefs.toggle() - } label: { - Label( - "Filter and Sort", - systemImage: hasActiveFilters - ? "line.3.horizontal.decrease.circle.fill" - : "line.3.horizontal.decrease.circle" - ) + // Keep the popover's navigation state stable when the button style changes. + ZStack { + Button { + hapticFeedback.play(.actionTriggered) + showPrefs.toggle() + } label: { + Label("Filter and Sort", systemImage: "line.3.horizontal.decrease") + } + .if(hasActiveFilters) { button in + button.buttonStyle(.borderedProminent) + } + .tint(hasActiveFilters ? Color.accentColor : Color.primary) + .accessibilityValue(hasActiveFilters ? "Active" : "Inactive") } - .accessibilityValue(hasActiveFilters ? "Active" : "Inactive") .popover(isPresented: $showPrefs) { iOSFilterAndSortView( labelFilter: $labelFilter, diff --git a/BitDream/Views/iOS/iOSTorrentDetail.swift b/BitDream/Views/iOS/iOSTorrentDetail.swift index b683f2d..6872524 100644 --- a/BitDream/Views/iOS/iOSTorrentDetail.swift +++ b/BitDream/Views/iOS/iOSTorrentDetail.swift @@ -131,7 +131,7 @@ struct iOSTorrentDetail: View { onError: presentError ) } label: { - Image(systemName: "ellipsis.circle") + Image(systemName: "ellipsis") } .iOSHapticControlActivation() } diff --git a/BitDream/Views/macOS/macOSContentToolbar.swift b/BitDream/Views/macOS/macOSContentToolbar.swift index f9e5e2c..a5e2d49 100644 --- a/BitDream/Views/macOS/macOSContentToolbar.swift +++ b/BitDream/Views/macOS/macOSContentToolbar.swift @@ -24,20 +24,25 @@ struct macOSContentToolbar: ToolbarContent { Menu { macOSContentSortMenu(sortProperty: $sortProperty, sortOrder: $sortOrder) } label: { - Label("Sort", systemImage: "arrow.up.arrow.down.circle") + Label("Sort", systemImage: "arrow.up.arrow.down") } } ToolbarItem(placement: .automatic) { - Button(action: { - showingFilterPopover.toggle() - }, label: { - Label("Filters", systemImage: "line.3.horizontal.decrease.circle") - .if(hasActiveFilters) { view in - view.foregroundColor(accentColor) - } - }) - .help(hasActiveFilters ? "Active filters (\(activeFilterCount))" : "Filter torrents") + // Keep the popover attached while the button's active style changes. + ZStack { + Button(action: { + showingFilterPopover.toggle() + }, label: { + Label("Filters", systemImage: "line.3.horizontal.decrease") + }) + .if(hasActiveFilters) { button in + button.buttonStyle(.borderedProminent) + } + .tint(hasActiveFilters ? accentColor : Color.primary) + .accessibilityValue(hasActiveFilters ? "Active" : "Inactive") + .help(hasActiveFilters ? "Active filters (\(activeFilterCount))" : "Filter torrents") + } .popover(isPresented: $showingFilterPopover, arrowEdge: .bottom) { macOSContentFilterMenu( accentColor: accentColor, diff --git a/BitDream/Views/macOS/macOSTorrentActionsMenu.swift b/BitDream/Views/macOS/macOSTorrentActionsMenu.swift index a18a7d9..efff6f9 100644 --- a/BitDream/Views/macOS/macOSTorrentActionsMenu.swift +++ b/BitDream/Views/macOS/macOSTorrentActionsMenu.swift @@ -291,7 +291,7 @@ struct TorrentActionsToolbarMenu: View { ) } } label: { - Label("Actions", systemImage: "ellipsis.circle") + Label("Actions", systemImage: "ellipsis") } .sheet(isPresented: $labelDialog) { LabelEditSheetContent(