Change summary
crates/gpui/src/platform/windows/platform.rs | 11 ++++++++
crates/title_bar/src/title_bar.rs | 25 +++++++++++----------
2 files changed, 23 insertions(+), 13 deletions(-)
Detailed changes
@@ -48,6 +48,7 @@ pub(crate) struct WindowsPlatform {
pub(crate) struct WindowsPlatformState {
callbacks: PlatformCallbacks,
+ menus: Vec<OwnedMenu>,
// NOTE: standard cursor handles don't need to close.
pub(crate) current_cursor: HCURSOR,
}
@@ -70,6 +71,7 @@ impl WindowsPlatformState {
Self {
callbacks,
current_cursor,
+ menus: Vec::new(),
}
}
}
@@ -449,8 +451,15 @@ impl Platform for WindowsPlatform {
self.state.borrow_mut().callbacks.reopen = Some(callback);
}
+ fn set_menus(&self, menus: Vec<Menu>, _keymap: &Keymap) {
+ self.state.borrow_mut().menus = menus.into_iter().map(|menu| menu.owned()).collect();
+ }
+
+ fn get_menus(&self) -> Option<Vec<OwnedMenu>> {
+ Some(self.state.borrow().menus.clone())
+ }
+
// todo(windows)
- fn set_menus(&self, _menus: Vec<Menu>, _keymap: &Keymap) {}
fn set_dock_menu(&self, _menus: Vec<MenuItem>, _keymap: &Keymap) {}
fn on_app_menu_action(&self, callback: Box<dyn FnMut(&dyn Action)>) {
@@ -134,18 +134,19 @@ impl Render for TitleBar {
.child(
h_flex()
.gap_1()
- .when_some(self.application_menu.clone(), |this, menu| {
- let is_any_menu_deployed = menu.read(cx).is_any_deployed();
- this.child(menu).when(!is_any_menu_deployed, |this| {
- this.children(self.render_project_host(cx))
- .child(self.render_project_name(cx))
- .children(self.render_project_branch(cx))
- })
- })
- .when(self.application_menu.is_none(), |this| {
- this.children(self.render_project_host(cx))
- .child(self.render_project_name(cx))
- .children(self.render_project_branch(cx))
+ .map(|title_bar| {
+ let mut render_project_items = true;
+ title_bar
+ .when_some(self.application_menu.clone(), |title_bar, menu| {
+ render_project_items = !menu.read(cx).is_any_deployed();
+ title_bar.child(menu)
+ })
+ .when(render_project_items, |title_bar| {
+ title_bar
+ .children(self.render_project_host(cx))
+ .child(self.render_project_name(cx))
+ .children(self.render_project_branch(cx))
+ })
})
.on_mouse_down(MouseButton::Left, |_, cx| cx.stop_propagation()),
)