Rebuilt from the exact zed-industries/zed @ 8c74db00c4053d6c0a9037863d7bd048658da4ca tree (previous orphan was based on a stale/wrong fetch). Same 3-file patch: - serial.rs: add SerialKind::KeyboardEnter - client.rs: store wl_keyboard.enter serial; add latest_serial_of() - window.rs: activate() uses keyboard-enter serial (Mutter focus gate) Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
105 lines
2.9 KiB
Rust
105 lines
2.9 KiB
Rust
use gpui::{
|
|
FontFeatures, FontStyle, FontWeight, Modifiers, Pixels, SharedString,
|
|
WindowBackgroundAppearance, px,
|
|
};
|
|
use settings_content::{
|
|
FontFamilyName, FontFeaturesContent, FontSize, FontStyleContent, FontWeightContent,
|
|
ModifiersContent, WindowBackgroundContent,
|
|
};
|
|
use std::sync::Arc;
|
|
|
|
/// A trait for converting settings content types into their GPUI equivalents.
|
|
pub trait IntoGpui {
|
|
type Output;
|
|
fn into_gpui(self) -> Self::Output;
|
|
}
|
|
|
|
impl IntoGpui for FontStyleContent {
|
|
type Output = FontStyle;
|
|
|
|
fn into_gpui(self) -> Self::Output {
|
|
match self {
|
|
FontStyleContent::Normal => FontStyle::Normal,
|
|
FontStyleContent::Italic => FontStyle::Italic,
|
|
FontStyleContent::Oblique => FontStyle::Oblique,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl IntoGpui for FontWeightContent {
|
|
type Output = FontWeight;
|
|
|
|
fn into_gpui(self) -> Self::Output {
|
|
FontWeight(self.0.clamp(100., 950.))
|
|
}
|
|
}
|
|
|
|
impl IntoGpui for FontFeaturesContent {
|
|
type Output = FontFeatures;
|
|
|
|
fn into_gpui(self) -> Self::Output {
|
|
FontFeatures(Arc::new(self.0.into_iter().collect()))
|
|
}
|
|
}
|
|
|
|
impl IntoGpui for WindowBackgroundContent {
|
|
type Output = WindowBackgroundAppearance;
|
|
|
|
fn into_gpui(self) -> Self::Output {
|
|
match self {
|
|
WindowBackgroundContent::Opaque => WindowBackgroundAppearance::Opaque,
|
|
WindowBackgroundContent::Transparent => WindowBackgroundAppearance::Transparent,
|
|
WindowBackgroundContent::Blurred => WindowBackgroundAppearance::Blurred,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl IntoGpui for ModifiersContent {
|
|
type Output = Modifiers;
|
|
|
|
fn into_gpui(self) -> Self::Output {
|
|
Modifiers {
|
|
control: self.control,
|
|
alt: self.alt,
|
|
shift: self.shift,
|
|
platform: self.platform,
|
|
function: self.function,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl IntoGpui for FontSize {
|
|
type Output = Pixels;
|
|
|
|
fn into_gpui(self) -> Self::Output {
|
|
px(self.0)
|
|
}
|
|
}
|
|
|
|
impl IntoGpui for FontFamilyName {
|
|
type Output = SharedString;
|
|
|
|
fn into_gpui(self) -> Self::Output {
|
|
SharedString::from(self.0)
|
|
}
|
|
}
|
|
|
|
#[cfg(test)]
|
|
mod tests {
|
|
use gpui::FontWeight;
|
|
use settings_content::FontWeightContent;
|
|
|
|
#[test]
|
|
fn test_font_weight_content_constants_match_gpui() {
|
|
assert_eq!(FontWeightContent::THIN.0, FontWeight::THIN.0);
|
|
assert_eq!(FontWeightContent::EXTRA_LIGHT.0, FontWeight::EXTRA_LIGHT.0);
|
|
assert_eq!(FontWeightContent::LIGHT.0, FontWeight::LIGHT.0);
|
|
assert_eq!(FontWeightContent::NORMAL.0, FontWeight::NORMAL.0);
|
|
assert_eq!(FontWeightContent::MEDIUM.0, FontWeight::MEDIUM.0);
|
|
assert_eq!(FontWeightContent::SEMIBOLD.0, FontWeight::SEMIBOLD.0);
|
|
assert_eq!(FontWeightContent::BOLD.0, FontWeight::BOLD.0);
|
|
assert_eq!(FontWeightContent::EXTRA_BOLD.0, FontWeight::EXTRA_BOLD.0);
|
|
assert_eq!(FontWeightContent::BLACK.0, FontWeight::BLACK.0);
|
|
}
|
|
}
|