Releases: NuiCpp/Nui
Updated Emscripten Dropped Ubuntu 20
v0.18.5 Added missing header
libc++ reduced transitive includes in C++23.
Added missing header.
v0.18.4 Compatibility with Boost 1.87.0
Merge pull request #130 from NuiCpp/feat/boost-1_87-updates Updated roar revision.
v0.18.3 Update Dependencies
Update underlying dependencies to work with newer boost versions.
v0.18.2 Made some tidy improvements and fixed / improved ScopeExit utility class
v0.18.1 Fixed CMake Build Order Dependencies
Merge pull request #126 from NuiCpp/fix/better-parcel-target Changed parcel target to custom command.
v0.18.0 Rendering Optimization Rework
This is a big one!
Observed vectors and deques rendering is now optimized as originally intended.
- Modifications only ever cause render changes to affected elements.
- Erasures only erase affected elements and dont cause rerenders of existing elements.
- Inserts only insert at given positions and dont cause other elements to be rerendered.
Also added a feature where elements can be created into an element, that is not somewhere in the Nui DOM.
This allows the user to create Elements from C++ and hand them to javascript libraries.
Beware now that indices in the range render function can make the view go out of sync, because indices are not updating due to this important optimization. If you render indices you need to bypass the optimization by calling observed.modify(); // or observed.modifyNow()
v0.17.1 Fixed bug with Custom Event Context
The Observed(EventContext* ctx) constructor could be selected too easily by accident.
This now requires passing an extra parameter.
Added deferred tags
It is sometimes necessary to do things on the element AFTER it was inserted into the dom.
This is now possible with deferred attributes/properties.
Syntax still needs some improvement.
div {
reference.onMaterialize(/*...*/).defer(true)
// or !(class_ = "asdf")
}()
This will become this in an upcoming PR:
div {
!class_ = "asdf"
}()
v0.16.0 listen function added
You can now also listen to events on Observed<>
#include <nui/event_system/listen.hpp>
Observed<int> obs;
listen(obs, [](int const& i) {
// ...
});
obs = 7;
Nui::globalEventContext.executeActiveEventsImmediately();
Also observed now accept other (user) event contexts.
Which is useful to decouple app events von UI events.
#include <nui/event_system/listen.hpp>
Nui::EventContext userContext;
Observed<int> obs{userContext};
listen(userContext, obs, [](int const& i) {
// ...
});
obs = 7;
userContext.executeActiveEventsImmediately();