Commit 73c229714 was a bit of a sledgehammer for the associated problem
of degenerate points. This commit replaces that one by only performing
additional simplification of the zone polygons on those polygons that
fail our initial triangulation attempt.
(cherry picked from commit 3ebba6cbe1)
Replaces Poly2Tri with updated code to process polygons faster and more
robustly. Notably, we can now handle overlapping holes in the polygons,
allowing us to cache the triangulation of complex boards
(cherry picked from commit a6325aab29)
The previous clearance values were equivalent to the default copper
clearance, which could cause issues for users who didn't adjust the
values and had alignment errors at the board house. New values default
to typical dry film minimums.
When expanding the drag item to allow corners, we accidentally picked up
other items in the list. This limits the items that can be dragged to
only those that are explicitly in the draggable list.
A side effect of this commit is that when converting from move to drag
(with tab), items not in the draggable list will be left in place.
Fixes: lp:1787966
* https://bugs.launchpad.net/kicad/+bug/1787966
Invalid graphical items that cannot be created in pcbnew may still be
created by external tools. This synchronizes the pcbnew view display
with the gerber output and 3d viewer line widths for these types of
lines. Only filled polygons are permitted 0-width lines.
Fixes: lp:1790534
* https://bugs.launchpad.net/kicad/+bug/1790534
This reverts the previous work-around 7d62f14dd for the RTree splitting
degeneracy that was placed prior to v5. It appears not to have worked
for all systems. In its place, we use doubles instead of floats to
calculate the bounding box when filling the RTree. This keeps maximum
volume items from overlapping with the system boundary in test cases.
(cherry-picked from 539ca5aa3)
When parsing component names, we need to account for the possibility of
illegal characters (e.g. "/", ":") in the names from v4 libraries. They
are fixed internally by the cache parser but if we don't fix them
in the rescue routine, the symbol won't match it's cache name.
This standardizes all schematic illegal character routines into LIB_ID
Fixes: lp:1774774
* https://bugs.launchpad.net/kicad/+bug/1774774
When setting the maximum represented box, std::numerical_limits::min
returns the most negative number only for integers. For floating point,
it returns the smallest positive number. std::numerical_limits::lowest
is the same as min for integers but returns the most negative number for
floating point as well.
During the symbol library table implementation, the legal character
tests for the footprint library table were changed and the forward
slash '/' character became illegal. This change broke editing some
users footprint library tables that already had '/' in library table
nicknames. This change split the library nickname and library item
name illegal character tests.
When removing items, we perform a two-pass removal, checking first
for the cached rectangle collision. Then, if we do not find the item
being removed, we perform a second, more expensive pass over the full
tree. This second pass is required as we cannot be certain that an
item's bbox has not been modified between insertion and deletion. In
which case, keeping stale pointers in the tree will lead to segfaults.
Fixes: lp:1777246
* https://bugs.launchpad.net/kicad/+bug/1777246
There are a bunch of problems with event processing and closing
documents, etc., when enabled. See the bug report for more
info.
Fixes: lp:1774777
* https://bugs.launchpad.net/kicad/+bug/1774777
std::invalid_argument does not work fine with translated strings as argument for message.
(the translated message is incorrectly or not displayed if it contains non ascii8 chars, at least on Windows).
KI_PARAM_ERROR can be throw-ed with a translatable/translated string (a wxString)
This fixes some warnings on GCC 8.1:
warning: catching polymorphic type ‘class std::out_of_range’ by value [-Wcatch-value=]
catch( std::out_of_range )
^~~~~~~~~~~~
This fix is along the same lines as:
* ff1802d7a "Fix Coverity "Big parameter passed by value" warnings"
There are three related changes here to harden our handling of threads
in the footprint async loader.
1) Footprint async loader explicitly aborts any remaining loader threads
on exit.
2) We protect the thread join by a mutex
3) We do not pause during no-wait routines
When starting async processes, we need to have a way to stop the process
before releasing memory. Descoping FOOTPRINT_ASYNC_LOADER while the
threads were still running could cause crashes depending on the memory
structure. To avoid this we define clear procedures for exiting a
running async processes and call these when exiting.
Fixes: lp:1772909
* https://bugs.launchpad.net/kicad/+bug/1772909
It can be useful to have similar class messages grouped together so that
error messages in a larger report don't get lost among the
warning/info/action messages.
This patch allows sorting of messages for dialogs that benefit from
organization. Default behavior of reporter messages remains
unchanged by this patch.
Fixes: lp:1772090
* https://bugs.launchpad.net/kicad/+bug/1772090
1) hide the status popup when the dialog is brought up
2) forward events from the popup to the canvas so hotkeys work
3) make sure diff pair radius is always 100%
4) fix greyed-out Miter style label
5) make L a hotkey so it works before you start dragging
Fixes: lp:1545856
* https://bugs.launchpad.net/kicad/+bug/1545856
Unifies the different sections of hotkeys so that we are not storing two
[eeschema] or [pcbnew] sections in two different files.
Previous hotkey definitions are loaded at start if they exist but are
overwritten by the new format, if it exists. Changes to hotkeys save
only in the combined format.
Hotkey editor for each application only shows the hotkeys relevant to
that application.
Fixes: lp:1741757
* https://bugs.launchpad.net/kicad/+bug/1741757
Fixes: lp:1668799
* https://bugs.launchpad.net/kicad/+bug/1668799
This reverts the hotkeys file format to a human readable and VCS
compatible listing by splitting individual hotkey assignments onto
separate lines instead of the single key. This unifies the hotkey format
between the application configuration and export Hotkey routines.
Both hotkey formats remain readable by the same routines.
* Refresh the view only when changes are made in the caller frame.
* Allows recreate a new instances when try to open the 3D view from a frame taht is not the initial caller
* Remove duplicate code in kicad frames.
Footprint filter provides two Regex filtering options. One for keywords
and one for footprint keywords. The footprint keywords (contained in
the symbol files) need explicit '*' at the beginning and end of the
filters to allow matching start/end. Type-in filters should search
implicitly matching any wildcard substring.
Fixes: lp:1769931
* https://bugs.launchpad.net/kicad/+bug/1769931
Recent versions of wxWidgets wxStandardPaths::GetUserConfigDir() correctly
append ".config" on Linux build which was incorrect as the current code
already appended it to the path. Add a check to see if ".config" is the
last path and append as required.
Check for XDG_CONFIG_HOME environment variable on all platforms not just
Linux.
Fixes lp:1769145
https://bugs.launchpad.net/kicad/+bug/1769145