Re: Manipulate evaluates repeatedly - how do i stop it

*To*: mathgroup at smc.vnet.net*Subject*: [mg91579] Re: [mg91554] Manipulate evaluates repeatedly - how do i stop it*From*: John Fultz <jfultz at wolfram.com>*Date*: Thu, 28 Aug 2008 03:16:46 -0400 (EDT)*Reply-to*: jfultz at wolfram.com

On Wed, 27 Aug 2008 06:42:08 -0400 (EDT), robert prince-wright wrote: > Does anyone know how to stop two Manipulate objects from appearing to re- > evaluate when they are both visble in a Notebook window? > > I have created a two Manipulate objects that display interactive > graphics. Each one is contained in separate output cells which means, in > principle, the variables used inside the Manipulates are Localized. The > names of the sliders are the same in each Manipulate (but that shouldn't > matter?). > > When one Manipulate is visible the RHS Bracket around the cell shows the > normal state for a cell that has been evaluated, however, when you scroll > and both are visible in the notebook window the cell brackets start to > flash with double lines and yellow suggesting the cell is re-evaluating. > > Any ideas on how to stop this? > > Robert Your assumption is not true. Manipulate, at most, localizes only those variables which are attached to controls. Here is a trivial example which recreates the conditions you describe... Manipulate[x = 1; {b, x}, {b, 0, 5}] Manipulate[x = 2; {c, x}, {c, 0, 5}] If you want to localize other variables, you'll have to do this by hand. You could do this by wrapping the Manipulate with a DynamicModule[]. In the above trivial example, it might look like... DynamicModule[{x}, Manipulate[x = 1; {b, x}, {b, 0, 5}]] DynamicModule[{x}, Manipulate[x = 2; {c, x}, {c, 0, 5}]] Of course, this will not inherit the value of x from the outside. If you want to use the value of x at the moment of the Shift+Enter evaluation, you can do... DynamicModule[{x=x}, ...] Sincerely, John Fultz jfultz at wolfram.com User Interface Group Wolfram Research, Inc.