
This PR continues the refinements to the `TitleBar` component. Here are the notable changes: - `KeyBindingDisplay` and `PlatformStyle` have been unified into a single `PlatformStyle`. - This provides us a consistent way for adapting UI to different platform styles. - `PlatformTitlebar` has been renamed to `TitleBar`. - The `Platform` prefix was irrelevant. - The Windows window controls have been factored out into a separate module and have been componentized. <img width="1283" alt="Screenshot 2024-03-15 at 3 34 38 PM" src="https://github.com/zed-industries/zed/assets/1486634/07da391f-828b-48bf-8849-58863f4ccce7"> > I'm missing the Segoe Fluent Icons font, so that's why the aren't rendering properly. Release Notes: - N/A
25 lines
657 B
Rust
25 lines
657 B
Rust
/// The platform style to use when rendering UI.
|
|
///
|
|
/// This can be used to abstract over platform differences.
|
|
#[derive(Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Clone, Copy)]
|
|
pub enum PlatformStyle {
|
|
/// Display in macOS style.
|
|
Mac,
|
|
/// Display in Linux style.
|
|
Linux,
|
|
/// Display in Windows style.
|
|
Windows,
|
|
}
|
|
|
|
impl PlatformStyle {
|
|
/// Returns the [`PlatformStyle`] for the current platform.
|
|
pub const fn platform() -> Self {
|
|
if cfg!(target_os = "linux") {
|
|
Self::Linux
|
|
} else if cfg!(target_os = "windows") {
|
|
Self::Windows
|
|
} else {
|
|
Self::Mac
|
|
}
|
|
}
|
|
}
|