mirror of
https://github.com/Tencent/Hippy.git
synced 2026-10-29 06:06:52 +08:00
feat(dom): remove event node
This commit is contained in:
@@ -80,7 +80,6 @@ set(SOURCE_SET
|
||||
src/dom/dom_listener.cc
|
||||
src/dom/dom_manager.cc
|
||||
src/dom/dom_node.cc
|
||||
src/dom/event_node.cc
|
||||
src/dom/layer_optimized_render_manager.cc
|
||||
src/dom/layout_node.cc
|
||||
src/dom/root_node.cc
|
||||
|
||||
@@ -25,14 +25,12 @@
|
||||
#include <string>
|
||||
|
||||
#include "dom/dom_event.h"
|
||||
#include "dom/event_node.h"
|
||||
#include "footstone/hippy_value.h"
|
||||
|
||||
namespace hippy {
|
||||
inline namespace dom {
|
||||
|
||||
class DomNode;
|
||||
class EventNode;
|
||||
|
||||
enum class EventPhase: uint8_t {
|
||||
kNone = 0,
|
||||
@@ -83,21 +81,12 @@ class DomEvent {
|
||||
inline std::weak_ptr<DomNode> GetCurrentTarget() {
|
||||
return current_target_;
|
||||
}
|
||||
inline void SetTarget(std::weak_ptr<DomNode> target) {
|
||||
target_ = target;
|
||||
}
|
||||
inline std::weak_ptr<DomNode> GetTarget() {
|
||||
return target_;
|
||||
}
|
||||
inline void SetTargetEventNode(std::shared_ptr<EventNode> target) {
|
||||
target_event_node_ = target;
|
||||
}
|
||||
inline std::shared_ptr<EventNode> GetTargetEventNode() {
|
||||
return target_event_node_;
|
||||
}
|
||||
inline void SetCurrentEventNode(std::shared_ptr<EventNode> current) {
|
||||
current_event_node_ = current;
|
||||
}
|
||||
inline std::shared_ptr<EventNode> GetCurrentEventNode() {
|
||||
return current_event_node_;
|
||||
}
|
||||
inline std::string GetType() {
|
||||
return type_;
|
||||
}
|
||||
@@ -112,8 +101,6 @@ class DomEvent {
|
||||
std::string type_;
|
||||
std::weak_ptr<DomNode> target_;
|
||||
std::weak_ptr<DomNode> current_target_;
|
||||
std::shared_ptr<EventNode> target_event_node_;
|
||||
std::shared_ptr<EventNode> current_event_node_;
|
||||
bool prevent_capture_;
|
||||
bool prevent_bubble_;
|
||||
bool can_capture_;
|
||||
|
||||
@@ -49,7 +49,6 @@ class RenderManager;
|
||||
class RootNode;
|
||||
class LayerOptimizedRenderManager;
|
||||
class DomEvent;
|
||||
class EventNode;
|
||||
struct DomInfo;
|
||||
|
||||
using EventCallback = std::function<void(const std::shared_ptr<DomEvent>&)>;
|
||||
|
||||
@@ -1,41 +0,0 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include "dom/dom_node.h"
|
||||
|
||||
namespace hippy {
|
||||
inline namespace dom {
|
||||
|
||||
struct DomEventListenerInfo;
|
||||
|
||||
class EventNode {
|
||||
public:
|
||||
EventNode(uint32_t id, uint32_t pid);
|
||||
virtual ~EventNode() = default;
|
||||
|
||||
EventNode(const EventNode& node) = delete;
|
||||
EventNode(EventNode&& node) = delete;
|
||||
EventNode& operator=(const EventNode& node) = delete;
|
||||
EventNode& operator=(EventNode&& node) = delete;
|
||||
|
||||
void SetId(uint32_t id) { id_ = id; }
|
||||
uint32_t GetId() { return id_; }
|
||||
|
||||
void SetPid(uint32_t pid) { pid_ = pid; }
|
||||
uint32_t GetPid() { return pid_; }
|
||||
|
||||
void SetCaptureListeners(const std::vector<std::shared_ptr<DomEventListenerInfo>> listeners);
|
||||
std::vector<DomEventListenerInfo> GetCaptureListeners() { return capture_listeners_; }
|
||||
|
||||
void SetBubbleListeners(const std::vector<std::shared_ptr<DomEventListenerInfo>> listeners);
|
||||
std::vector<DomEventListenerInfo> GetBubbleListeners() { return bubble_listeners_; }
|
||||
|
||||
private:
|
||||
uint32_t id_;
|
||||
uint32_t pid_;
|
||||
std::vector<DomEventListenerInfo> capture_listeners_;
|
||||
std::vector<DomEventListenerInfo> bubble_listeners_;
|
||||
};
|
||||
|
||||
} // namespace dom
|
||||
} // namespace hippy
|
||||
@@ -23,7 +23,6 @@
|
||||
#include <stack>
|
||||
|
||||
#include "dom/dom_node.h"
|
||||
#include "dom/event_node.h"
|
||||
#include "footstone/task_runner.h"
|
||||
|
||||
namespace hippy {
|
||||
@@ -69,8 +68,8 @@ class RootNode : public DomNode {
|
||||
void AddInterceptor(const std::shared_ptr<DomActionInterceptor>& interceptor);
|
||||
|
||||
// event traverse for js
|
||||
static void EventTraverse(const std::shared_ptr<DomEvent>& event, const std::shared_ptr<EventNode>& node,
|
||||
std::stack<std::shared_ptr<EventNode>>& capture_nodes);
|
||||
static void EventTraverse(const std::shared_ptr<DomEvent>& event, const std::shared_ptr<DomNode>& node,
|
||||
std::stack<std::shared_ptr<DomNode>>& capture_nodes);
|
||||
// event traverse for vl
|
||||
static void EventTraverse(const std::shared_ptr<DomEvent>& event);
|
||||
|
||||
|
||||
@@ -183,8 +183,6 @@ void DomNode::SetLayoutOrigin(float x, float y) {
|
||||
|
||||
void DomNode::AddEventListener(const std::string& name, uint64_t listener_id, bool use_capture,
|
||||
const EventCallback& cb) {
|
||||
current_callback_id_ += 1;
|
||||
FOOTSTONE_DCHECK(current_callback_id_ <= std::numeric_limits<uint32_t>::max());
|
||||
if (!event_listener_map_) {
|
||||
event_listener_map_ = std::make_shared<
|
||||
std::unordered_map<std::string, std::array<std::vector<std::shared_ptr<DomEventListenerInfo>>, 2>>>();
|
||||
|
||||
@@ -1,25 +0,0 @@
|
||||
#include "dom/event_node.h"
|
||||
|
||||
namespace hippy {
|
||||
inline namespace dom {
|
||||
|
||||
EventNode::EventNode(uint32_t id, uint32_t pid) : id_(id), pid_(pid) {}
|
||||
|
||||
void EventNode::SetCaptureListeners(const std::vector<std::shared_ptr<DomEventListenerInfo>> listeners) {
|
||||
for (const auto& listener : listeners) {
|
||||
FOOTSTONE_DCHECK(listener != nullptr);
|
||||
DomEventListenerInfo info = DomEventListenerInfo(listener->id, listener->cb);
|
||||
capture_listeners_.push_back(info);
|
||||
}
|
||||
}
|
||||
|
||||
void EventNode::SetBubbleListeners(const std::vector<std::shared_ptr<DomEventListenerInfo>> listeners) {
|
||||
for (const auto& listener : listeners) {
|
||||
FOOTSTONE_DCHECK(listener != nullptr);
|
||||
DomEventListenerInfo info = DomEventListenerInfo(listener->id, listener->cb);
|
||||
bubble_listeners_.push_back(info);
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace dom
|
||||
} // namespace hippy
|
||||
+17
-18
@@ -4,7 +4,6 @@
|
||||
|
||||
#include "dom/animation/animation_manager.h"
|
||||
#include "dom/diff_utils.h"
|
||||
#include "dom/event_node.h"
|
||||
#include "dom/render_manager.h"
|
||||
#include "footstone/deserializer.h"
|
||||
#include "footstone/hippy_value.h"
|
||||
@@ -224,43 +223,43 @@ void RootNode::RemoveEvent(uint32_t id, const std::string& event_name) {
|
||||
|
||||
void RootNode::HandleEvent(const std::shared_ptr<DomEvent>& event) { RootNode::RunEventCallbackRunner(event); }
|
||||
|
||||
void RootNode::EventTraverse(const std::shared_ptr<DomEvent>& event, const std::shared_ptr<EventNode>& node,
|
||||
std::stack<std::shared_ptr<EventNode>>& capture_nodes) {
|
||||
void RootNode::EventTraverse(const std::shared_ptr<DomEvent>& event, const std::shared_ptr<DomNode>& node,
|
||||
std::stack<std::shared_ptr<DomNode>>& capture_nodes) {
|
||||
FOOTSTONE_DCHECK(node != nullptr);
|
||||
FOOTSTONE_DCHECK(event != nullptr);
|
||||
if (node == nullptr || event == nullptr) return;
|
||||
auto event_name = event->GetType();
|
||||
|
||||
event->SetTargetEventNode(node);
|
||||
event->SetTarget(node);
|
||||
// 捕获列表反过来就是冒泡列表,不需要额外遍历生成
|
||||
// 执行捕获流程
|
||||
std::stack<std::shared_ptr<EventNode>> bubble_nodes = {};
|
||||
std::stack<std::shared_ptr<DomNode>> bubble_nodes = {};
|
||||
while (!capture_nodes.empty()) {
|
||||
auto capture_node = capture_nodes.top();
|
||||
capture_nodes.pop();
|
||||
event->SetCurrentEventNode(capture_node); // 设置当前节点,cb里会用到
|
||||
auto capture_listeners = capture_node->GetCaptureListeners();
|
||||
event->SetCurrentTarget(capture_node); // 设置当前节点,cb里会用到
|
||||
auto capture_listeners = capture_node->GetEventListener(event_name, true);
|
||||
for (const auto& listener : capture_listeners) {
|
||||
event->SetEventPhase(EventPhase::kCapturePhase);
|
||||
listener.cb(event); // StopPropagation并不会影响同级的回调调用
|
||||
listener->cb(event); // StopPropagation并不会影响同级的回调调用
|
||||
}
|
||||
if (event->IsPreventCapture()) { // cb 内部调用了 event.StopPropagation 会阻止捕获
|
||||
return; // 捕获流中StopPropagation不仅会导致捕获流程结束,后面的目标事件和冒泡都会终止
|
||||
}
|
||||
bubble_nodes.push(capture_node);
|
||||
bubble_nodes.push(std::move(capture_node));
|
||||
}
|
||||
// 执行本身节点回调
|
||||
if (node == nullptr) return;
|
||||
event->SetCurrentEventNode(node);
|
||||
for (const auto& listener : node->GetCaptureListeners()) {
|
||||
event->SetCurrentTarget(node);
|
||||
for (const auto& listener : node->GetEventListener(event_name, false)) {
|
||||
event->SetEventPhase(EventPhase::kAtTarget);
|
||||
listener.cb(event);
|
||||
listener->cb(event);
|
||||
}
|
||||
if (event->IsPreventCapture()) {
|
||||
return;
|
||||
}
|
||||
for (const auto& listener : node->GetBubbleListeners()) {
|
||||
for (const auto& listener : node->GetEventListener(event_name, false)) {
|
||||
event->SetEventPhase(EventPhase::kAtTarget);
|
||||
listener.cb(event);
|
||||
listener->cb(event);
|
||||
}
|
||||
if (event->IsPreventBubble()) {
|
||||
return;
|
||||
@@ -270,11 +269,11 @@ void RootNode::EventTraverse(const std::shared_ptr<DomEvent>& event, const std::
|
||||
while (!bubble_nodes.empty()) {
|
||||
auto bubble_node = bubble_nodes.top();
|
||||
bubble_nodes.pop();
|
||||
event->SetCurrentEventNode(bubble_node);
|
||||
auto listeners = bubble_node->GetBubbleListeners();
|
||||
event->SetCurrentTarget(bubble_node);
|
||||
auto listeners = bubble_node->GetEventListener(event_name, false);
|
||||
for (const auto& listener : listeners) {
|
||||
event->SetEventPhase(EventPhase::kBubblePhase);
|
||||
listener.cb(event);
|
||||
listener->cb(event);
|
||||
}
|
||||
if (event->IsPreventBubble()) {
|
||||
break;
|
||||
|
||||
@@ -41,7 +41,6 @@
|
||||
#include "footstone/hippy_value.h"
|
||||
#include "dom/root_node.h"
|
||||
#include "dom/dom_node.h"
|
||||
#include "dom/event_node.h"
|
||||
#ifdef ENABLE_INSPECTOR
|
||||
#include "devtools/devtools_data_source.h"
|
||||
#endif
|
||||
|
||||
@@ -94,13 +94,14 @@ std::shared_ptr<InstanceDefine<DomEvent>> MakeEventInstanceDefine(
|
||||
scope->GetContext()->ThrowException(footstone::stringview::unicode_string_view("nullptr event pointer"));
|
||||
return nullptr;
|
||||
}
|
||||
auto event_node = event->GetTargetEventNode();
|
||||
FOOTSTONE_DCHECK(event_node != nullptr);
|
||||
if (!event_node) {
|
||||
auto weak_node = event->GetTarget();
|
||||
auto dom_node = weak_node.lock();
|
||||
FOOTSTONE_DCHECK(dom_node != nullptr);
|
||||
if (!dom_node) {
|
||||
scope->GetContext()->ThrowException(footstone::stringview::unicode_string_view("nullptr event node pointer"));
|
||||
return nullptr;
|
||||
}
|
||||
uint32_t id = event_node->GetId();
|
||||
uint32_t id = dom_node->GetId();
|
||||
std::shared_ptr<CtxValue> ctx_value = scope->GetContext()->CreateNumber(id);
|
||||
return ctx_value;
|
||||
};
|
||||
@@ -118,13 +119,14 @@ std::shared_ptr<InstanceDefine<DomEvent>> MakeEventInstanceDefine(
|
||||
scope->GetContext()->ThrowException(footstone::stringview::unicode_string_view("nullptr event pointer"));
|
||||
return nullptr;
|
||||
}
|
||||
auto event_node = event->GetCurrentEventNode();
|
||||
FOOTSTONE_DCHECK(event_node != nullptr);
|
||||
if (!event_node) {
|
||||
auto weak_node = event->GetCurrentTarget();
|
||||
auto dom_node = weak_node.lock();
|
||||
FOOTSTONE_DCHECK(dom_node != nullptr);
|
||||
if (!dom_node) {
|
||||
scope->GetContext()->ThrowException(footstone::stringview::unicode_string_view("nullptr event node pointer"));
|
||||
return nullptr;
|
||||
}
|
||||
uint32_t current_id = event_node->GetId();
|
||||
uint32_t current_id = dom_node->GetId();
|
||||
std::shared_ptr<CtxValue> ctx_value = scope->GetContext()->CreateNumber(current_id);
|
||||
return ctx_value;
|
||||
};
|
||||
@@ -142,13 +144,14 @@ std::shared_ptr<InstanceDefine<DomEvent>> MakeEventInstanceDefine(
|
||||
scope->GetContext()->ThrowException(footstone::stringview::unicode_string_view("nullptr event pointer"));
|
||||
return nullptr;
|
||||
}
|
||||
auto event_node = event->GetTargetEventNode();
|
||||
FOOTSTONE_DCHECK(event_node != nullptr);
|
||||
if (!event_node) {
|
||||
auto weak_node = event->GetTarget();
|
||||
auto dom_node = weak_node.lock();
|
||||
FOOTSTONE_DCHECK(dom_node != nullptr);
|
||||
if (!dom_node) {
|
||||
scope->GetContext()->ThrowException(footstone::stringview::unicode_string_view("nullptr event node pointer"));
|
||||
return nullptr;
|
||||
}
|
||||
uint32_t target_id = event_node->GetId();
|
||||
uint32_t target_id = dom_node->GetId();
|
||||
std::shared_ptr<CtxValue> ctx_value = scope->GetContext()->CreateNumber(target_id);
|
||||
return ctx_value;
|
||||
};
|
||||
@@ -166,13 +169,14 @@ std::shared_ptr<InstanceDefine<DomEvent>> MakeEventInstanceDefine(
|
||||
scope->GetContext()->ThrowException(footstone::stringview::unicode_string_view("nullptr event pointer"));
|
||||
return nullptr;
|
||||
}
|
||||
auto event_node = event->GetCurrentEventNode();
|
||||
FOOTSTONE_DCHECK(event_node != nullptr);
|
||||
if (!event_node) {
|
||||
auto weak_node = event->GetCurrentTarget();
|
||||
auto dom_node = weak_node.lock();
|
||||
FOOTSTONE_DCHECK(dom_node != nullptr);
|
||||
if (!dom_node) {
|
||||
scope->GetContext()->ThrowException(footstone::stringview::unicode_string_view("nullptr event node pointer"));
|
||||
return scope->GetContext()->CreateUndefined();
|
||||
}
|
||||
uint32_t current_target_id = event_node->GetId();
|
||||
uint32_t current_target_id = dom_node->GetId();
|
||||
std::shared_ptr<CtxValue> ctx_value = scope->GetContext()->CreateNumber(current_target_id);
|
||||
return ctx_value;
|
||||
};
|
||||
|
||||
+22
-11
@@ -33,6 +33,7 @@
|
||||
#include "footstone/task_runner.h"
|
||||
#include "core/modules/module_register.h"
|
||||
#include "core/napi/native_source_code.h"
|
||||
#include "dom/dom_node.h"
|
||||
#ifdef JS_V8
|
||||
#include "core/napi/v8/js_native_api_v8.h"
|
||||
#endif
|
||||
@@ -45,7 +46,7 @@ using ModuleClassMap = hippy::napi::ModuleClassMap;
|
||||
using CtxValue = hippy::napi::CtxValue;
|
||||
using TryCatch = hippy::napi::TryCatch;
|
||||
using DomEvent = hippy::dom::DomEvent;
|
||||
using EventNode = hippy::dom::EventNode;
|
||||
using DomNode = hippy::dom::DomNode;
|
||||
|
||||
|
||||
constexpr char kDeallocFuncName[] = "HippyDealloc";
|
||||
@@ -381,31 +382,41 @@ void Scope::LoadInstance(const std::shared_ptr<HippyValue>& value) {
|
||||
return;
|
||||
}
|
||||
|
||||
std::stack<std::shared_ptr<EventNode>> capture_nodes = {};
|
||||
std::shared_ptr<EventNode> node = {};
|
||||
auto event_name = event->GetType();
|
||||
std::stack<std::shared_ptr<DomNode>> capture_nodes = {};
|
||||
std::shared_ptr<DomNode> node = {};
|
||||
|
||||
// 获取捕获节点
|
||||
if (event->CanCapture()) {
|
||||
auto parent = target->GetParent();
|
||||
while (parent) {
|
||||
auto capture_node =
|
||||
std::make_shared<EventNode>(parent->GetId(), parent->GetPid());
|
||||
auto capture_node = std::make_shared<DomNode>();
|
||||
capture_node->SetId(parent->GetId());
|
||||
capture_node->SetPid(parent->GetPid());
|
||||
auto capture_listeners = parent->GetEventListener(event_name, true);
|
||||
for(const auto& listener: capture_listeners) {
|
||||
capture_node->AddEventListener(event_name, listener->id, true, listener->cb);
|
||||
}
|
||||
auto bubble_listeners = parent->GetEventListener(event_name, false);
|
||||
capture_node->SetCaptureListeners(capture_listeners);
|
||||
capture_node->SetBubbleListeners(bubble_listeners);
|
||||
for(const auto& listener: capture_listeners) {
|
||||
capture_node->AddEventListener(event_name, listener->id, true, listener->cb);
|
||||
}
|
||||
capture_nodes.push(capture_node);
|
||||
parent = parent->GetParent();
|
||||
}
|
||||
}
|
||||
// 当前节点
|
||||
node = std::make_shared<EventNode>(target->GetId(), target->GetPid());
|
||||
node = std::make_shared<DomNode>();
|
||||
node->SetId(target->GetId());
|
||||
node->SetPid(target->GetPid());
|
||||
auto capture_listeners = target->GetEventListener(event_name, true);
|
||||
for(const auto& listener: capture_listeners) {
|
||||
node->AddEventListener(event_name, listener->id, true, listener->cb);
|
||||
}
|
||||
auto bubble_listeners = target->GetEventListener(event_name, false);
|
||||
node->SetCaptureListeners(capture_listeners);
|
||||
node->SetBubbleListeners(bubble_listeners);
|
||||
|
||||
for(const auto& listener: bubble_listeners) {
|
||||
node->AddEventListener(event_name, listener->id, false, listener->cb);
|
||||
}
|
||||
auto callback = [event, node, capture_nodes]() mutable { RootNode::EventTraverse(event, node, capture_nodes); };
|
||||
scope->GetTaskRunner()->PostTask(std::move(callback));
|
||||
});
|
||||
|
||||
@@ -22,7 +22,6 @@
|
||||
D4B5A081281663F400ABBD9C /* scene.cc in Sources */ = {isa = PBXBuildFile; fileRef = D4B5A07F281663F400ABBD9C /* scene.cc */; };
|
||||
D4B5A0862816641600ABBD9C /* event_module.cc in Sources */ = {isa = PBXBuildFile; fileRef = D4B5A0842816641600ABBD9C /* event_module.cc */; };
|
||||
D4B5A0872816641600ABBD9C /* scene_builder.cc in Sources */ = {isa = PBXBuildFile; fileRef = D4B5A0852816641600ABBD9C /* scene_builder.cc */; };
|
||||
D4EBECD22874232600170AE1 /* event_node.cc in Sources */ = {isa = PBXBuildFile; fileRef = D4EBECD12874232600170AE1 /* event_node.cc */; };
|
||||
D806C5082872BC3C00E62992 /* repeating_timer.cc in Sources */ = {isa = PBXBuildFile; fileRef = D806C4EF2872BC3B00E62992 /* repeating_timer.cc */; };
|
||||
D806C5092872BC3C00E62992 /* task.cc in Sources */ = {isa = PBXBuildFile; fileRef = D806C4F02872BC3B00E62992 /* task.cc */; };
|
||||
D806C50A2872BC3C00E62992 /* thread_worker.cc in Sources */ = {isa = PBXBuildFile; fileRef = D806C4F12872BC3B00E62992 /* thread_worker.cc */; };
|
||||
@@ -253,8 +252,6 @@
|
||||
D4B5A0852816641600ABBD9C /* scene_builder.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = scene_builder.cc; sourceTree = "<group>"; };
|
||||
D4B5A0882816642300ABBD9C /* event_module.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = event_module.h; sourceTree = "<group>"; };
|
||||
D4B5A0892816642300ABBD9C /* scene_builder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = scene_builder.h; sourceTree = "<group>"; };
|
||||
D4EBECD12874232600170AE1 /* event_node.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = event_node.cc; sourceTree = "<group>"; };
|
||||
D4EBECD32874233400170AE1 /* event_node.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = event_node.h; sourceTree = "<group>"; };
|
||||
D806C4EF2872BC3B00E62992 /* repeating_timer.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = repeating_timer.cc; sourceTree = "<group>"; };
|
||||
D806C4F02872BC3B00E62992 /* task.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = task.cc; sourceTree = "<group>"; };
|
||||
D806C4F12872BC3B00E62992 /* thread_worker.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = thread_worker.cc; sourceTree = "<group>"; };
|
||||
@@ -808,7 +805,6 @@
|
||||
D84AB8D9273A5AAD00987D03 /* dom */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D4EBECD32874233400170AE1 /* event_node.h */,
|
||||
D86B3E54284E31D2007E729B /* animation */,
|
||||
D4B5A0832816640500ABBD9C /* scene_builder.h */,
|
||||
D4B5A0822816640500ABBD9C /* scene.h */,
|
||||
@@ -841,7 +837,6 @@
|
||||
D84AB8E4273A5AAD00987D03 /* dom */ = {
|
||||
isa = PBXGroup;
|
||||
children = (
|
||||
D4EBECD12874232600170AE1 /* event_node.cc */,
|
||||
D86B3E5A284E31EB007E729B /* animation */,
|
||||
D42D2C7A2833C84D0079B47B /* dom_listener.cc */,
|
||||
D4B5A07E281663F400ABBD9C /* scene_builder.cc */,
|
||||
@@ -2069,7 +2064,6 @@
|
||||
F468DE6F2812A95200319196 /* HippyJSStackFrame.m in Sources */,
|
||||
F45D268128067B6900CAB185 /* UIView+DirectionalLayout.mm in Sources */,
|
||||
D806C5192872BC3C00E62992 /* worker.cc in Sources */,
|
||||
D4EBECD22874232600170AE1 /* event_node.cc in Sources */,
|
||||
F468DE692812A95200319196 /* HippyAssert.m in Sources */,
|
||||
F45D265928067B6900CAB185 /* NativeRenderRefresh.mm in Sources */,
|
||||
F4C1CE262811439A00CED4C4 /* UIView+Sequence.m in Sources */,
|
||||
|
||||
Reference in New Issue
Block a user