Cargo.lock 🔗
@@ -974,6 +974,14 @@ dependencies = [
"workspace",
]
+[[package]]
+name = "context_menu"
+version = "0.1.0"
+dependencies = [
+ "gpui",
+ "theme",
+]
+
[[package]]
name = "core-foundation"
version = "0.9.3"
Nathan Sobo created
Cargo.lock | 8 +++++++
crates/context_menu/Cargo.toml | 12 +++++++++++
crates/context_menu/src/context_menu.rs | 28 +++++++++++++++++++++++++++
3 files changed, 48 insertions(+)
@@ -974,6 +974,14 @@ dependencies = [
"workspace",
]
+[[package]]
+name = "context_menu"
+version = "0.1.0"
+dependencies = [
+ "gpui",
+ "theme",
+]
+
[[package]]
name = "core-foundation"
version = "0.9.3"
@@ -0,0 +1,12 @@
+[package]
+name = "context_menu"
+version = "0.1.0"
+edition = "2021"
+
+[lib]
+path = "src/context_menu.rs"
+doctest = false
+
+[dependencies]
+gpui = { path = "../gpui" }
+theme = { path = "../theme" }
@@ -0,0 +1,28 @@
+use gpui::{Entity, View};
+
+enum ContextMenuItem {
+ Item {
+ label: String,
+ action: Box<dyn Action>,
+ },
+ Separator,
+}
+
+pub struct ContextMenu {
+ position: Vector2F,
+ items: Vec<ContextMenuItem>,
+}
+
+impl Entity for ContextMenu {
+ type Event = ();
+}
+
+impl View for ContextMenu {
+ fn ui_name() -> &'static str {
+ "ContextMenu"
+ }
+
+ fn render(&mut self, cx: &mut gpui::RenderContext<'_, Self>) -> gpui::ElementBox {
+ Overlay::new().with_abs_position(self.position).boxed()
+ }
+}