mirror of
https://github.com/slint-ui/slint.git
synced 2025-09-29 13:24:48 +00:00
More work on signal: the C++ part is working
This commit is contained in:
parent
83d206ea39
commit
4575011293
15 changed files with 166 additions and 59 deletions
|
@ -2,6 +2,7 @@
|
|||
namespace sixtyfps::internal {
|
||||
// Workaround https://github.com/eqrion/cbindgen/issues/43
|
||||
struct ComponentVTable;
|
||||
struct ItemVTable;
|
||||
}
|
||||
#include "sixtyfps_internal.h"
|
||||
#include "sixtyfps_gl_internal.h"
|
||||
|
|
|
@ -31,11 +31,11 @@ struct Property
|
|||
{
|
||||
internal::sixtyfps_property_set_binding(
|
||||
&inner,
|
||||
[](const void *user_data, const void *value) {
|
||||
[](void *user_data, const void *value) {
|
||||
*reinterpret_cast<T *>(value) = (*reinterpret_cast<F *>(user_data))();
|
||||
},
|
||||
new F(binding),
|
||||
[](const void *user_data) { delete reinterpret_cast<F *>(user_data); });
|
||||
[](void *user_data) { delete reinterpret_cast<F *>(user_data); });
|
||||
}
|
||||
|
||||
private:
|
||||
|
|
|
@ -18,14 +18,14 @@ struct Signal
|
|||
{
|
||||
internal::sixtyfps_signal_set_handler(
|
||||
&inner,
|
||||
[](const void *user_data, const void *value) {
|
||||
[](void *user_data, const void *value) {
|
||||
(*reinterpret_cast<F *>(user_data))(value);
|
||||
},
|
||||
new F(binding),
|
||||
[](const void *user_data) { delete reinterpret_cast<F *>(user_data); });
|
||||
[](void *user_data) { delete reinterpret_cast<F *>(user_data); });
|
||||
}
|
||||
|
||||
void emit(void *data) const { internal::sixtyfps_signal_emit(&inner, data); }
|
||||
void emit(const void *data) const { internal::sixtyfps_signal_emit(&inner, data); }
|
||||
|
||||
private:
|
||||
internal::SignalOpaque inner;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue