Skip to content

Commit c4324ee

Browse files
committed
improv: make popover styling consistent
Makes all popovers use the same styling, with hover highlights.
1 parent 107f19b commit c4324ee

File tree

11 files changed

+511
-457
lines changed

11 files changed

+511
-457
lines changed

Cargo.lock

Lines changed: 415 additions & 326 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cosmic-settings/src/app.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -400,7 +400,7 @@ impl cosmic::Application for SettingsApp {
400400
crate::pages::Message::AccessibilityShortcuts(message) => {
401401
if let Some(page) = self
402402
.pages
403-
.page_mut::<input::keyboard::shortcuts::accessibility::Page>()
403+
.page_mut::<input::keyboard::shortcuts::accessibility::Page>()
404404
{
405405
return page.update(message).map(Into::into);
406406
}

cosmic-settings/src/pages/bluetooth/mod.rs

Lines changed: 21 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -238,7 +238,7 @@ impl page::Page<crate::pages::Message> for Page {
238238
let control = widget::column::with_capacity(2)
239239
.push(description)
240240
.push(pin)
241-
.spacing(theme::active().cosmic().space_xxs());
241+
.spacing(theme::spacing().space_xxs);
242242

243243
let confirm_button =
244244
widget::button::suggested(fl!("confirm")).on_press(Message::PinConfirm);
@@ -783,12 +783,11 @@ fn status() -> Section<crate::pages::Message> {
783783
}
784784

785785
fn popup_button(message: Option<Message>, text: &str) -> Element<'_, Message> {
786-
let theme = theme::active();
787-
let theme = theme.cosmic();
786+
let spacing = theme::spacing();
788787
widget::text::body(text)
789788
.align_y(Alignment::Center)
790789
.apply(widget::button::custom)
791-
.padding([theme.space_xxxs(), theme.space_xs()])
790+
.padding([spacing.space_xxxs, spacing.space_xs])
792791
.width(Length::Fill)
793792
.class(theme::Button::MenuItem)
794793
.on_press_maybe(message)
@@ -839,24 +838,23 @@ fn connected_devices() -> Section<crate::pages::Message> {
839838
)
840839
.position(widget::popover::Position::Bottom)
841840
.on_close(Message::PopupDevice(None))
842-
.popup({
843-
widget::container(
844-
widget::column()
845-
.push_maybe(device.is_connected().then(|| {
846-
popup_button(
847-
Some(Message::DisconnectDevice(path.clone())),
848-
&descriptions[device_disconnect],
849-
)
850-
}))
851-
.push(popup_button(
852-
Some(Message::ForgetDevice(path.clone())),
853-
&descriptions[device_forget],
854-
)),
855-
)
856-
.width(Length::Fixed(200.0))
857-
.padding(theme::active().cosmic().space_xxxs())
858-
.class(theme::Container::Dialog)
859-
})
841+
.popup(
842+
widget::column()
843+
.push_maybe(device.is_connected().then(|| {
844+
popup_button(
845+
Some(Message::DisconnectDevice(path.clone())),
846+
&descriptions[device_disconnect],
847+
)
848+
}))
849+
.push(popup_button(
850+
Some(Message::ForgetDevice(path.clone())),
851+
&descriptions[device_forget],
852+
))
853+
.width(Length::Fixed(200.0))
854+
.apply(widget::container)
855+
.padding(theme::spacing().space_xxs)
856+
.class(theme::Container::Dropdown),
857+
)
860858
.into()
861859
} else {
862860
widget::button::icon(widget::icon::from_name("view-more-symbolic"))
@@ -983,7 +981,7 @@ fn multiple_adapter() -> Section<crate::pages::Message> {
983981
.size(20)
984982
.into(),
985983
widget::horizontal_space()
986-
.width(theme::active().cosmic().space_xxs())
984+
.width(theme::spacing().space_xxs)
987985
.into(),
988986
text(&adapter.alias).wrapping(Wrapping::Word).into(),
989987
widget::horizontal_space().into(),

cosmic-settings/src/pages/desktop/appearance/drawer.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -441,7 +441,7 @@ impl Content {
441441
})
442442
),
443443
// Icon theme previews
444-
widget::column::with_children(vec![
444+
widget::column::with_children([
445445
text::heading(&*ICON_THEME).into(),
446446
flex_row(
447447
self.icon_themes

cosmic-settings/src/pages/desktop/appearance/icon_themes.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ pub fn button(
3535
cosmic::widget::column()
3636
.push(
3737
cosmic::widget::button::custom_image_button(
38-
cosmic::widget::column::with_children(vec![
38+
cosmic::widget::column::with_children([
3939
cosmic::widget::row()
4040
.extend(
4141
handles

cosmic-settings/src/pages/desktop/panel/applets_inner.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -439,8 +439,8 @@ pub fn lists<
439439
return Element::from(text::body(fl!("unknown")));
440440
};
441441

442-
column::with_children(vec![
443-
column::with_children(vec![
442+
column::with_children([
443+
column::with_children([
444444
text::body(fl!("start-segment")).into(),
445445
AppletReorderList::new(
446446
config
@@ -471,7 +471,7 @@ pub fn lists<
471471
])
472472
.spacing(space_xxs)
473473
.into(),
474-
column::with_children(vec![
474+
column::with_children([
475475
text::body(fl!("center-segment")).into(),
476476
AppletReorderList::new(
477477
config
@@ -501,7 +501,7 @@ pub fn lists<
501501
])
502502
.spacing(space_xxs)
503503
.into(),
504-
column::with_children(vec![
504+
column::with_children([
505505
text::body(fl!("end-segment")).into(),
506506
AppletReorderList::new(
507507
config

cosmic-settings/src/pages/input/keyboard/mod.rs

Lines changed: 21 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,7 @@ use cosmic::{
99
Apply, Element, Task,
1010
app::{ContextDrawer, context_drawer},
1111
cosmic_config::{self, ConfigSet},
12-
iced::{Alignment, Color, Length},
13-
iced_core::Border,
12+
iced::{Alignment, Length},
1413
theme,
1514
widget::{self, ListColumn, button, container, icon, radio, row, settings},
1615
};
@@ -166,23 +165,19 @@ fn popover_menu_row(
166165
label: String,
167166
message: impl Fn(DefaultKey) -> SourceContext + 'static,
168167
) -> cosmic::Element<'static, Message> {
168+
let spacing = theme::spacing();
169169
widget::text::body(label)
170-
.apply(widget::container)
171-
.class(cosmic::theme::Container::custom(|theme| {
172-
widget::container::Style {
173-
background: None,
174-
..container::Catalog::style(theme, &cosmic::theme::Container::List)
175-
}
176-
}))
170+
.align_y(Alignment::Center)
177171
.apply(button::custom)
178-
.on_press(())
179-
.class(theme::Button::Transparent)
172+
.padding([spacing.space_xxxs, spacing.space_xs])
173+
.width(Length::Fill)
174+
.class(theme::Button::MenuItem)
175+
.on_press(Message::SourceContext(message(id)))
180176
.apply(Element::from)
181-
.map(move |()| Message::SourceContext(message(id)))
182177
}
183178

184179
fn popover_menu(id: DefaultKey) -> cosmic::Element<'static, Message> {
185-
widget::column::with_children(vec![
180+
widget::column::with_children([
186181
popover_menu_row(
187182
id,
188183
fl!("keyboard-sources", "move-up"),
@@ -193,7 +188,10 @@ fn popover_menu(id: DefaultKey) -> cosmic::Element<'static, Message> {
193188
fl!("keyboard-sources", "move-down"),
194189
SourceContext::MoveDown,
195190
),
196-
cosmic::widget::divider::horizontal::default().into(),
191+
widget::divider::horizontal::default()
192+
.apply(widget::container)
193+
.padding(8)
194+
.into(),
197195
popover_menu_row(
198196
id,
199197
fl!("keyboard-sources", "settings"),
@@ -206,25 +204,10 @@ fn popover_menu(id: DefaultKey) -> cosmic::Element<'static, Message> {
206204
),
207205
popover_menu_row(id, fl!("keyboard-sources", "remove"), SourceContext::Remove),
208206
])
209-
.padding([2, 8])
210-
.width(Length::Shrink)
211-
.height(Length::Shrink)
212-
.apply(cosmic::widget::container)
213-
.class(cosmic::theme::Container::custom(|theme| {
214-
let cosmic = theme.cosmic();
215-
let background = &cosmic.background;
216-
container::Style {
217-
icon_color: Some(background.on.into()),
218-
text_color: Some(background.on.into()),
219-
background: Some(Color::from(background.base).into()),
220-
border: Border {
221-
color: background.component.divider.into(),
222-
width: 1.0,
223-
radius: cosmic.corner_radii.radius_s.into(),
224-
},
225-
shadow: Default::default(),
226-
}
227-
}))
207+
.width(Length::Fixed(200.0))
208+
.apply(widget::container)
209+
.padding(theme::spacing().space_xxs)
210+
.class(theme::Container::Dropdown)
228211
.into()
229212
}
230213

@@ -236,7 +219,8 @@ fn popover_button(id: DefaultKey, expanded: bool) -> cosmic::Element<'static, Me
236219
.on_press(on_press);
237220

238221
if expanded {
239-
cosmic::widget::popover(button)
222+
widget::popover(button)
223+
.position(widget::popover::Position::Bottom)
240224
.popup(popover_menu(id))
241225
.on_close(Message::ExpandInputSourcePopover(None))
242226
.into()
@@ -713,7 +697,7 @@ fn input_sources() -> Section<crate::pages::Message> {
713697
.on_press(Message::ShowInputSourcesContext);
714698

715699
widget::column::with_capacity(2)
716-
.spacing(cosmic::theme::spacing().space_xxs)
700+
.spacing(theme::spacing().space_xxs)
717701
.push(section)
718702
.push(
719703
widget::container(add_input_source)
@@ -816,7 +800,7 @@ fn keyboard_typing_assist() -> Section<crate::pages::Message> {
816800

817801
row::with_capacity(3)
818802
.align_y(Alignment::Center)
819-
.spacing(cosmic::theme::spacing().space_s)
803+
.spacing(theme::spacing().space_s)
820804
.push(widget::text::body(&descriptions[short]))
821805
.push(delay_slider)
822806
.push(widget::text::body(&descriptions[long]))
@@ -836,7 +820,7 @@ fn keyboard_typing_assist() -> Section<crate::pages::Message> {
836820

837821
row::with_capacity(3)
838822
.align_y(Alignment::Center)
839-
.spacing(cosmic::theme::spacing().space_s)
823+
.spacing(theme::spacing().space_s)
840824
.push(widget::text::body(&descriptions[slow]))
841825
.push(rate_slider)
842826
.push(widget::text::body(&descriptions[fast]))

cosmic-settings/src/pages/networking/vpn/mod.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -826,8 +826,7 @@ fn devices_view() -> Section<crate::pages::Message> {
826826
return cosmic::widget::column().into();
827827
};
828828

829-
let theme = cosmic::theme::active();
830-
let spacing = &theme.cosmic().spacing;
829+
let spacing = cosmic::theme::spacing();
831830

832831
let mut view = widget::column::with_capacity(4);
833832

@@ -883,7 +882,7 @@ fn devices_view() -> Section<crate::pages::Message> {
883882
widget::popover(view_more_button.on_press(Message::ViewMore(None)))
884883
.position(widget::popover::Position::Bottom)
885884
.on_close(Message::ViewMore(None))
886-
.popup({
885+
.popup(
887886
widget::column()
888887
.push_maybe(is_connected.then(|| {
889888
popup_button(
@@ -901,9 +900,9 @@ fn devices_view() -> Section<crate::pages::Message> {
901900
))
902901
.width(Length::Fixed(200.0))
903902
.apply(widget::container)
904-
.padding(1)
905-
.class(cosmic::style::Container::Dropdown)
906-
})
903+
.padding(cosmic::theme::spacing().space_xxs)
904+
.class(cosmic::theme::Container::Dropdown),
905+
)
907906
.apply(|e| Some(Element::from(e)))
908907
} else {
909908
view_more_button
@@ -937,12 +936,11 @@ fn devices_view() -> Section<crate::pages::Message> {
937936
}
938937

939938
fn popup_button(message: Message, text: &str) -> Element<'_, Message> {
940-
let theme = cosmic::theme::active();
941-
let theme = theme.cosmic();
939+
let spacing = cosmic::theme::spacing();
942940
widget::text::body(text)
943941
.align_y(Alignment::Center)
944942
.apply(widget::button::custom)
945-
.padding([theme.space_xxxs(), theme.space_xs()])
943+
.padding([spacing.space_xxxs, spacing.space_xs])
946944
.width(Length::Fill)
947945
.class(cosmic::theme::Button::MenuItem)
948946
.on_press(message)

cosmic-settings/src/pages/networking/wifi.rs

Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -225,9 +225,7 @@ impl page::Page<crate::pages::Message> for Page {
225225

226226
fn context_drawer(&self) -> Option<ContextDrawer<'_, crate::pages::Message>> {
227227
let drawer = self.qr_drawer.as_ref()?;
228-
229-
let theme = cosmic::theme::active();
230-
let spacing = &theme.cosmic().spacing;
228+
let spacing = cosmic::theme::spacing();
231229

232230
let qr_section = if let Some(ref qr_data) = self.qr_code_data {
233231
widget::container(widget::qr_code(qr_data).cell_size(5)).center_x(Length::Fill)
@@ -749,8 +747,7 @@ fn devices_view() -> Section<crate::pages::Message> {
749747
return cosmic::widget::column().into();
750748
};
751749

752-
let theme = cosmic::theme::active();
753-
let spacing = &theme.cosmic().spacing;
750+
let spacing = cosmic::theme::spacing();
754751

755752
let wifi_enable = widget::settings::item::builder(&section.descriptions[wifi_txt])
756753
.control(widget::toggler(state.wifi_enabled).on_toggle(Message::WiFiEnable));
@@ -851,7 +848,7 @@ fn devices_view() -> Section<crate::pages::Message> {
851848
widget::popover(view_more_button.on_press(Message::ViewMore(None)))
852849
.position(widget::popover::Position::Bottom)
853850
.on_close(Message::ViewMore(None))
854-
.popup({
851+
.popup(
855852
widget::column()
856853
.push_maybe(is_connected.then(|| {
857854
popup_button(
@@ -875,10 +872,11 @@ fn devices_view() -> Section<crate::pages::Message> {
875872
&section.descriptions[forget_txt],
876873
)
877874
}))
878-
.width(Length::Fixed(170.0))
875+
.width(Length::Fixed(200.0))
879876
.apply(widget::container)
880-
.class(cosmic::style::Container::Dialog)
881-
})
877+
.padding(cosmic::theme::spacing().space_xxs)
878+
.class(cosmic::theme::Container::Dropdown),
879+
)
882880
.apply(|e| Some(Element::from(e)))
883881
} else if is_known {
884882
view_more_button
@@ -938,12 +936,11 @@ fn is_connected(state: &NetworkManagerState, network: &AccessPoint) -> bool {
938936
}
939937

940938
fn popup_button(message: Message, text: &str) -> Element<'_, Message> {
941-
let theme = cosmic::theme::active();
942-
let theme = theme.cosmic();
939+
let spacing = cosmic::theme::spacing();
943940
widget::text::body(text)
944941
.align_y(Alignment::Center)
945942
.apply(widget::button::custom)
946-
.padding([theme.space_xxxs(), theme.space_xs()])
943+
.padding([spacing.space_xxxs, spacing.space_xs])
947944
.width(Length::Fill)
948945
.class(cosmic::theme::Button::MenuItem)
949946
.on_press(message)

0 commit comments

Comments
 (0)