Makes it harder to enter and harder to exit a snap. ideally this should
help make snapping more intuitive and easier to use. Once you have a
snap, it is harder to lose it but it avoids being overly snappy in the
begining
If the selection filter has blocked all selections under the cursor,
show a subtle flash on which filter(s) did the blocking. Helpful for
people getting frustrated by not being able to select locked items.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20487
Another case where large grids are overly "grabby" for snaps.
In this case, because the via was moved to the grid-snap first,
and then THAT position was used to look for things like pad-snaps,
the pad snaps would not be found if a coarse grid meant the cursor
was outside the pad.
Instead, use the mouse position when looking for the non-grid snaps
in VIA_PLACER::SnapItem.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18626
Break up monolithic function into responsibilities. Adjust cleanup to
correctly modify each graphical pairing. Fix drc test to properly
report gap distances that are relevant to outlines
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13090
Adds scaling handles and editpoints to drag shapes larger/smaller while
maintaining proportions. Future additions might include non
proportional scaling
Fixes https://gitlab.com/kicad/code/kicad/-/issues/13072
The position would always be "don't move at all" since we need to ensure
the design block fits in the canvas area, which means we can't move any
objects that we import.
The first cell of the array needs to not be reannotated, or it will
skips its own number(s) and take what we expect for the second cell.
The repeats until the last entry, which didn't reannotate anything,
leaving the original numbers. Producing a 'rotation' like 2,3,4,5,1
rather than the expected 1,2,3,4,5.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20935
In the Drag tool client filter function, sometimes,
GuessSelectionCandidates trims the collector's item list.
But we used the old contents of the per-type vectors to make
judgements about what was connected.
If a call came in with 2 tracks (e.g. near a knee) and one
was removed by GuessSelectionCandidates, sometimes the
other one would be the one selected for removal in the
2 tracks/0 via case. This leaves the collector empty.
The other case, where the item removed by GuessSelectionCandidates
was removed from the collector is silent, as removing an item
not in the collector is a no-op.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/21517
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).
Changing the generator will often modify the underlying children's
properties. We should store these data in the stack. Also add the
ability to change layers
Fixes https://gitlab.com/kicad/code/kicad/-/issues/21476
Sometimes, you don't want those 45° corners in your nice, clean zones.
This adds an additional mode that can be selected, cycling through
free-angle, 45° angle and 90° angle constraints
There is only a simplistic multi-net pattern expression
generator here (A|B|...) with a single prefix detected
rather than anything too fancy.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/21451
Put the string manipuuation utils in the cpp, and
remove string_utils.h from the includes of netinfo.h.
This spams that header into about 350 files, not all of which
need it. Then go round and tidy up the places (most exporters
and dialogs) where CPP files weren't including string_utils.h
when they used it, as well as some other order-sensitive
include issues that turned up.