Skip to content

Commit 278f24d

Browse files
committed
fix(sound): use popup dropdown widget
1 parent 363716c commit 278f24d

File tree

1 file changed

+16
-12
lines changed

1 file changed

+16
-12
lines changed

cosmic-settings/src/pages/sound/device_profiles.rs

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,14 @@
11
// Copyright 2025 System76 <[email protected]>
22
// SPDX-License-Identifier: GPL-3.0-only
33

4-
use cosmic::widget;
4+
use cosmic::{Apply, widget};
55
use cosmic_settings_page::{self as page, Section, section};
66
use cosmic_settings_sound_subscription::{self as subscription, pipewire};
77
use itertools::Itertools;
88
use slotmap::SlotMap;
99

1010
#[derive(Clone, Debug)]
11-
pub enum Message {
12-
/// Messages handled by the sound module in cosmic-settings-subscriptions
13-
Subscription(subscription::Message),
14-
}
11+
pub enum Message {}
1512

1613
impl From<Message> for crate::pages::Message {
1714
fn from(message: Message) -> Self {
@@ -75,15 +72,15 @@ pub fn view() -> Section<crate::pages::Message> {
7572
.model
7673
.device_profiles
7774
.iter()
78-
.filter_map(|(object_id, profiles)| {
79-
let name = sound_page.model.device_names.get(object_id)?.as_str();
75+
.filter_map(|(device_id, profiles)| {
76+
let name = sound_page.model.device_names.get(device_id)?.as_str();
8077

8178
// TODO: cache
8279
let active_profile =
8380
sound_page
8481
.model
8582
.active_profiles
86-
.get(object_id)
83+
.get(device_id)
8784
.and_then(|profile| {
8885
profiles
8986
.iter()
@@ -103,10 +100,17 @@ pub fn view() -> Section<crate::pages::Message> {
103100
})
104101
.map(|p| p.description.clone());
105102

106-
let dropdown =
107-
widget::dropdown(Vec::from_iter(profiles), active_profile, move |pos| {
108-
super::Message::SetProfile(object_id, pos).into()
109-
});
103+
let dropdown = widget::dropdown::popup_dropdown(
104+
Vec::from_iter(profiles),
105+
active_profile,
106+
move |id| super::Message::SetProfile(device_id, id),
107+
cosmic::iced::window::Id::RESERVED,
108+
super::Message::Surface,
109+
crate::Message::from,
110+
)
111+
.apply(cosmic::Element::from)
112+
.map(crate::pages::Message::from);
113+
110114
Some((
111115
name,
112116
widget::settings::item::builder(name).control(dropdown),

0 commit comments

Comments
 (0)