71 Commits

Author SHA1 Message Date
Jeff Young
6f389fd320 Tighten parent/child undo/redo architecture.
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).
2025-08-18 19:20:09 +01:00
John Beard
d1aa7b148a Eeschema/Pcbnew: allow multiple nets to be assigned to a netclass at once
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
2025-08-12 20:00:33 +08:00
Andrzej Wolski
c73d555fe2 ADDED: Lasso selection in pcbnew
Adds a lasso or freeform selection tool to KiCad in addition to standard
rectangular selection.  Adds supporting HitTest routines

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/1977
2025-08-06 16:06:40 -07:00
Seth Hillbrand
50c7aff3ff Simplify KiROUND using std::llround/clamp
Removes the bespoke rounding in favor of std::llround and std::clamp
routines
2025-08-04 09:26:25 -07:00
Seth Hillbrand
e064a3481d Add Rule Area selection filter in schematic editor
Allows rule areas to be ungrouped from the "Other Items" when selecting
2025-07-24 11:03:38 -07:00
Seth Hillbrand
16f82d1de5 Junctions are wires in schematic editor
Treat junctions like wires for the purposes of the selection filter.
Allows selecting them together with wires and avoids grouping with
"Other Items" which is confusing
2025-07-24 10:52:27 -07:00
Jeff Young
4137b9d31c Don't overflow int rebuilding selection rect (KICAD-E4J). 2025-07-14 13:17:53 +01:00
Jeff Young
d3046e6aee Don't steal unrelated timer events (potentially KICAD-XJN). 2025-07-13 16:30:03 +01:00
Jeff Young
f5f59e797d Make sure event has position before querying it (KICAD-796). 2025-07-01 21:17:22 -06:00
Jeff Young
f5d2553161 static_cast safety. 2025-06-30 20:34:26 -06:00
Seth Hillbrand
bdf5cc5af8 Re-enable pin selection
Pins are no longer in the view separate from their sheet/symbol so we
need to extract the pins for our hit test

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20898
2025-06-05 14:11:12 -07:00
Jeff Young
f58fc0b952 Rewrite GROUP undo based on uuids.
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.
2025-05-21 14:24:59 +01:00
Mike Williams
2b5b3ffb8d sch selection: fix non-greedy line selection
Make sure we selected at least one end before selecting.

Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20942
2025-05-21 08:54:37 -04:00
Seth Hillbrand
484c35c44f When cycling next/prev selection, keep only single
We want to have only the current item in the selection rather than all
of them

(cherry picked from commit 62e11694927dda229c45ca0be8a135eb033d0717)
2025-05-16 09:27:38 -07:00
Mike Williams
2baeecbee8 groups/design blocks add convenience methods for placing/updating 2025-05-15 14:26:56 -04:00
Mike Williams
2e8367a40a sch groups: don't allow drag selecting table cells in un-entered group
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/20834
2025-05-05 10:35:47 -04:00
Wayne Stambaugh
93cac7d0a5 Fix broken select connection behavior.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/19790
2025-05-01 17:02:21 -04:00
JamesJCode
d550e34cf6 Add SELECTION_CANDIDATE flag to EDA_ITEM flags
This is now used when marking selection candidates in the schematic
selection tool. This avoids using CANDIDATE, which can case issues
with connectivity updates if it is not cleared after use.
2025-04-29 18:33:59 +01:00
Roberto Fernandez Bautista
96d72bed6f Fix variable shadow warning in sch_selection_tool.cpp
Also be consistent in naming for all `RunOnChildren` lambdas
2025-04-26 14:42:52 +02:00
Mike Williams
82043e374a sch groups/lines: correctly handle view lifetime and drawing in group 2025-04-21 09:28:27 -04:00
JamesJCode
2ee66ccfac Fix compiler warning 2025-04-15 20:40:56 +01:00
Mike Williams
cdac27b2bc sch groups: implement rotate/mirror 2025-04-15 10:19:40 -04:00
Mike Williams
5eee8f1c5f sch_view: update to handle items with children 2025-04-15 10:19:39 -04:00
Mike Williams
5db091fc79 sch groups: clear group membership on destruction, add tests 2025-04-15 10:14:38 -04:00
Mike Williams
05f3c47b4f groups: make selection tool work with groups 2025-04-15 10:13:50 -04:00
Julien Serin
f381c6e846 Feat add table selection with shift+click
ADDED now user can use shift+click to select multiple cell in a table with two click

