This will also handle the case when more than two items are subtracted,
e.g. many small items witrhin one larger item. Again, thanks to
Kliment for a smart idea!
While there is technically some kinds of defined order (last selected item is
'A' in the 'A - B (- C...)' operation, it's easy to drag select and then
get a null result.
So if this happens to a non-commutative operation, try again in the
reverse order. In the usual case (2 items), this will get what the user,
presumably, wants. If there are more than 2, it will either work, or the
user can undo and try merging the "B" operand before subtracting, or do
them one at a time (at which point the order-reverse logic will help
again).
Thanks to Kliment for an this usability suggestion!
The child class removes itself from the parent panel, which calls the
DTOR. This automatically disconnects the events, so if we want to
explicitly do this, we need to do it before freeing the memory
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21307
Teardrops are calculated as zones, so when we create a board with
thousands of teardrops, we don't want to run O(n^2) checks on the
clearance between multiple teardrops. Instead, we can check only the
clearance where the two zones have the potential to interact
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21226
This issue was created by switching to FILTER_COMBOBOX in this dialog.
Spaces in labels are not a good idea, but this is needed to enter group
members to a bus definition
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21300
Items can be deleted more than once (for instance, a
global deletion of all zone will still try to
clean-up teardrops at the end, deleting them a
second time).