closable_tab/
closable_tab.rs

1use fltk::{enums::*, prelude::*, *};
2
3fn tab_close_cb(g: &mut impl GroupExt) {
4    if app::callback_reason() == CallbackReason::Closed {
5        let mut parent = g.parent().unwrap();
6        parent.remove(g);
7        app::redraw();
8    }
9}
10
11fn main() {
12    let app = app::App::default();
13    let mut win = window::Window::default().with_size(800, 600);
14    let row = group::Flex::default_fill().row();
15    let mut tabs = group::Tabs::default();
16    tabs.set_tab_align(enums::Align::Right);
17    tabs.handle_overflow(group::TabsOverflow::Compress);
18    // first tab
19    {
20        let mut col1 = group::Flex::default().with_label("\t\ttab1").column();
21        col1.set_when(When::Closed);
22        col1.set_callback(tab_close_cb);
23        // widgets
24        col1.end();
25    }
26    // end first tab
27
28    // second tab
29    {
30        let mut col2 = group::Flex::default().with_label("\t\ttab2").column();
31        col2.set_when(When::Closed);
32        col2.set_callback(tab_close_cb);
33        // widgets
34        col2.end();
35    }
36    // end second tab
37    tabs.end();
38    tabs.auto_layout();
39    row.end();
40    win.end();
41    win.show();
42    app.run().unwrap();
43}