Skip to main content

front end - Why do PopupMenus render inconsistently on Macs?


This has been bugging me for years but because it doesn't effect performance I've never got around to asking. The problem below occurs for me in V8, 9, 10 with OS X 10.8, 10.9 and 10.10. I've tested the same code on Windows over the years and never observed any problems.


Here is a typical example in which a popups display different rendering.


enter image description here


What you will notice is that the rendering of say the first column of popups is consistent with the OS 10.10 however across some of the rows you will notice that the rendering harks back to, from memory, OS 10.6 and below.


As I said above it does not effect performance but it seems like a bug of sorts. Can anyone else 1) reproduce it (by creating say a grid of popups); and 2) know what the cause is and therefore have a possible fix?


Edit


Rendering the code in the comment by @SquareOne with V10.0.2 gives a grid with all popups the same but unfortunately they all render in the old 10.6 format rather than the Yosemite format.


enter image description here



The same with V9 on Yosemite:


enter image description here


Note that in all cases above Mathematica is rendering differently to the defaults for this operating system, just as it did with Mavericks. Here is what the OS popups look like in Yosemite:


enter image description here


Whereas the rendering done by Mathematica harks back to OS X from many years ago.


Edit #2


I've traced this to my default stylesheet. Specifically to the PopupMenu style with an option for FontSize.


Cell[StyleData["PopupMenu"],
some options,
FontSize->11]


With this setting you get a mix of two different renderings (Yosemite and old OS X), and which popups are rendered differently is random.


enter image description here


Setting a font size for BaseStyle in the PopupMenuBox options at the cell level will switch off the problem.


Having said the above the inclusion of a font size in the PopupMenu style was an error because this was intended to control to menu font size and therefore should be in PopupMenuLabel style. Nevertheless the problem now seems to be that Mathematica has shown it is capable of rendering the correct Yosemite renderings (even if it is randomly under strange conditions) but by default is not doing that.


Edit 3


It seems no one here had any ideas about the origin of this problem so I am cross posting at Wolfram Community and hopefully someone from Wolfram will respond.




Comments

Popular posts from this blog

plotting - Plot 4D data with color as 4th dimension

I have a list of 4D data (x position, y position, amplitude, wavelength). I want to plot x, y, and amplitude on a 3D plot and have the color of the points correspond to the wavelength. I have seen many examples using functions to define color but my wavelength cannot be expressed by an analytic function. Is there a simple way to do this? Answer Here a another possible way to visualize 4D data: data = Flatten[Table[{x, y, x^2 + y^2, Sin[x - y]}, {x, -Pi, Pi,Pi/10}, {y,-Pi,Pi, Pi/10}], 1]; You can use the function Point along with VertexColors . Now the points are places using the first three elements and the color is determined by the fourth. In this case I used Hue, but you can use whatever you prefer. Graphics3D[ Point[data[[All, 1 ;; 3]], VertexColors -> Hue /@ data[[All, 4]]], Axes -> True, BoxRatios -> {1, 1, 1/GoldenRatio}]

plotting - Filling between two spheres in SphericalPlot3D

Manipulate[ SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, Mesh -> None, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], {n, 0, 1}] I cant' seem to be able to make a filling between two spheres. I've already tried the obvious Filling -> {1 -> {2}} but Mathematica doesn't seem to like that option. Is there any easy way around this or ... Answer There is no built-in filling in SphericalPlot3D . One option is to use ParametricPlot3D to draw the surfaces between the two shells: Manipulate[ Show[SphericalPlot3D[{1, 2 - n}, {θ, 0, Pi}, {ϕ, 0, 1.5 Pi}, PlotPoints -> 15, PlotRange -> {-2.2, 2.2}], ParametricPlot3D[{ r {Sin[t] Cos[1.5 Pi], Sin[t] Sin[1.5 Pi], Cos[t]}, r {Sin[t] Cos[0 Pi], Sin[t] Sin[0 Pi], Cos[t]}}, {r, 1, 2 - n}, {t, 0, Pi}, PlotStyle -> Yellow, Mesh -> {2, 15}]], {n, 0, 1}]

plotting - Mathematica: 3D plot based on combined 2D graphs

I have several sigmoidal fits to 3 different datasets, with mean fit predictions plus the 95% confidence limits (not symmetrical around the mean) and the actual data. I would now like to show these different 2D plots projected in 3D as in but then using proper perspective. In the link here they give some solutions to combine the plots using isometric perspective, but I would like to use proper 3 point perspective. Any thoughts? Also any way to show the mean points per time point for each series plus or minus the standard error on the mean would be cool too, either using points+vertical bars, or using spheres plus tubes. Below are some test data and the fit function I am using. Note that I am working on a logit(proportion) scale and that the final vertical scale is Log10(percentage). (* some test data *) data = Table[Null, {i, 4}]; data[[1]] = {{1, -5.8}, {2, -5.4}, {3, -0.8}, {4, -0.2}, {5, 4.6}, {1, -6.4}, {2, -5.6}, {3, -0.7}, {4, 0.04}, {5, 1.0}, {1, -6.8}, {2, -4.7}, {3, -1....