# ControlsRendering and operating systems

Controls, such as those appearing in Manipulate constructs, are by default rendered depending on the operating system. Wrapping everything in Style[..., ControlsRendering->"Generic"] makes sure that the controls' appearance is independent of the operating system (right?).

My question now is split into three parts:

1. Does the rendering depend on the version of Mathematica es well? Specifically, is there a difference between versions 7, 8 and 9?

2. Is there a way to estimate how the controls will be rendered for another operating system? I.e. can I get a rough idea (I'm using Windows 7) how my Manipulate will look like on a machine with, e.g., Mac OS X 10.7? It would be enough for me to find out if any of the sizes of things like Slider2D or SetterBar objects change drastically. Does the ImageSize option for Slider2D ensure a consistent size even on different operating systems?

3. Can one define a function that makes sure that the default rendering is used on machines with windows, and the "Generic" style is used for non-Windows computers?

-

FileNameJoin[{$InstallationDirectory, "SystemFiles", "FrontEnd", "TextResources", "Controls.tr"}]  So if you have V7, 8, 9 make copies of that file and then cut and paste the code into a notebook and evaluate and see what the graphics look like. For #2. I think the answer for #1 covers #2 as well. For #3. @Szabolcs has answered this. -  So the things accessible with FrontEndResource are all in the .tr files? – Szabolcs Dec 18 '12 at 20:36 Yes -- lots of interesting things in there, but be careful making changes. I'm sure Wolfram would say never make changes. – Mike Honeychurch Dec 18 '12 at 20:39 For 1. and 2., all I can say is that I did not notice any change (the generic style is used when exporting to Flash or PDF) and that I don't think you can find out what a control will look like without trying it on a different OS. For 3., you can use ControlsRendering -> Dynamic@If[$OperatingSystem === "Windows", Automatic, "Generic"]

The Dynamic will make sure that this will not be evaluated only once when you create the control, but will stay "inlined" in the notebook and will be re-run every time you open it.
(To avoid confusion, note that the syntax option -> Dynamic[...] will only work in a few places, and only in expressions which are handled by the front end, such as graphics, styling and controls. It won't work in a kernel function like FindRoot which is executed/*evaluated* as opposed to being just displayed like Style is.)