Fixes https://gitlab.com/kicad/code/kicad/issues/19878
2025-04-08 11:57:35 -07:00
Mike Williams
40058ebe80 actions: move all basic selection operations to common actions 2025-04-02 12:02:01 -04:00
Mike Williams
5fd294cad2 eda frame: hoist FocusItem calls up a layer
Prep for SCH_GROUPs
2025-04-01 14:34:20 -04:00
Jeff Young
7ba07a3bb0 Use action to change current sheet.
That way it gets into the navigation hierarchy,
the current zoom gets saved, etc.

Fixes https://gitlab.com/kicad/code/kicad/-/issues/20466
2025-03-27 17:56:53 +00:00
Mike Williams
c67924ccac schematic: convert RunOnChildren to also take recursion mode argument
Prepping for SCH_GROUPS, making consistent with the PCB code.
2025-03-27 13:16:09 -04:00
Mike Williams
18010b1104 selection: sort box selection by rows and columns by default
Some tools can take a selection order and it is nice to provide a
sane human-oriented default sorting when box selecting.
2025-03-19 10:25:35 -04:00
Jeff Young
5996cffabc EE -> SCH (no functional changes) 2025-03-13 13:15:47 +00:00
Jeff Young
c1539ae014 Naming changes to reflect sharing between SchEdit and LibEdit. 2019-05-10 19:56:20 +01:00
Jeff Young
ea0941cab3 Implement modern tools for LibEdit. 2019-05-10 16:11:57 +01:00
Seth Hillbrand
589a37bfe8 eeschema: Don't segfault on empty drawlist 2019-05-09 15:11:36 -07:00
Jeff Young
f40408187e A couple of temp hacks for LibEdit <esc> processing while in transition.
Fixes: lp:1828004
* https://bugs.launchpad.net/kicad/+bug/1828004
2019-05-07 12:04:19 +01:00
Jeff Young
2097411550 Refresh RequestSelection selection if all items were filtered out.
If you have, for instance a pin selected and do a cmd-E we'll filter
out the pin and then do nothing.  We should instead treat it as a
hover selection if everything got filtered.
2019-05-07 12:04:19 +01:00
Jeff Young
f1a38a6d41 Respond to <esc> from selection tool.
Fixes: lp:1827917
* https://bugs.launchpad.net/kicad/+bug/1827917
2019-05-06 21:56:19 +01:00
Jeff Young
207900e4f9 Move libedit message panel updating to the Inspection Tool. 2019-05-06 15:31:23 +01:00
Jeff Young
f87d371b8b Move to shared COLLECTORS for sch and lib. 2019-05-06 15:31:23 +01:00
Jeff Young
a42a4b0b52 Implement immediate bus unfold and add bus unfold to selection context menu. 2019-05-05 17:14:30 +01:00
Jeff Young
fd546da640 Homogenize hit testing and selection return types.
Prep work for sharing SCH_SELECTION_TOOL with LibEdit.
2019-05-05 17:14:30 +01:00
Jeff Young
b5fd7b9842 Move Leave Sheet to the top of the context menu. 2019-05-05 17:14:30 +01:00
Jeff Young
7e3ad4585a Fix issues with dragging, moving and rotating wires. 2019-05-05 17:14:30 +01:00
Jeff Young
2edb09e583 Double click action should enter sheet. 2019-05-05 17:14:30 +01:00
Jeff Young
bcdc3ad90a Set IS_NEW flag on new images. And a bunch of cleanup of dead code. 2019-05-05 17:14:30 +01:00
Jeff Young
21b315f2af Finish removing GetCurItem() from eeschema. 2019-05-05 17:14:30 +01:00
Jeff Young
6e695aac25 Move bus unfold and symbol unit selection to modern toolkit. 2019-05-05 17:14:30 +01:00
Jeff Young
f4b92e6acf Refactor as SCH_DRAWING_TOOL was getting too big. 2019-05-05 17:14:30 +01:00
Jeff Young
20b63174dc Support wire & bus drawing from selection tool. 2019-05-05 17:14:30 +01:00