Changeset 30b134 for src/UIElements


Ignore:
Timestamp:
Apr 25, 2016, 7:06:10 AM (9 years ago)
Author:
Frederik Heber <heber@…>
Branches:
Action_Thermostats, Add_AtomRandomPerturbation, Add_FitFragmentPartialChargesAction, Add_RotateAroundBondAction, Add_SelectAtomByNameAction, Added_ParseSaveFragmentResults, AddingActions_SaveParseParticleParameters, Adding_Graph_to_ChangeBondActions, Adding_MD_integration_tests, Adding_ParticleName_to_Atom, Adding_StructOpt_integration_tests, AtomFragments, Automaking_mpqc_open, AutomationFragmentation_failures, Candidate_v1.5.4, Candidate_v1.6.0, Candidate_v1.6.1, ChangeBugEmailaddress, ChangingTestPorts, ChemicalSpaceEvaluator, CombiningParticlePotentialParsing, Combining_Subpackages, Debian_Package_split, Debian_package_split_molecuildergui_only, Disabling_MemDebug, Docu_Python_wait, EmpiricalPotential_contain_HomologyGraph, EmpiricalPotential_contain_HomologyGraph_documentation, Enable_parallel_make_install, Enhance_userguide, Enhanced_StructuralOptimization, Enhanced_StructuralOptimization_continued, Example_ManyWaysToTranslateAtom, Exclude_Hydrogens_annealWithBondGraph, FitPartialCharges_GlobalError, Fix_BoundInBox_CenterInBox_MoleculeActions, Fix_ChargeSampling_PBC, Fix_ChronosMutex, Fix_FitPartialCharges, Fix_FitPotential_needs_atomicnumbers, Fix_ForceAnnealing, Fix_IndependentFragmentGrids, Fix_ParseParticles, Fix_ParseParticles_split_forward_backward_Actions, Fix_PopActions, Fix_QtFragmentList_sorted_selection, Fix_Restrictedkeyset_FragmentMolecule, Fix_StatusMsg, Fix_StepWorldTime_single_argument, Fix_Verbose_Codepatterns, Fix_fitting_potentials, Fixes, ForceAnnealing_goodresults, ForceAnnealing_oldresults, ForceAnnealing_tocheck, ForceAnnealing_with_BondGraph, ForceAnnealing_with_BondGraph_continued, ForceAnnealing_with_BondGraph_continued_betteresults, ForceAnnealing_with_BondGraph_contraction-expansion, FragmentAction_writes_AtomFragments, FragmentMolecule_checks_bonddegrees, GeometryObjects, Gui_Fixes, Gui_displays_atomic_force_velocity, ImplicitCharges, IndependentFragmentGrids, IndependentFragmentGrids_IndividualZeroInstances, IndependentFragmentGrids_IntegrationTest, IndependentFragmentGrids_Sole_NN_Calculation, JobMarket_RobustOnKillsSegFaults, JobMarket_StableWorkerPool, JobMarket_unresolvable_hostname_fix, MoreRobust_FragmentAutomation, ODR_violation_mpqc_open, PartialCharges_OrthogonalSummation, PdbParser_setsAtomName, PythonUI_with_named_parameters, QtGui_reactivate_TimeChanged_changes, Recreated_GuiChecks, Rewrite_FitPartialCharges, RotateToPrincipalAxisSystem_UndoRedo, SaturateAtoms_findBestMatching, SaturateAtoms_singleDegree, StoppableMakroAction, Subpackage_CodePatterns, Subpackage_JobMarket, Subpackage_LinearAlgebra, Subpackage_levmar, Subpackage_mpqc_open, Subpackage_vmg, Switchable_LogView, ThirdParty_MPQC_rebuilt_buildsystem, TrajectoryDependenant_MaxOrder, TremoloParser_IncreasedPrecision, TremoloParser_MultipleTimesteps, TremoloParser_setsAtomName, Ubuntu_1604_changes, stable
Children:
ffa69c
Parents:
67c4ea
git-author:
Frederik Heber <heber@…> (04/22/16 08:50:56)
git-committer:
Frederik Heber <heber@…> (04/25/16 07:06:10)
Message:

FIX: GLWorldScene::removeBond() needs to check whether molecule changed already.

  • there are two possibilities for bonds to be removed: Either the molecule is removed (with its atoms) and this one we got so far. Or the bond is simply removed (because auf adjacency recreation) and this we did not check so far.
  • If the simply the bond is removed, then we receive removeBond() but no moleculeChanged() signals. Hence, the QtObservedBond is never removed. We need to check in removeBonds() whether the associated molecules are not NULL and then reset the parent entries ourselves.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/UIElements/Views/Qt4/Qt3D/GLWorldScene.cpp

    r67c4ea r30b134  
    486486  LOG(3, "INFO: GLWorldScene::removedBond() - got bondRemoved signal from board for id " << _bondid);
    487487
     488  // check current state of associated molecules: We won't receive any
     489  // moleculeChanged() here anymore, as this QtObservedBond is already
     490  // disconnected from its bond object
     491  {
     492    const ObservedValueIndexLookup_t::const_iterator objiter = ObservedBondIndexLookup.find(_bondid);
     493    ASSERT( objiter != ObservedBondIndexLookup.end(),
     494        "GLWorldScene::removeBond() - bond's index "+toString(_bondid)
     495        +" to be removed not stored yet?");
     496    QObject *obj = objiter->second;
     497    const ObservedBonds_t::const_iterator observediter = ObservedBonds.find(obj);
     498    ASSERT( observediter != ObservedBonds.end(),
     499        "GLWorldScene::removeBond() - bond "+toString(_bondid)
     500        +" to be removed not stored yet??");
     501    const QtObservedBond::ptr &_bond = observediter->second;
     502    if (_bond->getLeftMoleculeIndex() != (moleculeId_t)-1) {
     503      BondNodeParentMaps[0].left.erase(_bondid);
     504      BondNodeParentMaps[0].left.insert( std::make_pair( _bondid, (ObservedValue_Index_t)NULL) );
     505      resetParent(getBondInScene(_bondid, GLMoleculeObject_bond::left), NULL);
     506    }
     507    if (_bond->getRightMoleculeIndex() != (moleculeId_t)-1) {
     508      BondNodeParentMaps[1].left.erase(_bondid);
     509      BondNodeParentMaps[1].left.insert( std::make_pair( _bondid, (ObservedValue_Index_t)NULL) );
     510      resetParent(getBondInScene(_bondid, GLMoleculeObject_bond::right), NULL);
     511    }
     512  }
     513
    488514  ASSERT( ToBeRemovedNodes.find(_bondid) == ToBeRemovedNodes.end(),
    489515      "GLWorldScene::removeBond() - bondRemoved for "+toString(_bondid)+" obtained twice?");
Note: See TracChangeset for help on using the changeset viewer.