diff options
| author | Yuri Kobets <yuri.kobets@gmail.com> | 2023-02-01 03:42:58 +0300 |
|---|---|---|
| committer | Yuri Kobets <yuri.kobets@gmail.com> | 2023-02-01 03:42:58 +0300 |
| commit | 756b247ecd21d9a65103e4f698c914b205979eef (patch) | |
| tree | dce28701753293dfd7145a9b4cdfaec7918f3c2c /src/iterators.cpp | |
| parent | 388a06dfcc776d7d364e33215f447ee11dc2f39b (diff) | |
Redesigned inline elements rendering
Diffstat (limited to 'src/iterators.cpp')
| -rw-r--r-- | src/iterators.cpp | 12 |
1 files changed, 8 insertions, 4 deletions
diff --git a/src/iterators.cpp b/src/iterators.cpp index 8577edaf..5b3238ad 100644 --- a/src/iterators.cpp +++ b/src/iterators.cpp @@ -16,7 +16,7 @@ bool litehtml::elements_iterator::go_inside(const std::shared_ptr<render_item>& return /*!el->children().empty() &&*/ m_go_inside && m_go_inside->select(el); } -void litehtml::elements_iterator::process(const std::shared_ptr<render_item>& container, const std::function<void (std::shared_ptr<render_item>&)>& func) +void litehtml::elements_iterator::process(const std::shared_ptr<render_item>& container, const std::function<void (std::shared_ptr<render_item>&, iterator_item_type)>& func) { for(auto& el : container->children()) { @@ -25,16 +25,21 @@ void litehtml::elements_iterator::process(const std::shared_ptr<render_item>& co if(m_return_parent) { // call function for parent - func(el); + func(el, iterator_item_type_start_parent); } // go inside element and process its items process(el, func); + if(m_return_parent) + { + // call function for parent + func(el, iterator_item_type_end_parent); + } } else { // call function for element if(!m_select || m_select->select(el)) { - func(el); + func(el, iterator_item_type_child); } } } @@ -58,7 +63,6 @@ bool litehtml::inline_selector::select(const std::shared_ptr<render_item>& el) if(el->src_el()->css().get_display() == display_inline_text || el->src_el()->css().get_display() == display_inline_table || el->src_el()->css().get_display() == display_inline_block || - el->src_el()->css().get_display() == display_inline_table || el->src_el()->css().get_display() == display_inline_flex || el->src_el()->css().get_float() != float_none) { |
