diff options
Diffstat (limited to 'gcc/text-art')
-rw-r--r-- | gcc/text-art/widget.cc | 10 | ||||
-rw-r--r-- | gcc/text-art/widget.h | 11 |
2 files changed, 18 insertions, 3 deletions
diff --git a/gcc/text-art/widget.cc b/gcc/text-art/widget.cc index 3c68018..5d3e517 100644 --- a/gcc/text-art/widget.cc +++ b/gcc/text-art/widget.cc @@ -200,6 +200,15 @@ test_wrapper_widget () } 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 () { style_manager sm; @@ -263,6 +272,7 @@ text_art_widget_cc_tests () test_test_widget (); test_text_widget (); test_wrapper_widget (); + test_empty_wrapper_widget (); test_vbox_1 (); test_vbox_2 (); test_canvas_widget (); diff --git a/gcc/text-art/widget.h b/gcc/text-art/widget.h index 55655eb..ab7b1d3 100644 --- a/gcc/text-art/widget.h +++ b/gcc/text-art/widget.h @@ -146,15 +146,20 @@ class wrapper_widget : public 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; |