Skip to content

Commit 2512ea8

Browse files
committed
improve tree_view::provider::get_widget() api
1 parent 5bff7e3 commit 2512ea8

File tree

2 files changed

+32
-6
lines changed

2 files changed

+32
-6
lines changed

src/ruis/widget/group/tree_view.cpp

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -344,15 +344,16 @@ utki::shared_ref<widget> tree_view::provider::get_widget(size_t index)
344344
list = &n->children;
345345
}
346346

347-
auto ret = ruis::make::row(this->context, {});
347+
widget_list prefix_widgets;
348+
// auto ret = ruis::make::row(this->context, {});
348349

349350
ASSERT(is_last_item_in_parent.size() == path.size())
350351

351352
for (unsigned i = 0; i != path.size() - 1; ++i) {
352353
if (is_last_item_in_parent[i]) {
353-
ret.get().push_back(make_empty_space_indent(this->context));
354+
prefix_widgets.push_back(make_empty_space_indent(this->context));
354355
} else {
355-
ret.get().push_back(make_vertical_line_indent(this->context));
356+
prefix_widgets.push_back(make_vertical_line_indent(this->context));
356357
}
357358
}
358359

@@ -407,12 +408,31 @@ utki::shared_ref<widget> tree_view::provider::get_widget(size_t index)
407408
};
408409
widget.get().push_back(w);
409410
}
410-
ret.get().push_back(widget);
411+
prefix_widgets.push_back(widget);
411412
}
412413

413-
ret.get().push_back(this->get_widget(utki::make_span(path), is_collapsed));
414+
// ret.get().push_back(this->get_widget(utki::make_span(path), is_collapsed));
414415

415-
return ret;
416+
return this->get_widget(
417+
utki::make_span(path), //
418+
is_collapsed,
419+
std::move(prefix_widgets)
420+
);
421+
}
422+
423+
utki::shared_ref<widget> tree_view::provider::get_widget(
424+
utki::span<const size_t> index, //
425+
bool is_collapsed,
426+
widget_list prefix_widgets
427+
)
428+
{
429+
prefix_widgets.push_back(this->get_widget(index, is_collapsed));
430+
431+
return make::row(
432+
this->context, //
433+
{},
434+
std::move(prefix_widgets)
435+
);
416436
}
417437

418438
void tree_view::provider::recycle(size_t index, utki::shared_ref<widget> w)

src/ruis/widget/group/tree_view.hpp

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,12 @@ class tree_view :
101101
list_provider(std::move(context))
102102
{}
103103

104+
virtual utki::shared_ref<widget> get_widget(
105+
utki::span<const size_t> index, //
106+
bool is_collapsed,
107+
widget_list prefix_widgets
108+
);
109+
104110
virtual utki::shared_ref<widget> get_widget(
105111
utki::span<const size_t> index, //
106112
bool is_collapsed

0 commit comments

Comments
 (0)