summaryrefslogtreecommitdiff
path: root/src/ui/event_binding.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/ui/event_binding.cpp')
-rw-r--r--src/ui/event_binding.cpp23
1 files changed, 23 insertions, 0 deletions
diff --git a/src/ui/event_binding.cpp b/src/ui/event_binding.cpp
new file mode 100644
index 00000000..ed15ccfb
--- /dev/null
+++ b/src/ui/event_binding.cpp
@@ -0,0 +1,23 @@
+/*
+ * Copyright 2023 jacqueline <me@jacqueline.id.au>
+ *
+ * SPDX-License-Identifier: GPL-3.0-only
+ */
+
+#include "event_binding.hpp"
+
+#include "core/lv_event.h"
+
+namespace ui {
+
+static auto event_cb(lv_event_t* ev) -> void {
+ EventBinding* binding =
+ static_cast<EventBinding*>(lv_event_get_user_data(ev));
+ binding->signal()(lv_event_get_target(ev));
+}
+
+EventBinding::EventBinding(lv_obj_t* obj, lv_event_code_t ev) {
+ lv_obj_add_event_cb(obj, event_cb, ev, this);
+}
+
+} // namespace ui