Browse Source

only normalize Canvas3D props when loading from a saved state

dsehnal 4 years ago
parent
commit
a5db6350a2
3 changed files with 6 additions and 6 deletions
  1. 1 3
      src/mol-canvas3d/canvas3d.ts
  2. 1 0
      src/mol-plugin/behavior/static/misc.ts
  3. 4 3
      src/mol-plugin/state.ts

+ 1 - 3
src/mol-canvas3d/canvas3d.ts

@@ -693,12 +693,10 @@ namespace Canvas3D {
             reprCount,
             resized,
             setProps: (properties, doNotRequestDraw = false) => {
-                let props: PartialCanvas3DProps = typeof properties === 'function'
+                const props: PartialCanvas3DProps = typeof properties === 'function'
                     ? produce(getProps(), properties)
                     : properties;
 
-                props = PD.normalizeParams(Canvas3DParams, props, 'children');
-
                 const cameraState: Partial<Camera.Snapshot> = Object.create(null);
                 if (props.camera && props.camera.mode !== undefined && props.camera.mode !== camera.state.mode) {
                     cameraState.mode = props.camera.mode;

+ 1 - 0
src/mol-plugin/behavior/static/misc.ts

@@ -16,6 +16,7 @@ export function registerDefault(ctx: PluginContext) {
 export function Canvas3DSetSettings(ctx: PluginContext) {
     PluginCommands.Canvas3D.ResetSettings.subscribe(ctx, () => {
         ctx.canvas3d?.setProps(DefaultCanvas3DParams);
+        ctx.events.canvas3d.settingsUpdated.next();
     });
 
     PluginCommands.Canvas3D.SetSettings.subscribe(ctx, e => {

+ 4 - 3
src/mol-plugin/state.ts

@@ -8,7 +8,7 @@ import { State, StateTransform, StateTransformer } from '../mol-state';
 import { PluginStateObject as SO } from '../mol-plugin-state/objects';
 import { Camera } from '../mol-canvas3d/camera';
 import { PluginBehavior } from './behavior';
-import { Canvas3DProps } from '../mol-canvas3d/canvas3d';
+import { Canvas3DParams, Canvas3DProps } from '../mol-canvas3d/canvas3d';
 import { PluginCommands } from './commands';
 import { PluginAnimationManager } from '../mol-plugin-state/manager/animation';
 import { ParamDefinition as PD } from '../mol-util/param-definition';
@@ -73,8 +73,9 @@ class PluginState extends PluginComponent {
 
         if (snapshot.behaviour) await this.plugin.runTask(this.behaviors.setSnapshot(snapshot.behaviour));
         if (snapshot.data) await this.plugin.runTask(this.data.setSnapshot(snapshot.data));
-        if (snapshot.canvas3d) {
-            if (snapshot.canvas3d.props) await PluginCommands.Canvas3D.SetSettings(this.plugin, { settings: snapshot.canvas3d.props });
+        if (snapshot.canvas3d?.props) {
+            const settings = PD.normalizeParams(Canvas3DParams, snapshot.canvas3d.props, 'children');
+            await PluginCommands.Canvas3D.SetSettings(this.plugin, { settings });
         }
         if (snapshot.interactivity) {
             if (snapshot.interactivity.props) this.plugin.managers.interactivity.setProps(snapshot.interactivity.props);