From 3f5fa6b6cb1500af7be154fa51dda0d8829cb59d Mon Sep 17 00:00:00 2001 From: rachytski Date: Wed, 30 May 2012 18:31:37 +0400 Subject: [PATCH] correctly updating elements in Controller::SetVisualScale --- geometry/tree4d.hpp | 10 +++------- gui/controller.cpp | 13 ++++++++++++- gui/element.cpp | 1 + 3 files changed, 16 insertions(+), 8 deletions(-) diff --git a/geometry/tree4d.hpp b/geometry/tree4d.hpp index c2e64a2e15..8e9c66de15 100644 --- a/geometry/tree4d.hpp +++ b/geometry/tree4d.hpp @@ -7,7 +7,6 @@ #include "../std/kdtree.hpp" - namespace m4 { template @@ -45,11 +44,7 @@ namespace m4 bool operator ==(value_t const & r) const { - return ((m_val == r.m_val) - && (m_pts[0] == r.m_pts[0]) - && (m_pts[1] == r.m_pts[1]) - && (m_pts[2] == r.m_pts[2]) - && (m_pts[3] == r.m_pts[3])); + return (m_val == r.m_val); } double operator[](size_t i) const { return m_pts[i]; } @@ -163,7 +158,8 @@ namespace m4 void Erase(T const & obj) { - m_tree.erase_exact(value_t(obj, Traits::LimitRect(obj))); + value_t val(obj, Traits::LimitRect(obj)); + m_tree.erase_exact(val); } template diff --git a/gui/controller.cpp b/gui/controller.cpp index d06a17d7f6..00f5d7f2bc 100644 --- a/gui/controller.cpp +++ b/gui/controller.cpp @@ -131,7 +131,18 @@ namespace gui void Controller::SetVisualScale(double val) { m_VisualScale = val; - m_Overlay.forEach(bind(&yg::OverlayElement::setIsDirtyRect, _1, true)); + vector > v; + m_Overlay.forEach(MakeBackInsertFunctor(v)); + + m_Overlay.clear(); + + for (vector >::const_iterator it = v.begin(); + it != v.end(); + ++it) + { + (*it)->setIsDirtyRect(true); + m_Overlay.processOverlayElement(*it); + } } void Controller::DrawFrame(yg::gl::Screen * screen) diff --git a/gui/element.cpp b/gui/element.cpp index 5326613a67..501d5e5c95 100644 --- a/gui/element.cpp +++ b/gui/element.cpp @@ -65,6 +65,7 @@ namespace gui shared_ptr e = m_controller->FindElement(this); Controller * controller = m_controller; controller->RemoveElement(e); + m_controller = controller; OverlayElement::setPivot(pv); controller->AddElement(e); }