From b25aa8735d6bfc07384c372cbc7c0ce18af316fd Mon Sep 17 00:00:00 2001 From: Rudolf Polzer Date: Fri, 19 Aug 2011 15:53:30 +0200 Subject: [PATCH] Revert "fix invert selection logic", as that fix made other cases worse This reverts commit 4cd61dfa7d9363082c8161823634f497b82d8f98. --- radiant/select.cpp | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/radiant/select.cpp b/radiant/select.cpp index f4e8b7f9..c232da20 100644 --- a/radiant/select.cpp +++ b/radiant/select.cpp @@ -290,16 +290,13 @@ void Select_Delete (void) class InvertSelectionWalker : public scene::Graph::Walker { SelectionSystem::EMode m_mode; + mutable Selectable* m_selectable; public: InvertSelectionWalker(SelectionSystem::EMode mode) - : m_mode(mode) + : m_mode(mode), m_selectable(0) { } bool pre(const scene::Path& path, scene::Instance& instance) const - { - return true; - } - void post(const scene::Path& path, scene::Instance& instance) const { Selectable* selectable = Instance_getSelectable(instance); if(selectable) @@ -308,17 +305,26 @@ public: { case SelectionSystem::eEntity: if(Node_isEntity(path.top()) != 0) - if(path.top().get().visible()) - selectable->setSelected(!selectable->isSelected()); + { + m_selectable = path.top().get().visible() ? selectable : 0; + } break; case SelectionSystem::ePrimitive: - if(path.top().get().visible()) - selectable->setSelected(!selectable->isSelected()); + m_selectable = path.top().get().visible() ? selectable : 0; break; case SelectionSystem::eComponent: break; } } + return true; + } + void post(const scene::Path& path, scene::Instance& instance) const + { + if(m_selectable != 0) + { + m_selectable->setSelected(!m_selectable->isSelected()); + m_selectable = 0; + } } }; -- 2.39.2