fix on_id widget refcount leak (-> memory leak)
This commit is contained in:
@@ -103,7 +103,7 @@ impl Client {
|
||||
.width(rest(3)),
|
||||
)
|
||||
.span(Dir::RIGHT)
|
||||
.add_static(&mut ui);
|
||||
.add(&mut ui);
|
||||
|
||||
let span_test = (
|
||||
rrect.color(Color::GREEN).width(100),
|
||||
@@ -114,9 +114,10 @@ impl Client {
|
||||
rrect.color(Color::RED).width(100),
|
||||
)
|
||||
.span(Dir::LEFT)
|
||||
.add_static(&mut ui);
|
||||
.add(&mut ui);
|
||||
|
||||
let span_add = Span::empty(Dir::RIGHT).add_static(&mut ui);
|
||||
let span_add = Span::empty(Dir::RIGHT).add(&mut ui);
|
||||
let span_add_ = span_add.clone();
|
||||
|
||||
let add_button = rect(Color::LIME)
|
||||
.radius(30)
|
||||
@@ -125,22 +126,21 @@ impl Client {
|
||||
.ui
|
||||
.add(image(include_bytes!("assets/sungals.png")).center())
|
||||
.any();
|
||||
ctx.ui[span_add].children.push(child);
|
||||
ctx.ui[&span_add_].children.push(child);
|
||||
})
|
||||
.sized((150, 150))
|
||||
.align(Align::BOT_RIGHT);
|
||||
|
||||
let span_add_ = span_add.clone();
|
||||
let del_button = rect(Color::RED)
|
||||
.radius(30)
|
||||
.on(CursorSense::click(), move |ctx: &mut Client, _| {
|
||||
ctx.ui[span_add].children.pop();
|
||||
ctx.ui[&span_add_].children.pop();
|
||||
})
|
||||
.sized((150, 150))
|
||||
.align(Align::BOT_LEFT);
|
||||
|
||||
let span_add_test = (span_add, add_button, del_button)
|
||||
.stack()
|
||||
.add_static(&mut ui);
|
||||
let span_add_test = (span_add, add_button, del_button).stack().add(&mut ui);
|
||||
|
||||
let btext = |content| wtext(content).size(30);
|
||||
|
||||
@@ -163,10 +163,10 @@ impl Client {
|
||||
wtext("pretty cool right?").size(50),
|
||||
)
|
||||
.span(Dir::DOWN)
|
||||
.add_static(&mut ui);
|
||||
.add(&mut ui);
|
||||
|
||||
let texts = Span::empty(Dir::DOWN).gap(10).add_static(&mut ui);
|
||||
let msg_area = texts.scroll().masked().background(rect(Color::SKY));
|
||||
let texts = Span::empty(Dir::DOWN).gap(10).add(&mut ui);
|
||||
let msg_area = texts.clone().scroll().masked().background(rect(Color::SKY));
|
||||
let add_text = wtext("add")
|
||||
.editable(false)
|
||||
.text_align(Align::LEFT)
|
||||
@@ -183,7 +183,7 @@ impl Client {
|
||||
let msg_box = text
|
||||
.background(rect(Color::WHITE.darker(0.5)))
|
||||
.add(&mut client.ui);
|
||||
client.ui[texts].children.push(msg_box.any());
|
||||
client.ui[&texts].children.push(msg_box.any());
|
||||
})
|
||||
.add(&mut ui);
|
||||
let text_edit_scroll = (
|
||||
@@ -207,14 +207,15 @@ impl Client {
|
||||
.align(Align::BOT),
|
||||
)
|
||||
.span(Dir::DOWN)
|
||||
.add_static(&mut ui);
|
||||
.add(&mut ui);
|
||||
|
||||
let main = pad_test.pad(10).add_static(&mut ui);
|
||||
let main = pad_test.clone().pad(10).add(&mut ui);
|
||||
|
||||
let switch_button = |color, to, label| {
|
||||
let switch_button = |color, to: WidgetId, label| {
|
||||
let main_ = main.clone();
|
||||
let rect = rect(color)
|
||||
.id_on(CursorSense::click(), move |id, ui: &mut Ui, _| {
|
||||
ui[main].inner.set_static(to);
|
||||
ui[&main_.clone()].inner = to.clone();
|
||||
ui[id].color = color.darker(0.3);
|
||||
})
|
||||
.edit_on(
|
||||
|
||||
Reference in New Issue
Block a user