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()
r->AddView(this->GetView());
for (RendererMap::iterator i=renderer_.begin(),
e=renderer_.end(); i!=e; ++i) {
mol::EntityView rv=i->second->GetEffectiveView();
mol::EntityView rv=i->second->GetFullView();
if (rv.IsValid() && rv.GetAtomCount()>0) {
i->second->SetSelection(mol::Intersection(sel_, rv));
}
......@@ -625,7 +625,7 @@ void Entity::SetRenderMode(RenderMode::Type mode,
if (!keep && i->first!=mode) {
renderer->SubstractView(view);
}
mol::EntityView rv=renderer->GetEffectiveView();
mol::EntityView rv=renderer->GetFullView();
if (rv.IsValid()) {
renderer->SetSelection(mol::Intersection(sel_, rv));
}
......@@ -691,7 +691,7 @@ void Entity::UpdateSelection()
e=renderer_.end(); i!=e; ++i) {
impl::EntityRenderer* renderer=i->second;
if (renderer->HasDataToRender()) {
renderer->SetSelection(mol::Intersection(renderer->GetEffectiveView(), sel_));
renderer->SetSelection(mol::Intersection(renderer->GetFullView(), sel_));
renderer->UpdateViews();
}
}
......
......@@ -153,9 +153,11 @@ bool EntityRenderer::HasSelection() const
void EntityRenderer::SetSelection(const mol::EntityView& sel)
{
full_sel_=sel;
sel_=full_sel_;
sel_state_=DIRTY_VIEW|DIRTY_VA;
if(sel.IsValid()){
full_sel_=sel;
sel_=(hidden_view_.IsValid())? mol::Difference(full_sel_,hidden_view_) : full_sel_;
sel_state_=DIRTY_VIEW|DIRTY_VA;
}
}
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();
}
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()){
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 register or to comment