aboutsummaryrefslogtreecommitdiffstats
path: root/src/iterators.cpp
diff options
context:
space:
mode:
authorYuri Kobets <yuri.kobets@gmail.com>2023-02-01 03:42:58 +0300
committerYuri Kobets <yuri.kobets@gmail.com>2023-02-01 03:42:58 +0300
commit756b247ecd21d9a65103e4f698c914b205979eef (patch)
treedce28701753293dfd7145a9b4cdfaec7918f3c2c /src/iterators.cpp
parent388a06dfcc776d7d364e33215f447ee11dc2f39b (diff)
Redesigned inline elements rendering
Diffstat (limited to 'src/iterators.cpp')
-rw-r--r--src/iterators.cpp12
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)
{