diff --git a/examples/cosmic/src/window.rs b/examples/cosmic/src/window.rs index ca8ca655..1d49c5f5 100644 --- a/examples/cosmic/src/window.rs +++ b/examples/cosmic/src/window.rs @@ -274,28 +274,16 @@ impl Application for Window { window.spin_button.max = 10; // Configures the demo view switcher. - let key = window - .demo_view_switcher - .insert(String::from("Tab A"), DemoView::TabA); - + let key = window.demo_view_switcher.insert("Tab A", DemoView::TabA); window.demo_view_switcher.activate(key); - - window - .demo_view_switcher - .insert(String::from("Tab B"), DemoView::TabB); - - window - .demo_view_switcher - .insert(String::from("Tab C"), DemoView::TabC); + window.demo_view_switcher.insert("Tab B", DemoView::TabB); + window.demo_view_switcher.insert("Tab C", DemoView::TabC); // Configures the demo selection button. - let key = window. - demo_selection - .insert(String::from("Choice A"), ()); - + let key = window.demo_selection.insert("Choice A", ()); window.demo_selection.activate(key); - window.demo_selection.insert(String::from("Choice B"), ()); - window.demo_selection.insert(String::from("Choice C"), ()); + window.demo_selection.insert("Choice B", ()); + window.demo_selection.insert("Choice C", ()); (window, Command::none()) } diff --git a/src/widget/segmented_button/state.rs b/src/widget/segmented_button/state.rs index 7b164fca..80dcf67b 100644 --- a/src/widget/segmented_button/state.rs +++ b/src/widget/segmented_button/state.rs @@ -1,6 +1,9 @@ /// Copyright 2022 System76 // SPDX-License-Identifier: MPL-2.0 use slotmap::{SecondaryMap, SlotMap}; +use std::borrow::Cow; + +use crate::theme::Button; slotmap::new_key_type! { pub struct Key; @@ -71,11 +74,27 @@ impl State { /// Data to be drawn in a [`SegmentedButton`] button. pub struct ButtonContent { - pub text: String, + pub text: Cow<'static, str>, } impl From for ButtonContent { fn from(text: String) -> Self { + ButtonContent { + text: Cow::Owned(text), + } + } +} + +impl From<&'static str> for ButtonContent { + fn from(text: &'static str) -> Self { + ButtonContent { + text: Cow::Borrowed(text), + } + } +} + +impl From> for ButtonContent { + fn from(text: Cow<'static, str>) -> Self { ButtonContent { text } } }