diff --git a/CHANGELOG.md b/CHANGELOG.md index 9bf6eb14b0d45a11140d6e6fcf46c8317684c3be..8cb790055eabb5af292085a5f264a99549223e9a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,8 @@ Note that since we don't clearly distinguish between a public and private interf ## [Unreleased] +- Fix issues with marking camera/handle helper (#433) + ## [v3.8.0] - 2022-04-30 - Add support for outlines around transparent objects diff --git a/src/mol-canvas3d/canvas3d.ts b/src/mol-canvas3d/canvas3d.ts index bc12b2297bca19372c4c5e2b1c9dc747305f0de2..baeb626365a1f892be15339d418b24432a4ebd26 100644 --- a/src/mol-canvas3d/canvas3d.ts +++ b/src/mol-canvas3d/canvas3d.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2018-2021 mol* contributors, licensed under MIT, See LICENSE file for more info. + * Copyright (c) 2018-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> * @author David Sehnal <david.sehnal@gmail.com> @@ -372,12 +372,12 @@ namespace Canvas3D { const { repr, loci } = reprLoci; let changed = false; if (repr) { - changed = repr.mark(loci, action); + changed = repr.mark(loci, action) || changed; } else { - changed = helper.handle.mark(loci, action); - changed = helper.camera.mark(loci, action) || changed; reprRenderObjects.forEach((_, _repr) => { changed = _repr.mark(loci, action) || changed; }); } + changed = helper.handle.mark(loci, action) || changed; + changed = helper.camera.mark(loci, action) || changed; return changed; } diff --git a/src/mol-canvas3d/helper/camera-helper.ts b/src/mol-canvas3d/helper/camera-helper.ts index 16a10e084dc3c13859d5a824b91039e0db1fa82a..4d26b81cef78d05e20a8869701220a3e08115c53 100644 --- a/src/mol-canvas3d/helper/camera-helper.ts +++ b/src/mol-canvas3d/helper/camera-helper.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2020-2021 mol* contributors, licensed under MIT, See LICENSE file for more info. + * Copyright (c) 2020-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ @@ -17,7 +17,7 @@ import { WebGLContext } from '../../mol-gl/webgl/context'; import { GraphicsRenderVariantsBlended } from '../../mol-gl/webgl/render-item'; import { Sphere3D } from '../../mol-math/geometry'; import { Mat4, Vec3 } from '../../mol-math/linear-algebra'; -import { DataLoci, EmptyLoci, Loci } from '../../mol-model/loci'; +import { DataLoci, EmptyLoci, isEveryLoci, Loci } from '../../mol-model/loci'; import { Shape } from '../../mol-model/shape'; import { Visual } from '../../mol-repr/visual'; import { ColorNames } from '../../mol-util/color/names'; @@ -113,8 +113,10 @@ export class CameraHelper { mark(loci: Loci, action: MarkerAction) { if (!MarkerActions.is(MarkerActions.Highlighting, action)) return false; - if (!isCameraAxesLoci(loci)) return false; - if (loci.data !== this) return false; + if (!isEveryLoci(loci)) { + if (!isCameraAxesLoci(loci)) return false; + if (loci.data !== this) return false; + } return Visual.mark(this.renderObject, loci, action, this.eachGroup); } diff --git a/src/mol-canvas3d/helper/handle-helper.ts b/src/mol-canvas3d/helper/handle-helper.ts index 8444997734ff758b4eaba48b1ab89ce94c671989..367663273ec8f3e72e020e6fec2e0ccc9176858e 100644 --- a/src/mol-canvas3d/helper/handle-helper.ts +++ b/src/mol-canvas3d/helper/handle-helper.ts @@ -1,5 +1,5 @@ /** - * Copyright (c) 2020 mol* contributors, licensed under MIT, See LICENSE file for more info. + * Copyright (c) 2020-2022 mol* contributors, licensed under MIT, See LICENSE file for more info. * * @author Alexander Rose <alexander.rose@weirdbyte.de> */ @@ -20,7 +20,7 @@ import produce from 'immer'; import { Shape } from '../../mol-model/shape'; import { PickingId } from '../../mol-geo/geometry/picking'; import { Camera } from '../camera'; -import { DataLoci, EmptyLoci, Loci } from '../../mol-model/loci'; +import { DataLoci, EmptyLoci, isEveryLoci, Loci } from '../../mol-model/loci'; import { MarkerAction, MarkerActions } from '../../mol-util/marker-action'; import { Visual } from '../../mol-repr/visual'; import { Interval } from '../../mol-data/int'; @@ -121,8 +121,10 @@ export class HandleHelper { mark(loci: Loci, action: MarkerAction) { if (!MarkerActions.is(MarkerActions.Highlighting, action)) return false; - if (!isHandleLoci(loci)) return false; - if (loci.data !== this) return false; + if (!isEveryLoci(loci)) { + if (!isHandleLoci(loci)) return false; + if (loci.data !== this) return false; + } return Visual.mark(this.renderObject, loci, action, this.eachGroup); }