From b58bf443ffbb1a746e29ce475e58efd8c1144b12 Mon Sep 17 00:00:00 2001 From: Thomas Geymayer Date: Sat, 14 Jun 2014 13:19:00 +0200 Subject: [PATCH] canvas::Layout: add clear method to remove all items. --- simgear/canvas/layout/BoxLayout.cxx | 7 +++++++ simgear/canvas/layout/BoxLayout.hxx | 1 + simgear/canvas/layout/Layout.cxx | 7 +++++++ simgear/canvas/layout/Layout.hxx | 5 +++++ simgear/canvas/layout/canvas_layout_test.cxx | 6 ++++++ 5 files changed, 26 insertions(+) diff --git a/simgear/canvas/layout/BoxLayout.cxx b/simgear/canvas/layout/BoxLayout.cxx index a981db99..c7140467 100644 --- a/simgear/canvas/layout/BoxLayout.cxx +++ b/simgear/canvas/layout/BoxLayout.cxx @@ -121,6 +121,13 @@ namespace canvas return item; } + //---------------------------------------------------------------------------- + void BoxLayout::clear() + { + _layout_items.clear(); + invalidate(); + } + //---------------------------------------------------------------------------- void BoxLayout::setStretch(size_t index, int stretch) { diff --git a/simgear/canvas/layout/BoxLayout.hxx b/simgear/canvas/layout/BoxLayout.hxx index 4ee16c3c..fc3b4a25 100644 --- a/simgear/canvas/layout/BoxLayout.hxx +++ b/simgear/canvas/layout/BoxLayout.hxx @@ -58,6 +58,7 @@ namespace canvas virtual size_t count() const; virtual LayoutItemRef itemAt(size_t index); virtual LayoutItemRef takeAt(size_t index); + virtual void clear(); /** * Set the stretch factor of the item at position @a index to @a stretch. diff --git a/simgear/canvas/layout/Layout.cxx b/simgear/canvas/layout/Layout.cxx index b7e29c36..ff6994d1 100644 --- a/simgear/canvas/layout/Layout.cxx +++ b/simgear/canvas/layout/Layout.cxx @@ -67,6 +67,13 @@ namespace canvas } } + //---------------------------------------------------------------------------- + void Layout::clear() + { + while( itemAt(0) ) + takeAt(0); + } + //---------------------------------------------------------------------------- void Layout::ItemData::reset() { diff --git a/simgear/canvas/layout/Layout.hxx b/simgear/canvas/layout/Layout.hxx index 37ab1424..6a7fe3a1 100644 --- a/simgear/canvas/layout/Layout.hxx +++ b/simgear/canvas/layout/Layout.hxx @@ -66,6 +66,11 @@ namespace canvas */ void removeItem(const LayoutItemRef& item); + /** + * Remove all items. + */ + virtual void clear(); + protected: enum LayoutFlags { diff --git a/simgear/canvas/layout/canvas_layout_test.cxx b/simgear/canvas/layout/canvas_layout_test.cxx index 42524e85..fc693e44 100644 --- a/simgear/canvas/layout/canvas_layout_test.cxx +++ b/simgear/canvas/layout/canvas_layout_test.cxx @@ -309,6 +309,12 @@ BOOST_AUTO_TEST_CASE( boxlayout_insert_remove ) hbox.removeItem(w2); BOOST_CHECK_EQUAL(hbox.count(), 1); BOOST_CHECK_EQUAL(hbox.itemAt(0), w1); + + hbox.addItem(w2); + BOOST_CHECK_EQUAL(hbox.count(), 2); + + hbox.clear(); + BOOST_CHECK_EQUAL(hbox.count(), 0); } //------------------------------------------------------------------------------ -- 2.39.5