diff --git a/crates/gpui2/src/elements/div.rs b/crates/gpui2/src/elements/div.rs index 248082d04b..aa5fff8b3d 100644 --- a/crates/gpui2/src/elements/div.rs +++ b/crates/gpui2/src/elements/div.rs @@ -235,7 +235,7 @@ impl Interactivity { pub fn on_boxed_action( &mut self, - action: &Box, + action: &dyn Action, listener: impl Fn(&Box, &mut WindowContext) + 'static, ) { let action = action.boxed_clone(); @@ -510,7 +510,7 @@ pub trait InteractiveElement: Sized { fn on_boxed_action( mut self, - action: &Box, + action: &dyn Action, listener: impl Fn(&Box, &mut WindowContext) + 'static, ) -> Self { self.interactivity().on_boxed_action(action, listener); @@ -877,6 +877,7 @@ impl DivState { } } +#[derive(Default)] pub struct Interactivity { pub element_id: Option, pub key_context: Option, @@ -1689,46 +1690,6 @@ impl Interactivity { } } -impl Default for Interactivity { - fn default() -> Self { - Self { - element_id: None, - key_context: None, - focusable: false, - tracked_focus_handle: None, - scroll_handle: None, - // scroll_offset: Point::default(), - group: None, - base_style: Box::::default(), - focus_style: None, - in_focus_style: None, - hover_style: None, - group_hover_style: None, - active_style: None, - group_active_style: None, - drag_over_styles: Vec::new(), - group_drag_over_styles: Vec::new(), - mouse_down_listeners: Vec::new(), - mouse_up_listeners: Vec::new(), - mouse_move_listeners: Vec::new(), - scroll_wheel_listeners: Vec::new(), - key_down_listeners: Vec::new(), - key_up_listeners: Vec::new(), - action_listeners: Vec::new(), - drop_listeners: Vec::new(), - can_drop_predicate: None, - click_listeners: Vec::new(), - drag_listener: None, - hover_listener: None, - tooltip_builder: None, - block_mouse: false, - - #[cfg(debug_assertions)] - location: None, - } - } -} - #[derive(Default)] pub struct InteractiveElementState { pub focus_handle: Option, diff --git a/crates/gpui2/src/elements/overlay.rs b/crates/gpui2/src/elements/overlay.rs index b5d8b53c7f..69fe120142 100644 --- a/crates/gpui2/src/elements/overlay.rs +++ b/crates/gpui2/src/elements/overlay.rs @@ -71,9 +71,11 @@ impl Element for Overlay { .map(|child| child.layout(cx)) .collect::>(); - let mut overlay_style = Style::default(); - overlay_style.position = Position::Absolute; - overlay_style.display = Display::Flex; + let overlay_style = Style { + position: Position::Absolute, + display: Display::Flex, + ..Style::default() + }; let layout_id = cx.request_layout(&overlay_style, child_layout_ids.iter().copied()); diff --git a/crates/gpui2/src/platform/mac/metal_renderer.rs b/crates/gpui2/src/platform/mac/metal_renderer.rs index e068202476..a6cdd166d3 100644 --- a/crates/gpui2/src/platform/mac/metal_renderer.rs +++ b/crates/gpui2/src/platform/mac/metal_renderer.rs @@ -66,12 +66,10 @@ impl MetalRenderer { .expect("error building metal library"); fn to_float2_bits(point: crate::PointF) -> u64 { - unsafe { - let mut output = mem::transmute::<_, u32>(point.y.to_bits()) as u64; - output <<= 32; - output |= mem::transmute::<_, u32>(point.x.to_bits()) as u64; - output - } + let mut output = point.y.to_bits() as u64; + output <<= 32; + output |= point.x.to_bits() as u64; + output } let unit_vertices = [ diff --git a/crates/gpui2/src/platform/mac/platform.rs b/crates/gpui2/src/platform/mac/platform.rs index 7dc35ba1ad..153736870a 100644 --- a/crates/gpui2/src/platform/mac/platform.rs +++ b/crates/gpui2/src/platform/mac/platform.rs @@ -225,7 +225,12 @@ impl MacPlatform { menu.setDelegate_(delegate); for item_config in menu_config.items { - menu.addItem_(self.create_menu_item(item_config, delegate, actions, keymap)); + menu.addItem_(Self::create_menu_item( + item_config, + delegate, + actions, + keymap, + )); } let menu_item = NSMenuItem::new(nil).autorelease(); @@ -242,7 +247,6 @@ impl MacPlatform { } unsafe fn create_menu_item( - &self, item: MenuItem, delegate: id, actions: &mut Vec>, @@ -348,7 +352,7 @@ impl MacPlatform { let submenu = NSMenu::new(nil).autorelease(); submenu.setDelegate_(delegate); for item in items { - submenu.addItem_(self.create_menu_item(item, delegate, actions, keymap)); + submenu.addItem_(Self::create_menu_item(item, delegate, actions, keymap)); } item.setSubmenu_(submenu); item.setTitle_(ns_string(name)); diff --git a/crates/gpui2/src/window.rs b/crates/gpui2/src/window.rs index 0e40babccd..1af0f55822 100644 --- a/crates/gpui2/src/window.rs +++ b/crates/gpui2/src/window.rs @@ -2922,10 +2922,7 @@ impl Copy for WindowHandle {} impl Clone for WindowHandle { fn clone(&self) -> Self { - WindowHandle { - any_handle: self.any_handle, - state_type: PhantomData, - } + *self } } diff --git a/crates/ui2/src/components/context_menu.rs b/crates/ui2/src/components/context_menu.rs index 52ba2cedb2..14d0b3b18b 100644 --- a/crates/ui2/src/components/context_menu.rs +++ b/crates/ui2/src/components/context_menu.rs @@ -253,7 +253,7 @@ impl Render for ContextMenu { } = item { el = el.on_boxed_action( - action, + &**action, cx.listener(ContextMenu::on_action_dispatch), ); }