Implementation: doToggleButton(qualityIndex) is in jcontrol.js toggleIsDown[slabIndex] ARRAY NOT FUNCTION is state of buttons in all control panels for that index. (There is toggleQuality() but it is only in EDM.) ------------------- WHY does the quality button take a long time on a large molecule like 1g3i (45K atoms) but antialiasdisplay is instantaneous? Initial quality is a preference (v 3.5). Default quality is up/down in controls.js, but that only defines toggleIsDown[qualityIndex], it does not set antialiasdisplay. controls.js: makeToggleButton("qualityOnSpt", "qualityOffSpt", Quality_txt, "down", "", controls.js: QualityTT_txt, cptab); FG 3.1: Changed default to down, but if > allAtomsM1C1Count > qualityMaxAtoms (33000) in doPostLoadActions() in top.js: if toggleIsDown[qualityIndex] doToggleButton(qualityIndex) BUT the toggleIsDown is false at that point. And neither doToggleButton nor setButtonState() work in doPostLoadActions() -- ??? Spin is slower for larger molecules. This was corrected when allAtomM1C1Count > qualityMaxAtoms, quality is turned off at outset. Before FG3.1, 'set spinfps 30' in V1 scripts.js. Changing spinfps to 10 sped up large molecules in high quality, so set spin y 5 remained in effect. doPostLoadActions() is called in msgcall.js at the end of processPDBHeader() is called in jmolMessageCallback() BUT doToggleButton FAILS in doPostLoadActions where in fact toggleIsDown[] is FALSE (???) even though at alert time the button is down! STILL setButtonState works in doPostLoadActions, so I decided to set the antialias conditionally on {model=1}.count in the V1 script (at Jmol level).