gpui: Allow repositioning macOS traffic lights at runtime (#58169)
Self-Review Checklist: - [x] I've reviewed my own diff for quality, security, and reliability - [ ] Unsafe blocks (if any) have justifying comments - [ ] The content is consistent with the [UI/UX checklist](https://github.com/zed-industries/zed/blob/main/CONTRIBUTING.md#uiux-checklist) - [ ] Tests cover the new/changed behavior - [x] Performance impact has been considered and is acceptable Release Notes: - N/A Right now we can only set the traffic light position when creating a window. This adds a public API so that we can update the position at runtime, such as when titlebar height or layout changes dynamically.
This commit is contained in:
1 parent
6a7b2bc1e2
commit
137eeea67b
3 files changed
+14
No files matched your search
@@ -670,6 +670,8 @@ pub trait PlatformWindow: HasWindowHandle + HasDisplayHandle {
|
||||
}
|
||||
fn set_edited(&mut self, _edited: bool) {}
|
||||
fn set_document_path(&self, _path: Option<&std::path::Path>) {}
|
||||
#[cfg(target_os = "macos")]
|
||||
fn set_traffic_light_position(&self, _position: Point<Pixels>) {}
|
||||
fn show_character_palette(&self) {}
|
||||
fn titlebar_double_click(&self) {}
|
||||
fn on_move_tab_to_new_window(&self, _callback: Box<dyn FnMut()>) {}
|
||||
|
||||
@@ -2311,6 +2311,12 @@ impl Window {
|
||||
self.platform_window.set_title(title);
|
||||
}
|
||||
|
||||
/// Sets the position of the macOS traffic light buttons.
|
||||
#[cfg(target_os = "macos")]
|
||||
pub fn set_traffic_light_position(&self, position: Point<Pixels>) {
|
||||
self.platform_window.set_traffic_light_position(position);
|
||||
}
|
||||
|
||||
/// Sets the application identifier.
|
||||
pub fn set_app_id(&mut self, app_id: &str) {
|
||||
self.platform_window.set_app_id(app_id);
|
||||
|
||||
@@ -1188,6 +1188,12 @@ impl PlatformWindow for MacWindow {
|
||||
}
|
||||
}
|
||||
|
||||
fn set_traffic_light_position(&self, position: Point<Pixels>) {
|
||||
let mut state = self.0.lock();
|
||||
state.traffic_light_position = Some(position);
|
||||
state.move_traffic_light();
|
||||
}
|
||||
|
||||
fn scale_factor(&self) -> f32 {
|
||||
self.0.as_ref().lock().scale_factor()
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user