If the main window is not high enough allow the default 32 pixel padding
between the menu bar and the toolbar to shrink down to zero.
This allows the main window height to be a minimum of 688 pixels (on
Windows 10) so it is possible to capture 720P video tutorials.
Fixes#1130
Re-creating the edge release for every push
to master creates many superfluous release notifications.
Stop creating those releases and provide users with direct
links to the workflow artifacts instead via the
nightly.link GitHub app (https://github.com/apps/nightly-link).
Fixes#1103
The snaps use git describe to determine
their grade (stable/devel). Fetch the tags to
make this possible.
Point users to the official release in the stable channel in README.md.
* mac: Support for pan, zoom and rotate trackpad gestures
Currently SolveSpace is nearly unusable on a mac if you only have a
buttonless trackpad and not a mouse, because there's no way to pan
(ie right-click-drag) or rotate (ie middle-click-drag). You can zoom,
but only by using two-finger-drag up and down, which ends up getting
interpreted as a scrollwheel event.
This change makes the app behave much more like any other mac app, by
adding 2-finger-drag pan gesture support and pinch-gesture zooming, and
3D rotate using shift-2-finger-drag.
I've also added support for the rotate two-finger trackpad gesture,
which rotates directly around the screen Z axis (rather than in all 3
dimensions) which is actually something I've found myself wanting to do
with the mouse but afaik there's no equivalent way of achieving that.
While I was there, I fixed a bugette in convertMouseEvent which was
incorrectly translating the NSEvent coordinates, and then fixing up the
fact that the sign of the y-coordinate was wrong as a result. Using the
convertPoint API correctly means that fixup is not required because
convertPoint handles it for you.
* Don't do trackpad gestures on anything except the toplevel window
* mac: Fix non-functional scrollbar on text window
Which has not worked quite right since the last major refactor.
* Don't pass right-button drags to the toolbar
This improves the behaviour of trackpad pan/rotate on mac which uses
simulated right-button events.
* Don't pass cmd/ctrl modifier through on trackpad pan/rotate MouseEvents
By no longer always returning NSTerminateCancel in
applicationShouldTerminate.
And implement applicationWillTerminate to ensure the cleanup code in
SolveSpaceUI::Exit() is always called.
By making IsForcedToMesh() always return true for STL link groups,
rather than trying to set forceToMesh=true during the import phase.
STL link groups are now always shown as "model already forced to
triangle mesh" in the details screen, but also (unlike when the model
is forced to mesh by a parent group) show the '∆' icon in the group
list.
Where each entity in the active workplane sketch is projected a
different amount normal to the workplane, to allow inspection and
easier selection of entities that entirely overlap each other and are
thus otherwise difficult to see or select.
The distance between the exploded "layers" can be controlled in the
configuration page. Negative distances mean the layers are projected in
the opposite direction, relative to the workplane normal.
As per Xcode 12.4 you can at least do a warning-free incremental build
with these changes. There are still plenty of warnings in a full build
(mostly from thirdparty components) but with these changes you can at
least develop on mac and see if/when you've added any new warnings when
doing incremental builds.
The default icon for XDG mimetypes is the name of the mime with '/'
replaced with '-', unless the mimetype has an 'icon' attribute (and
solvespace-mime.xml does not have it). So the right icon name for
application/x-solvespace is 'application-x-solvespace', not
'application.x-solvespace'. Hence, properly rename the mimetype icons
in non-flatpak and non-snap installations.
They were added with commit a98cdeeb16
and they were only useful for the old Debian menu system, which was
deprecated almost 6 years ago [1]. As the old Debian menu file is no
more provided in the Debian packaging, the XPM versions of the
application icon can be safely removed, as there are already icons in
the XDG hicolor icon theme.
[1] https://lists.debian.org/debian-devel-announce/2015/09/msg00000.html
- Use `std::vector<T> elemstore` to store elements. Avoids manual memory management.
- Add and index (`std::vector<int> elemidx`) that avoids moving large objects
when adding elements.
- Add a free element list (`std::vector<int> freelist`) that speeds up element removal by
avoiding rearranging the element storage. It also avoids reallocations when adding
elements later.
- Add a proper iterator. It will be used to remove NextAfter - which is a performance bottleneck.