FreeBSD uses libspnav, just like a Linux does, so all the
conditional code addressing the spnav APIs should be used
on FreeBSD, too.
Unfortunately, the logic was not consistent in all places:
sometimes we had "#ifdef", sometimes "#if defined" and
sometimes it was negated as "#ifndef". To make the intention
clearer across both Linux and FreeBSD, I unified all places
to a "#if defined(__linux__) || defined(__FreeBSD__)".
If we get another OS latching onto the same logic, we should
introduce a simple flag for this, but for only two OSes I
decided against adding central logic for this.
Remove wxASSERT_MSG for null D_CODE in drawFlashedShape. The null
guard and early return already handles this case correctly. Malformed
gerber files can have items without a valid aperture code.
Fixes KICAD-1089
Break the most expensive header include chains that contaminate the
largest number of translation units
New lightweight headers for extractdded types:
font_metrics.h, mouse_drag_action.h, board_project_settings_params.h,
common_settings_internals.h, wx_infobar_message_type.h,
zone_layer_properties_grid.h
When XOR mode is enabled, the last visible layer must
use TARGET_NONCACHED instead of the configured target.
This ensures the layer participates in XOR compositing
before cached items are flushed at frame end.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22889
UpdateXORLayers() tracks the last visible layer and disables XOR diff
for it to prevent incorrect rendering onto the background. When layer
visibility was changed via SetVisibleLayers(), UpdateXORLayers() was
not called, causing the XOR state to become stale.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22889
On GTK, wxFileDialog defaults to local_only mode which hides GVFS-mounted
filesystems like Google Drive, SMB shares, and external drives mounted
through GVFS. This adds a platform-specific function that disables
local_only mode to show these network/virtual filesystems.
Apply AllowNetworkFileSystems to all file dialogs across KiCad
to ensure directories on network filesystems are visible when
browsing for files.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14372
We don't need a full repaint for items when selected, just update
colors. Selected mode doesn't require hiding the existing items, we
just need to repaint them in a new color. Then we can use the cached
elements
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22591
Previously, a too small size was used, because a wxStaticText was not initialized
when the panel best size was computed.
It is now initialized in the CTOR, before sizes are computed, and is taken in account.
This is an issue visible only when using a locale using ',' as float separator.
In code we are using wxString::ToCDouble(). It should accept only '.' as float
separator and see ',' as a separator between words.
Looks like wxString::ToCDouble() accepts both '.' and ',' as float separator
(at least on wxWidgets 3.2.6)
Using the new wx3.3 routines to serialize the state of our AUI elements,
we store them using JSON in the preferences for each window
I have left the SavePerspective in place for now to see how legacy
(mostly *nix) builds handle this and provide a smooth transition to 3.3
Fixes https://gitlab.com/kicad/code/kicad/-/issues/2381
Provides an update action to refresh the icon display when the user
changes the angle mode using a hotkey. Also unifies the angle modes
between schematic, pcb and library editors
Sometimes, you don't want those 45° corners in your nice, clean zones.
This adds an additional mode that can be selected, cycling through
free-angle, 45° angle and 90° angle constraints
After forcing the locale-specific read/writes out of our IO, we can
remove the global LOCALE_IO calls in many places.
Still to do: exporters, pcm, specctra, settings, drawing sheets,
plotters