During prototyping a feature I found it useful for
text_art::wrapper_widget to be able to not have a child.
gcc/ChangeLog:
* text-art/widget.cc (selftest::test_empty_wrapper_widget): New.
(selftest::text_art_widget_cc_tests): Call it.
* text-art/widget.h (text_art::wrapper_widget::calc_req_size):
Gracefully handle m_child being null.
(text_art::wrapper_widget::update_child_alloc_rects): Likewise.
(text_art::wrapper_widget::paint_to_canvas): Likewise.
Signed-off-by: David Malcolm <dmalcolm@redhat.com>
"BBB\n"));
}
+static void
+test_empty_wrapper_widget ()
+{
+ style_manager sm;
+ wrapper_widget w (nullptr);
+ canvas c (w.to_canvas (sm));
+ ASSERT_CANVAS_STREQ (c, false, "");
+}
+
static void
test_vbox_1 ()
{
test_test_widget ();
test_text_widget ();
test_wrapper_widget ();
+ test_empty_wrapper_widget ();
test_vbox_1 ();
test_vbox_2 ();
test_canvas_widget ();
}
canvas::size_t calc_req_size () override
{
- return m_child->get_req_size ();
+ if (m_child)
+ return m_child->get_req_size ();
+ else
+ return canvas::size_t (0,0);
}
void update_child_alloc_rects () override
{
- m_child->set_alloc_rect (get_alloc_rect ());
+ if (m_child)
+ m_child->set_alloc_rect (get_alloc_rect ());
}
void paint_to_canvas (canvas &canvas) override
{
- m_child->paint_to_canvas (canvas);
+ if (m_child)
+ m_child->paint_to_canvas (canvas);
}
private:
std::unique_ptr<widget> m_child;