blob: 46965b7fd0ca37f7a67c74532b54c490f6bf6d64 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
|
#include "cru/ui/render/TreeRenderObject.h"
namespace cru::ui::render {
TreeRenderObjectItem::TreeRenderObjectItem(TreeRenderObject* tree_render_object,
TreeRenderObjectItem* parent)
: tree_render_object_(tree_render_object), parent_(parent) {}
TreeRenderObjectItem::~TreeRenderObjectItem() {
for (auto child : children_) {
delete child;
}
}
void TreeRenderObjectItem::SetRenderObject(RenderObject* render_object) {
if (render_object == render_object_) return;
render_object_ = render_object;
tree_render_object_->InvalidateLayout();
}
TreeRenderObjectItem* TreeRenderObjectItem::AddItem(Index position) {
auto item = new TreeRenderObjectItem(tree_render_object_, this);
children_.insert(children_.begin() + position, item);
return item;
}
void TreeRenderObjectItem::RemoveItem(Index position) {
Expects(position >= 0 && position < children_.size());
delete children_[position];
children_.erase(children_.begin() + position);
tree_render_object_->InvalidateLayout();
}
TreeRenderObject::TreeRenderObject() {
SetChildMode(ChildMode::None);
root_item_ = new TreeRenderObjectItem(this, nullptr);
}
TreeRenderObject::~TreeRenderObject() { delete root_item_; }
Size TreeRenderObject::OnMeasureContent(const MeasureRequirement& requirement,
const MeasureSize& preferred_size) {
throw Exception(u"Not implemented.");
}
void TreeRenderObject::OnLayoutContent(const Rect& content_rect) {
throw Exception(u"Not implemented.");
}
} // namespace cru::ui::render
|