8 个版本 (4 个重大更新)
0.5.0 | 2024 年 3 月 28 日 |
---|---|
0.4.2 | 2024 年 3 月 1 日 |
0.3.0 | 2024 年 3 月 1 日 |
0.2.2 | 2024 年 2 月 25 日 |
0.1.0 | 2024 年 2 月 24 日 |
#418 in GUI
每月下载 48 次
在 fltkrs-richdisplay 中使用
36KB
403 行
debounce_fltk
适用于 FLTK 应用的简单防抖和节流工具。可用于控制 UI 事件处理的频率或控制其他非 UI 事件的函数调用频率。它还支持在预设计时器到期后一次性或重复执行任务。非宏处理,纯代码控制。依赖 tokio 实现。
使用示例
let mut debounce_update = TokioDebounce::new_debounce({
let vp = version_package.clone();
let mut script_editor = script_editor.clone();
let tree = tree.clone();
let editor_window = editor_window.clone();
move |_| {
// debug!("tree callback, {:?}", tree.first_selected_item());
update_level_record(tree.clone(), vp.clone(), script_editor.clone(), editor_window.clone());
update_tree_stat(tree.clone(), &mut script_editor);
}
}, Duration::from_millis(100), true);
tree.set_callback({
let mut script_editor = script_editor.clone();
move |tree| {
// debug!("tree callback, {:?}", tree.first_selected_item());
if let Some(sel) = tree.first_selected_item() {
let depth = sel.depth();
if depth == 2 {
if let Err(_e) = script_editor.config_tabs.set_value(&script_editor.config_trigger_flex) {
// error!("切换触发器标签页时出错:{:?}", e);
}
} else if depth == 3 {
if let Err(_e) = script_editor.config_tabs.set_value(&script_editor.config_expr_flex) {
// error!("切换触发器标签页时出错:{:?}", e);
}
}
}
/*
当鼠标点选某个树节点时,Changed事件会连续发生两次:第一次取消选择状态,第二次选中某个节点。
因此这里需要做防抖处理,只处理有限时段内最后一次事件即可。
*/
debounce_update.update_param(());
}
});
依赖项
~17–24MB
~381K SLoC