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.
1. Use regular spaces instead of non-breaking, like English
2. Use en dashes instead of stars, which are more common in French
typography as bullet style
"Rotation Importation 90°" was the only noun group in this part
of the menu.
This replaces it with an infinitive group like the rest of the menu,
which is also easier to understand.
"Step" has plenty of meanings, and the wrong one was used here:
"espacement" roughly means "spacing", which is very confusing for the
"Step dimension" feature, and weird for "Step translation"/"Step rotation".
Instead, I chose to translate it as:
* "Pas-à-pas" for the former, which is a noun for lack of a verb that fully
captures the meaning, which literally translates to "step-by-step".
"Pas-à-pas" is also the common translation of "Step debugging" in
programming.
* "Répétiter par" for the latter, which is a verb (+ adverb) which literally
translates to "Repeat by" and is the most natural way to phrase this.
As a side-effect, I made a key binding consistent with English.
Web: Emscripten port updated to current tools. Add saving of options in local storage.
U Web: Emscripten port updated to current tools. Add saving of options in local storage.
This is the second attempt to distinguish trackpad scrolling that when used
should yield panning from Magic Mouse scrolling that should control zoom.
Since trackpad will begin with a touch prior to the scroll event, but Magic
Mouse not, we can use it to make sure we trigger panning only on a trackpad.
Previous "mac: Don't interpret single-touch scroll events as pan gestures"
that was flawed was reverted which ultimately lead to being unable to zoom using
Magic Mouse.
Makes compiling from the Visual Studio IDE much faster when using the
solution and projects generated by cmake.
For the externals I hijack the `disable_warnings` function.
The sources array is usually at the end of a module.
Maybe nitpicking, but the module name will be used as a folder name, and camelcase for folder names is less common on Linux.
Since 7e08b02de1 comments can be attached to
points.
Now when such a comment is selected the point (entity) it is associated to
will be shown in the text window together with it's coordinates and the
distance (offset) from the point to the comment.
Most of this was already prepared by Whitequark here
afa9e2890e
I just had to to remove the original 12 year old code by jwesthues that
showed "SELECTED: comment text" for comments.
(6750995ef0)
Fixes#1072
Fixes#920#1143
Explanation from @robnee on Feb 7, 2021 in pull request #927
Solvespace uses two timers (generateAllTimer and showTWTimer) to defer tasks
until the event loop processing finishes. This helps coalesce multiple calls
into one. You can call scheduleGenerateAll multiple times while processing UI
messages but only trigger one GenerateAll. scheduleGenerateAll and
scheduleShowTW do their scheuduling by setting timers with durations of zero.
These timers fire (at least on Linux and Windows) some time after all other
events in the message queue have been processed. This works fine when
scheduling either one of these tasks. However, there is no guarantee in what
order the timers will fire (at least on Windows) regardless of which order the
scheduling calls are made. It's pretty easy to demonstrate (on some platforms)
by adding logging to the scheduling calls and timer callbacks.
In many cases TextWindow::Show depends on generateAll happening first. This
causes UI glitches where displays don't update and their contents are stale.
Since this behavior is not deterministic it's easy to imagine how this problem
could make certain bug reports difficult to reproduce and diagnose. #920 is a
good example. It also makes syncing up UI behavior across all platforms a
challenge.
Solving this in the platform domain is tricky. This is PR endeavors to make the
ordering of deferred calls to TextWindow::Show and generateAll deterministic.
It does this by replacing generateAllTimer and showTWTimer with a single
refreshTimer. Calls to scheduleGenerateAll and scheduleShowTW set flags to note
the requested operations and schedule the refreshTimer. A new callback function
SolveSpaceUI::Refresh can then check the flags and ensure that generateAll
happens first. It fixes#920. Moreover, this PR makes it easy to observe and
reproduce this problem reliably and across all platforms by simply reordering
the calls in the Refresh callback.
It's pretty clear that the ordering is important so some solution is needed, if
for no other reason than the sanity of the devs. I think this is a pretty good
solution as it spells out the ordering. If nothing else this PR is helpful in
further investigations.
@ruevs @phkahler I'd like to hear your thoughts.