From: Rudolf Polzer Date: Fri, 19 Aug 2011 13:53:30 +0000 (+0200) Subject: Revert "fix invert selection logic", as that fix made other cases worse X-Git-Tag: xonotic-v0.5.0 X-Git-Url: https://git.rm.cloudns.org/?a=commitdiff_plain;h=be90cb4f67c3606d0a18aa68195c4e03753af5e2;p=xonotic%2Fnetradiant.git Revert "fix invert selection logic", as that fix made other cases worse This reverts commit 4cd61dfa7d9363082c8161823634f497b82d8f98. --- 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; + } } };