area was a double value for comparison of large numbers. But the
promotion from int happened after the multiplication (and overflow) for
large images
Fixes https://gitlab.com/kicad/code/kicad/issues/12821
For some reason the overlay doesn't get redrawn during the PCBNew
selection disambiguation menu, so we need to not hide BRIGHTENED
items.
Fixes https://gitlab.com/kicad/code/kicad/issues/12547
The hash table for integer hashes is extremely limited and places most
elements in the same buckets. This leads to a linear search time for
structures built on this.
This blocks hashes, directing the coder to utilize std::set or std::map
structures instead of hash tables for implementing integer-based
lookups.
1) Move a bunch of std::map's to std::unordered_map to get constant-time
look-ups
2) Lengthen progress-reporting intervals to spend more time doing work
and less time talking about it
3) Reverse order of SHAPE_LINE_CHAINs in thermal intersection checks to
make (much) better use of bbox caches
4) Don't re-generate bboxes we already have
5) Fix some autos that weren't by reference (and were therefore copying
large datasets)
6) Rename delta progressDelta so it's easier to search for in future
7) Get rid of a few more autos (because I don't like them)
8) Pass large items to lambdas by reference
Fixes https://gitlab.com/kicad/code/kicad/issues/12130
When selecting greedy (right to left), selecting any part of the group
will get the whole group. When selecting left to right, we must select
all items in the group to get the grouped items unless we are in the
group itself
Fixes https://gitlab.com/kicad/code/kicad/issues/11902
Found via `codespell -q 3 -S *.po,./thirdparty,./Documentation/changelogs -L aactual,acount,aline,alocation,alog,anormal,anumber,aother,apoints,aparent,aray,ba,busses,dout,einstance,leaded,modul,ontext,ot,overide,serie,te,,tesselate,tesselator,tht`
Fixes:
* Various special cases around junctions on pins and dragging.
* Some rotations of endpoints resulting in a 45 degree rotate.
* Some cases where it was possible to get a line with neither
endpoint selected, and also substractive unselecting only one of two
selected endpoints unselecting both.
* Use line midpoint for sorting. Start and endpoints aren't
consistent in the order they appear on the X or Y axis. So,
we need to use the midpoint for our position for consistent
sorting when dragging groups of parallel lines where some
have the start and end reversed.
Other:
* Rename TEMP_SELECTED TO SELECTED_BY_DRAG. This is the actual meaning
of the flag, and should reduce confusion as
to when it should be used.
* Move usage of TEMP_SELECTED as an algorithmic mark to CANDIDATE
instead.
* Fix mistaken clearing of START_POINT and ENDPOINT.
* Move endpoint setting and clearing out of narrowSelection, and into
selectPoint and selectMultiple.
* Don't show dangling end warnings on new lines
Also regularizes some of the other selection filtering options.
This also fixes an invalidated iterator (and subsequent segfault) in
the old code.
Fixes https://gitlab.com/kicad/code/kicad/issues/9896
If we do a real drag, the timer will be cancelled. If we don't, then
the user is still holding the mouse button down and would probably like
to see the menu. Otherwise it appears the action is dropped.
The other drawing tools allow drag selection while idle. Also, it makes
it more obvious to the user when accidentally drag selecting while
routing than just doing nothing on a drag with the routing tool selected
and idle.
Moving points should not be overrided by disambiguation menu, so we
track where the disambiguation event started and only trigger the menu
if the mouse hasn't moved a full unit in x/y
Fixes https://gitlab.com/kicad/code/kicad/issues/9132
Previously, we were checking if the selection tool was the top of the
stack but this ignored many other "secondary" tools that might be
running such as the point editor. These still allow the selection tool
to handle events such as clicks. This change allows the selection tool
to handle clicks when it is the primary tool on the stack rather than
the top
Fixes https://gitlab.com/kicad/code/kicad/issues/9110
This standardizes selection tools in SELECTION_TOOL class to be able to
handle a long-click as asking for a non-heuristic disambiguation menu.
Fixes https://gitlab.com/kicad/code/kicad/issues/8490
Moves all of the find dialog control out of the selection tool similar
to the schematic editor. Dialog is also non-modal now to match the
schematic editor.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8966
Do not remove footprint objects from list of selected objects when there
are no drawable objects other than the reference and value text.
Increase the minimum size rectangle for footprints from 0.025mm to 1mm
when the footprint has no drawing objects so that it is easier to select
the footprint in this case.
Add some pretty colors to the footprint bounding box and hull outline
so that it's possible to tell the difference between selection areas.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8379
CHANGED: Highlight net tool changed to highlight display toggle; moved to left toolbar
CHANGED: Multi-net highlight is now accessible when using the highlight net action
ADDED: Highlight Net and Clear Highlight actions to Net Tools context menu
ADDED: Default hotkey (Ctrl+`) for toggling net highlighting
The current and previous net highlight state are now stored and can be toggled
on or off with an action (no hotkey by default).
Highlight is now treated as a persistent state rather than a tool that is entered,
meaning there is no longer a special tool to enter in order to highlight nets.
Highlighting can be controlled while any other tool is active using the hotkeys
or context menu on a net object.
Tweak the icons for highlight net and layer display mode to better disambiguate them.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/8250
Also removes a bunch of old implementations of pad locking and
filtering which are no longer needed. (They're now handled by the
uniform locking code.)
Also removes some of the auto-promotion logic. Rotating a footprint
when a pad was selected is going to be surprising whether the pad
is locked or not.
Fixes https://gitlab.com/kicad/code/kicad/issues/8322
SHIFT, CTRL, ALT modifier keys were handled in 2 different codes, one for
the selection tool and another to modify the mouse cursor shape, with 2
different configs.
Now the modifiers are managed from only one function.
Pcbnew: group also SHIFT, CTRL, ALT modifier keys management to a specific function.
Fixes#8021https://gitlab.com/kicad/code/kicad/issues/8021