mirror of
https://github.com/slint-ui/slint.git
synced 2025-11-01 20:31:27 +00:00
Refrersh the menubar when one of the property get changed
Install a PropertyTracker to update the shadow tree if something changes
This commit is contained in:
parent
a3d46a9e88
commit
094ff8f56b
5 changed files with 76 additions and 52 deletions
|
|
@ -1269,11 +1269,13 @@ inline void setup_popup_menu_from_menu_item_tree(
|
|||
using cbindgen_private::MenuVTable;
|
||||
auto shared = std::make_shared<vtable::VBox<MenuVTable>>(nullptr, nullptr);
|
||||
cbindgen_private::slint_menus_create_wrapper(&menu_item_tree, &*shared);
|
||||
SharedVector<MenuEntry> entries_sv;
|
||||
vtable::VRefMut<MenuVTable> ref { shared->vtable, shared->instance };
|
||||
shared->vtable->sub_menu(ref, nullptr, &entries_sv);
|
||||
std::vector<MenuEntry> entries_vec(entries_sv.begin(), entries_sv.end());
|
||||
entries.set(std::make_shared<VectorModel<MenuEntry>>(std::move(entries_vec)));
|
||||
entries.set_binding([shared] {
|
||||
vtable::VRefMut<MenuVTable> ref { shared->vtable, shared->instance };
|
||||
SharedVector<MenuEntry> entries_sv;
|
||||
shared->vtable->sub_menu(ref, nullptr, &entries_sv);
|
||||
std::vector<MenuEntry> entries_vec(entries_sv.begin(), entries_sv.end());
|
||||
return std::make_shared<VectorModel<MenuEntry>>(std::move(entries_vec));
|
||||
});
|
||||
sub_menu.set_handler([shared](const auto &entry) {
|
||||
vtable::VRefMut<MenuVTable> ref { shared->vtable, shared->instance };
|
||||
SharedVector<MenuEntry> entries_sv;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue