From 64442ea04170b805ba91fab7303d9ab1c0dbb39d Mon Sep 17 00:00:00 2001 From: Charles Dang Date: Tue, 15 May 2018 19:03:56 +1100 Subject: [PATCH] GUI2/Canvas: simplify clear_shapes logic (cherry-picked from commit 10e43a6642df0496beda23f891fd5cd334270921) --- src/gui/core/canvas.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/src/gui/core/canvas.cpp b/src/gui/core/canvas.cpp index f82461d3bee..5cabdae706c 100644 --- a/src/gui/core/canvas.cpp +++ b/src/gui/core/canvas.cpp @@ -1497,13 +1497,18 @@ void canvas::parse_cfg(const config& cfg) void canvas::clear_shapes(const bool force) { - auto conditional = [force](const shape_ptr s)->bool { return !s->immutable() && !force; }; + if(force) { + shapes_.clear(); + drawn_shapes_.clear(); + } else { + auto conditional = [](const shape_ptr s)->bool { return !s->immutable(); }; - auto iter = std::remove_if(shapes_.begin(), shapes_.end(), conditional); - shapes_.erase(iter, shapes_.end()); + auto iter = std::remove_if(shapes_.begin(), shapes_.end(), conditional); + shapes_.erase(iter, shapes_.end()); - iter = std::remove_if(drawn_shapes_.begin(), drawn_shapes_.end(), conditional); - drawn_shapes_.erase(iter, drawn_shapes_.end()); + iter = std::remove_if(drawn_shapes_.begin(), drawn_shapes_.end(), conditional); + drawn_shapes_.erase(iter, drawn_shapes_.end()); + } } void canvas::invalidate_cache()