diff options
-rw-r--r-- | core/src/text.rs | 44 | ||||
-rw-r--r-- | winit/src/program/window_manager.rs | 35 |
2 files changed, 27 insertions, 52 deletions
diff --git a/core/src/text.rs b/core/src/text.rs index 8dde9e21..a7e1f281 100644 --- a/core/src/text.rs +++ b/core/src/text.rs @@ -270,23 +270,6 @@ pub struct Span<'a, Link = (), Font = crate::Font> { pub strikethrough: bool, } -impl<Link, Font> Default for Span<'_, Link, Font> { - fn default() -> Self { - Self { - text: Cow::default(), - size: None, - line_height: None, - font: None, - color: None, - link: None, - highlight: None, - padding: Padding::default(), - underline: false, - strikethrough: false, - } - } -} - /// A text highlight. #[derive(Debug, Clone, Copy, PartialEq)] pub struct Highlight { @@ -301,15 +284,7 @@ impl<'a, Link, Font> Span<'a, Link, Font> { pub fn new(fragment: impl IntoFragment<'a>) -> Self { Self { text: fragment.into_fragment(), - size: None, - line_height: None, - font: None, - color: None, - highlight: None, - link: None, - padding: Padding::ZERO, - underline: false, - strikethrough: false, + ..Self::default() } } @@ -457,6 +432,23 @@ impl<'a, Link, Font> Span<'a, Link, Font> { } } +impl<Link, Font> Default for Span<'_, Link, Font> { + fn default() -> Self { + Self { + text: Cow::default(), + size: None, + line_height: None, + font: None, + color: None, + link: None, + highlight: None, + padding: Padding::default(), + underline: false, + strikethrough: false, + } + } +} + impl<'a, Link, Font> From<&'a str> for Span<'a, Link, Font> { fn from(value: &'a str) -> Self { Span::new(value) diff --git a/winit/src/program/window_manager.rs b/winit/src/program/window_manager.rs index 86cee973..ae214e7c 100644 --- a/winit/src/program/window_manager.rs +++ b/winit/src/program/window_manager.rs @@ -16,7 +16,6 @@ use crate::program::{Program, State}; use winit::dpi::{LogicalPosition, LogicalSize}; use winit::monitor::MonitorHandle; -use std::borrow::Cow; use std::collections::BTreeMap; use std::sync::Arc; @@ -304,33 +303,17 @@ where let spans = match &preedit.selection { Some(selection) => { vec![ - text::Span { - text: Cow::Borrowed( - &preedit.content[..selection.start], - ), - ..text::Span::default() - }, - text::Span { - text: Cow::Borrowed( - if selection.start == selection.end { - "\u{200A}" - } else { - &preedit.content[selection.start..selection.end] - }, - ), - color: Some(background), - ..text::Span::default() - }, - text::Span { - text: Cow::Borrowed(&preedit.content[selection.end..]), - ..text::Span::default() - }, + text::Span::new(&preedit.content[..selection.start]), + text::Span::new(if selection.start == selection.end { + "\u{200A}" + } else { + &preedit.content[selection.start..selection.end] + }) + .color(background), + text::Span::new(&preedit.content[selection.end..]), ] } - _ => vec![text::Span { - text: Cow::Borrowed(&preedit.content), - ..text::Span::default() - }], + _ => vec![text::Span::new(&preedit.content)], }; if spans != self.spans.as_slice() { |