Skip to content
Snippets Groups Projects
Commit 1345a1a8 authored by stefan's avatar stefan
Browse files

Fixed selection when hiding and showing views

git-svn-id: https://dng.biozentrum.unibas.ch/svn/openstructure/trunk@1783 5a81b35b-ba03-0410-adc8-b2c5c5119f08
parent acd13c3d
No related branches found
No related tags found
No related merge requests found
...@@ -559,7 +559,7 @@ void Entity::OnRenderModeChange() ...@@ -559,7 +559,7 @@ void Entity::OnRenderModeChange()
r->AddView(this->GetView()); r->AddView(this->GetView());
for (RendererMap::iterator i=renderer_.begin(), for (RendererMap::iterator i=renderer_.begin(),
e=renderer_.end(); i!=e; ++i) { e=renderer_.end(); i!=e; ++i) {
mol::EntityView rv=i->second->GetEffectiveView(); mol::EntityView rv=i->second->GetFullView();
if (rv.IsValid() && rv.GetAtomCount()>0) { if (rv.IsValid() && rv.GetAtomCount()>0) {
i->second->SetSelection(mol::Intersection(sel_, rv)); i->second->SetSelection(mol::Intersection(sel_, rv));
} }
...@@ -625,7 +625,7 @@ void Entity::SetRenderMode(RenderMode::Type mode, ...@@ -625,7 +625,7 @@ void Entity::SetRenderMode(RenderMode::Type mode,
if (!keep && i->first!=mode) { if (!keep && i->first!=mode) {
renderer->SubstractView(view); renderer->SubstractView(view);
} }
mol::EntityView rv=renderer->GetEffectiveView(); mol::EntityView rv=renderer->GetFullView();
if (rv.IsValid()) { if (rv.IsValid()) {
renderer->SetSelection(mol::Intersection(sel_, rv)); renderer->SetSelection(mol::Intersection(sel_, rv));
} }
...@@ -691,7 +691,7 @@ void Entity::UpdateSelection() ...@@ -691,7 +691,7 @@ void Entity::UpdateSelection()
e=renderer_.end(); i!=e; ++i) { e=renderer_.end(); i!=e; ++i) {
impl::EntityRenderer* renderer=i->second; impl::EntityRenderer* renderer=i->second;
if (renderer->HasDataToRender()) { if (renderer->HasDataToRender()) {
renderer->SetSelection(mol::Intersection(renderer->GetEffectiveView(), sel_)); renderer->SetSelection(mol::Intersection(renderer->GetFullView(), sel_));
renderer->UpdateViews(); renderer->UpdateViews();
} }
} }
......
...@@ -153,10 +153,12 @@ bool EntityRenderer::HasSelection() const ...@@ -153,10 +153,12 @@ bool EntityRenderer::HasSelection() const
void EntityRenderer::SetSelection(const mol::EntityView& sel) void EntityRenderer::SetSelection(const mol::EntityView& sel)
{ {
if(sel.IsValid()){
full_sel_=sel; full_sel_=sel;
sel_=full_sel_; sel_=(hidden_view_.IsValid())? mol::Difference(full_sel_,hidden_view_) : full_sel_;
sel_state_=DIRTY_VIEW|DIRTY_VA; sel_state_=DIRTY_VIEW|DIRTY_VA;
} }
}
void EntityRenderer::SetVisible(const mol::EntityView& view, bool visible) void EntityRenderer::SetVisible(const mol::EntityView& view, bool visible)
{ {
...@@ -169,7 +171,7 @@ void EntityRenderer::SetVisible(const mol::EntityView& view, bool visible) ...@@ -169,7 +171,7 @@ void EntityRenderer::SetVisible(const mol::EntityView& view, bool visible)
hidden_view_=hidden_view_.IsValid() ? Union(hidden_view_, view) : view.Copy(); hidden_view_=hidden_view_.IsValid() ? Union(hidden_view_, view) : view.Copy();
} }
sel_=(full_sel_.IsValid()&& hidden_view_.IsValid())? mol::Difference(full_sel_,hidden_view_) : sel_; sel_= hidden_view_.IsValid() ? mol::Difference(full_sel_,hidden_view_) : sel_;
if(full_view_.IsValid()){ if(full_view_.IsValid()){
effective_view_=hidden_view_.IsValid() ? mol::Difference(full_view_,hidden_view_): full_view_; effective_view_=hidden_view_.IsValid() ? mol::Difference(full_view_,hidden_view_): full_view_;
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please to comment