Always look for pre-existing undo/redo record. Checking for IsNew()
is less robust and should be avoided. Also moves the checking to a
location where it will be easier to ensure that it's uniform.
Push get-undo-level-item processing down a level so it is uniformly
called.
Make sure tables & labels are uniformly handled.
Remove incorrect usage of Get/SetGroupId() for storing lastPin
(which we don't use anyway).
Lists of deleted and changed items MUST include the screen pointer.
An item could be changed on one screen but not on another.
Also tightens handling of PCB_NETINFO_T items, which are not in the
view.
Also fixes a bug where there is no increment parameter if you assign
the base increment command to a hotkey.
(This was discovered while testing the above changes.)
Also fixes a bug where delete during a move in PCB Editor did an
undo instead of a delete.
(Again, found while testing above.)
An experiment was also run to collapse shared parts of SCH_EDIT_FRAME
and SYMBOL_EDITOR_FRAME into SCH_BASE_EDIT_FRAME. However, sharing the
undo code actually increased complexity, and there was very little else
of value in SCH_BASE_EDIT_FRAME (other than the Increment() routines).
I don't understand how cloned nets get their target zone
net in the first place. What I do know is that rarely it does
not work and the source net is retained. This is where
fixupNet() shines and does what its name suggests.
The locking option from the repeat layout dialog was renamed and
is now called 'include locked items', like in the code.
If an item is locked in the source rule area it is not replicated,
if an item is locked in the target area it will not be deleted upon
running the repeat layout tool. Added an option to ignore tracks that
do not share a net with a pad inside the source rule area. This gives
unrelated track segments lying inside the rule areas a chance
of peaceful coexistance.
Tracks segments of arbitrary lenght were replicated as long as some
part was inside the reference rule are. Now only track segments fully
within the rule area are replicated. This improves performance,
consistency (e.g. only zone fills fully within rule area are copied) and
usablity. Regarding the usability: if a channel is replicated and then
connected to something else these wires were often messed up if another
replication (some internal update) was necessary. Now the chance that
external connections going into the rule area survive an replication is higher.
adds a dropdown menu to select an anchor footprint from the
reference rule area. The corresponding footprints in the
target areas determine displacement and rotation off all the
replicated items. If no anchor footprint has been selected
the previous behavior is unchanged, i.e. rule area position
determines placement.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20603
A placement-area is a rule-area sub-type. We don't
need to say rule-area-placement each time.
Also removes some dead code, and simplifies some
damage-propagation logic.
This also removes the GROUP/UNGROUP-specific undo actions.
This also fixes a bunch of undo bugs when duplicating
group members, creating pins, etc.
This also fixes some undo bugs when dividing wires etc.
This also fixes some bugs with new sch items not
being created within an entered group.
When replicating a layout with the multichannel tool
the net names of vias are now updated to reflect the
potentially different connections in the target area.
Fixes https://gitlab.com/kicad/code/kicad/issues/20334
The type list kept atrophying when various new
items were added (arcs, shapes).
And god knows what the purpose of putting PCB_FOOTPRINT_T
in some of them was. As far as I can tell a CN_ITEMs
parent can never be a footprint.
(Also moves IGNORE_NETS to a flag so that we don't
end up with two booleans and the potential to have
them out-of-order.)
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
- Implements component classes for placement rule areas and multichannel tool
- Implements property inspector properties for rule areas
- Fixes some zone member default initialisation issues
- Gates all multichannel-related imlpementation with existing adv config flag
- Removes rule area type enum, replaces with inference from keepout and
placement settings