Especially, the BOARD managed by FP editor had is m_project member reinitialized
when creating the 3D viewer, thus creating issues in FP editor, and create
a crash when closing kicad
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20964
This also removes the GROUP/UNGROUP-specific undo actions.
This also fixes a bunch of undo bugs when duplicating
group members, creating pins, etc.
This also fixes some undo bugs when dividing wires etc.
This also fixes some bugs with new sch items not
being created within an entered group.
In modern Windows code WIN32_LEAN_AND_MEAN should be defined.
Without this define windows.h pulls in some legacy headers, notably
winsocks.h. Modern code that cares about winsocks includes winsocks2.h
which conflicts with winsocks.h. Other code that does not care about
winsocks (OpenGL, fontconfig, ...) includes windows.h pulling in legacy
winsocks.h, causing definition conflicts and build errors.
At worst defining WIN32_LEAN_AND_MEAN requires explicitly including some
additional headers on Windows.
Also convert hatched fills to solid for solder masks.
Also give track solder masks their specified
expansion when exporting to STEP.
Also implement solder masks for shapes when
exporting to STEP.
1) add footprint graphics and text to copper
polys when differentiating plated from non-plated
copper
2) simplify adding footprint graphics and text
for contour walls
3) add dimension text and shapes for contour walls
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20111
Glew has the problem that it has to be selected at build time if GLX or
EGL is supported by the library, and this in not encoded in the library
name, nor ABI, nor anything.
Then it's easy to get into the situation that a binary is built but
cannot run because glew supports an API different from the one used by
wxWidgets, or the binary fails to link in the end after all objects are
compiled.
epoxy can support both with the same library avoiding this problem.
epoxy is not initialized explicitly, replaced initialization with
version check where one was not done already.
It seems to be available as vcpkg https://vcpkg.link/ports/libepoxy
There are problems related to GL context switching on Windows which does
not seem to be used in kicad
https://github.com/anholt/libepoxy#known-issues-when-running-on-windows
There is also a problem related to multithreaded rendering on Windows
https://github.com/anholt/libepoxy/pull/265 It's harder to tell if
threading is used for rendering but it does not look like kicad is doing
anything complex enough to warrant using multiple rendering threads.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20630
Fixes https://gitlab.com/kicad/code/kicad/-/issues/12543
Now that we are threading things in different frames, we need to watch
that we are not waiting for a process to complete in one frame while
working in another. To accomplish this, we only wait for our own loop
results
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20572
Also adds migration from older layer numbers to strings.
This may require users to dump their 9.0 settings files
(which will have the wrong layer numbers in them), but
those files are often useless anyway as they'll already
have messed up colours if they were migrated from 8.0.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18709
* Manage the settings using the settings manager for better lifetimes
* Better architect the internals and JSON to make it easier to identify
the various tool types