ui: Refine TitleBar
component (#9415)
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
This commit is contained in:
parent
dd33330648
commit
c1f1c5e75f
16 changed files with 369 additions and 335 deletions
25
crates/ui/src/styles/platform.rs
Normal file
25
crates/ui/src/styles/platform.rs
Normal file
|
@ -0,0 +1,25 @@
|
|||
/// 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
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue