This fixes#1320. The root cause for the avalanche of
messages is due to how the refresh timer system calls GenerateAll. When
GenerateAll is called by Refresh, if a Message occurs, that Message will
block GenerateAll. It _doesn't_ block subsequent calls from the timer to
Refresh (presumably from a separate thread). Because the
"scheduledGenerateAll" flag is not cleared until after the generation is
unblocked, each following refresh triggers another call to GenerateAll.
By reversing the flag clear and call, it breaks the cycle. I don't think
this matters for scheduledShowTW, but I updated it as well.
SS rotates the model when middle button dragging while some users expect
this operation to rotate the camera where left-right and up-down directions are
reversed instead. This adds that option.
Make the `TriStateButton` class "universal" and use it in place of the
`OccludedLinesButton` class which is now removed.
Fix the tool-tips on the constraint button to show what will come instead
of what is - just like the the occluded lines button. Also change the
text of the tool-tips wording to be more clear and consistent with other
buttons.
Small stylistic and code formatting changes.
Afetr the `GetDevicePixelRatio` function was fixed to return `double`
`useWorkaround_devicePixelRatio` is not needed any more so remove it.
See the discussion in #1310 pull request for details.
The fuction GetDevicePixelRatio now returns a `double` instead of an `int`.
This should allow the scaling of the GUI on devices where the pixel ratio
is non integer to work properly. For example a monitor on Windows where the
DPI is not a multiple of 96. It may help with the Web Emscripten port on
tablets and phones as well.
In addition on Windows the mouse wheel delta calculation is fixed.
Prior to this commit, the "Nearest Isometric" GUI command searched all
24 possible isometric views. When using turntable navigation, this
could result in the z-axis no longer being oriented vertically. This
commit restricts the views being searched while in turntable
navigation mode to those that follow this restriction.