windows: Fix title bar font for Windows 10 (#13425)

Matin Aniss created

This should fix the title bar font for Windows 10 as `Segoe Fluent
Icons` is only for Windows 11 and Windows 10 should be using `Segoe MDL2
Assets`, I haven't tested this myself on a Windows 10 machine but the
fonts work fine.

Release Notes:

- N/A

Change summary

crates/ui/src/components/title_bar/windows_window_controls.rs | 21 ++++
1 file changed, 20 insertions(+), 1 deletion(-)

Detailed changes

crates/ui/src/components/title_bar/windows_window_controls.rs 🔗

@@ -11,6 +11,25 @@ impl WindowsWindowControls {
     pub fn new(button_height: Pixels) -> Self {
         Self { button_height }
     }
+
+    #[cfg(not(target_os = "windows"))]
+    fn get_font() -> &'static str {
+        "Segoe Fluent Icons"
+    }
+
+    #[cfg(target_os = "windows")]
+    fn get_font() -> &'static str {
+        use windows::Wdk::System::SystemServices::RtlGetVersion;
+
+        let mut version = unsafe { std::mem::zeroed() };
+        let status = unsafe { RtlGetVersion(&mut version) };
+
+        if status.is_ok() && version.dwBuildNumber >= 22000 {
+            "Segoe Fluent Icons"
+        } else {
+            "Segoe MDL2 Assets"
+        }
+    }
 }
 
 impl RenderOnce for WindowsWindowControls {
@@ -39,6 +58,7 @@ impl RenderOnce for WindowsWindowControls {
 
         div()
             .id("windows-window-controls")
+            .font_family(Self::get_font())
             .flex()
             .flex_row()
             .justify_center()
@@ -110,7 +130,6 @@ impl RenderOnce for WindowsCaptionButton {
             .content_center()
             .w(width)
             .h_full()
-            .font_family("Segoe Fluent Icons")
             .text_size(px(10.0))
             .hover(|style| style.bg(self.hover_background_color))
             .active(|style| {