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
Move showResults() inside the wxWindowUpdateLocker scope to ensure all
tree manipulation (including ExpandAncestors) happens while the window
is frozen. This prevents GTK from rendering stale cached cell data
during partial tree updates.
The issue manifested as text appearing offset by one row in the symbol
chooser tree after filtering, only correcting when the user moused over
items.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18407
The three library adapters (symbol, footprint, design block) each had
their own AsyncLoad() and GetLibraryStatus() implementations that were
nearly identical. This moves both to the base class.
The per-library mutex is removed. Each adapter now uses a single
shared_mutex for its library map. Read operations take shared locks,
write operations take unique locks. This simplifies the locking model
from two levels to one.
Derived classes override a new enumerateLibrary() method to perform
type-specific enumeration. The base class handles threading, status
tracking, and error handling.
Also adds a new WithFootprintsForLibrary() routine that takes a callback
but handles the locking internally so callers don't need to remember
We are maintaining two structures in the lib_tree_model_adapter for
column widths. m_columns (current available) and m_colNameMap. If
there are more in the map than in reality, we get crashes
Fixes https://gitlab.com/kicad/code/kicad/issues/22663
The previous fix only prevented the crash when the design block panel
was hidden. This fixes the same crash when the design block is visible.
It's possible this may cause refresh issues with the library tree model
adapter object.
1) Always be explicit about what the delimiters are
2) If space is a delimiter, we probably want to skip
empty fields (wxTOKEN_STRTOK)
3) If space is not a delimiter, we often need to
trim the resultant tokens
4) Be more lenient about \t\r\n (and when they are
included, include them in the same order)
When the library name and symbol/footprint name both match the filter,
we try to display both but ensure visible can move things to the wrong
place. We need to ensure the filtered list is up to date prior to
moving by ensureVisible
Fixes https://gitlab.com/kicad/code/kicad/-/issues/18000
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
Don't apply pruning to libraries that don't have
any children, since the point of the pruning is to
hide libraries that don't directly match a search
term if they don't have any children that match.
Fix searching for full LIB_IDs that got broken by
the implementation of "AND"
Fix searching for library names alone
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17205
Also fixes a bug where a single symbol library wasn't expanded
due to the presence of the "-- already placed --" and
"-- recently used --" pseudo-libraries.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16074
Also changes the scoring algorithm to start at 0 and then increment
to 1 (the value that tells us to show, but not expand) only if the
search terms and lib filters are empty.