Function set_raw_callback
pub unsafe fn set_raw_callback<W>(
widget: &mut W,
data: *mut c_void,
cb: Option<fn(_: *mut Fl_Widget, _: *mut c_void)>,
)where
W: WidgetExt,
Available on crate feature
dep_fltk
only.Expand description
Set a widget callback using a C style API
use fltk::{prelude::*, *};
use std::os::raw::*;
// data can be anything, even a different widget
fn cb(w: app::WidgetPtr, data: *mut c_void) {
// To access the button
let mut btn = unsafe { button::Button::from_widget_ptr(w) }; // Gets a Widget
btn.set_label("Works!");
// To access the frame
let mut frm = unsafe { widget::Widget::from_widget_ptr(data as app::WidgetPtr) };
frm.set_label("Works!");
}
let mut but = button::Button::default();
let mut frame = frame::Frame::default();
unsafe {
// If no data needs to be passed, you can pass 0 as *mut _
app::set_raw_callback(&mut but, frame.as_widget_ptr() as *mut _, Some(cb));
// Using a closure also works
app::set_raw_callback(&mut but, frame.as_widget_ptr() as *mut _, Some(|_ , _| { println!("Also works!")}));
}
§Safety
The function involves dereferencing externally provided raw pointers