The autoplacer used ANGLE_HORIZONTAL when computing field bounding boxes
for sizing, regardless of symbol orientation. For 90/270-degree rotated
symbols, GetBoundingBox() applies both the field angle and the symbol
transform, so HORIZONTAL + 90-degree transform = 90-degree net rotation,
swapping width and height. This caused field vertical spacing to be based
on text width instead of text height, producing fields that were too
spread out vertically and sometimes overlapping the symbol body.
The fix computes the display angle once (VERTICAL for 90/270, HORIZONTAL
for 0/180) and uses it consistently for both sizing and final field angle
assignment. With the display angle, the net rotation for 90/270 symbols
is 180 degrees (VERTICAL + 90-degree transform), which preserves native
text dimensions after normalization.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/23032
Commit 7d1f3a2161 fixed field overlap (issue #16538) by always setting
field angle to HORIZONTAL during autoplace. However, it set this angle
permanently, causing fields on rotated symbols to display vertically
instead of horizontally (since the symbol's transform rotates the text).
The fix separates bounding box computation from final angle assignment.
GetBoundingBox() still uses HORIZONTAL angle (correct for sizing), but
the original angle is restored afterward. The final display angle is set
in DoAutoplace(): VERTICAL for 90/270 rotated symbols (counteracting
the symbol transform) and HORIZONTAL for non-rotated symbols.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/22927
The autoplace algorithm was incorrectly setting field text angles for
90/270 degree rotated symbols. It set ANGLE_VERTICAL, but GetBoundingBox()
applies both the field angle AND the symbol transform, resulting in
180-degree effective rotation. This caused incorrect bounding box
dimensions and fields overlapping the symbol body.
The fix sets field text angle to ANGLE_HORIZONTAL for all symbols.
For rotated symbols, the symbol transform alone produces the correct
vertical display orientation.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16538
The field autoplacement algorithm now detects collisions with the
drawing sheet border when determining which side of a symbol to place
fields. When a field box would extend outside the drawable area
(inside the margins), that side is marked as having a collision,
causing the autoplacer to prefer other sides.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19081
Make autoplace in the symbol preview based on the global eeschema
flag instead. (If they have it off, then they had better specify
field positions in the database library.)
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19247
Recommendation is to avoid using the year nomenclature as this
information is already encoded in the git repo. Avoids needing to
repeatly update.
Also updates AUTHORS.txt from current repo with contributor names
Also adds a mode for AUTOADDED fields.
Also fixes a couple of bugs where a manual-level autoplaced
symbol would get reset back to auto-level when autoplaced.
Reduces the need for client code to know it can exploit the
enum -1/+1 properties. ToHAlignment provides an explicit
contract for integral conversion, and also doesn't rely on the
int being exactly -1, 0 or 1 (failure to adhere to which would
be UB).
1) Don't factor in pin names when computing symbol body boundingbox.
2) Grid-snap only in the axis corresponding to the layout side.
3) We only need interline spacing *between* lines, not for each line.
4) Also cleans up the unit checking logic as the unit can't be more
than 0 unless it's a multi-unit symbol.
Fixes https://gitlab.com/kicad/code/kicad/issues/7907
CHANGED: Settings are now stored in versioned sub-directories
ADDED: First-run dialog for migrating settings from a previous version
CHANGED: Settings are now stored as JSON files instead of wxConfig-style INI files
CHANGED: Color settings are now all stored in a separate settings file
CHANGED: The symbol editor and footprint editor now have their own settings files
CHANGED: Color settings are no longer exposed through BOARD object
CHANGED: Page layout editor now uses Eeschema's color scheme
Settings are now managed through a central SETTINGS_MANAGER held by PGM_BASE.
Existing settings will be migrated from the wxConfig format on first run of each application.
Per-application settings are now stored in one class for each application.