Fixes https://gitlab.com/kicad/code/kicad/-/issues/17984
When moving / deleting a power symbol, in some instances the
symbol is marked dirty, and sometimes the pin (depending on
whether the symbol is the primary edited item, or whether
the pin is identified through an edited item subgraph). If
the pin and the symbol are marked dirty, the pin dirty flag
was not being cleared.
Additionally, not all extracted items were being deleted
from subgraphs correctly.
Both resulted in dirty state and duplicated items in the
subgraphs during incremental connectivity, which resulted
in essentially corrupted subgraph states.
The selection heuristic broke down when one item was a filled
shape. Because all hit tests would succeed with distance 0 for
these shapes, they would always be considered the closest item
to the exclusion of all else, which made it very hard to
click on a graphic inside a filled shape.
Now, recognise when an item would be "dominating" and
decline to promote it to the "closet" spot. It will still
be selectable if there are no other items nearby, or if
there are multiple shapes.
(cherry picked from commit fd4c15517f)
This can be useful when managing auxiliary fields.
This is only for the 8.0 branch, as LIB_FIELD is merged
with SCH_FIELD in 8.99, so this is already handled.
We also need to consider electrical type as an exact hit when we are
showing it. Otherwise, we get the pin added to our consideration list
but not selected without hitting close neighbors
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16183
(cherry picked from commit 3620887a22)
If we are renaming a sheet that exists only once in the schematic, then
we don't need to warn about case sensitivity. If the sheet exists
multiple times, we do. We can't check this using SCREENS because the
screens don't maintain full state information about where they are used.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17901
(cherry picked from commit ba4974749c)
The comparison function was failing to properly
de-duplicate by LIB_ID, especially for parts
from database libraries, causing the list to grow
with the size of the design.
* Do not handle tab key event when committing property changes so the
property grid tab navigation works correctly.
* Do not call commit property changes on tab key when no changes are
pending.
* Skip event handling in the base object value change and changing event
handlers in case they do not get overloaded in derived objects.
* Do not force focus to canvas on property change so arrow and tab key
grid navigation work properly. Forcing the user to click the property
grid control to edit a single property doesn't make sense.
* Pass properties panel show event up the event stack.
* Do not set focus to canvas in tool dispatcher if it already has the
focus.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/16957
manully cherry picked from commit 8a1347d2c8
Use the root schematic UUID to order projects and sort symbol instance
data by KIID_PATH. This will ensure file changes to instance data are
more consistent by using a fixed ordering.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/17737
(cherry picked from commit a86a258f66)