diff --git a/Cargo.lock b/Cargo.lock index b496767..88cc4cd 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -635,11 +635,10 @@ dependencies = [ ] [[package]] -name = "wmenu" +name = "wmenu-rs" version = "0.1.0" dependencies = [ "gag", - "pangocairo-sys", "wmenu-sys", ] diff --git a/src/lib.rs b/src/lib.rs index 1d36036..5fe93e3 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -7,6 +7,8 @@ use std::{ use wmenu_sys::bindings; +type Callback = fn(menu: &mut Menu, text: &str) -> bool; + unsafe extern "C" fn print_item(menu: *mut bindings::menu, text: *mut i8, exit: bool) { wmenu_sys::bindings::puts(text); wmenu_sys::bindings::fflush(bindings::stdout); @@ -45,9 +47,9 @@ pub struct Menu { } impl Menu { - pub fn new() -> Menu { + pub fn new(callback: Callback) -> Menu { Self { - ctx: unsafe { bindings::menu_create(Some(print_item)) }, + ctx: unsafe { bindings::menu_create(Some(callback)) }, } }