Mike Williams
22c609fb7b
Schematic: handle aligning unaligned sheet pins in aligned sheet
...
Also fix a rounding bug.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/15050
2023-08-03 11:11:34 -04:00
Mike Williams
1e66129218
Schematic: Align Elements to Grid needs to respect grid overrides
2023-07-27 10:45:27 -04:00
Mike Williams
132a0ada73
Grid Overrides: support grids-per-type that override the current grid.
...
Schematic only at this point while we test and refine.
PCB support is a future addition.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/14756
2023-07-25 10:17:57 -04:00
Jeff Young
5419055acb
We no longer need activate actions with RunSynchronousAction.
2023-07-16 14:43:29 +01:00
Jeff Young
5f8583cd25
Try both ends to see if one is a wire.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15178
2023-07-13 18:20:28 +01:00
Jeff Young
922f7128a9
Move item updating and view refresh to SCH_COMMIT::Push().
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15132
2023-07-07 15:40:01 +01:00
Jeff Young
4cbf512461
Support synchronous move in symbol editor.
...
Also removes duplicate-during-move. It's not really compatibile with
a passed-in SCH_COMMIT, and it was never clear it was worth the code.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14274
2023-07-02 10:37:50 +01:00
Jeff Young
773e1a1ab6
Actions with a COMMIT must be run synchronously.
...
Note that "immediate" doesn't mean quite the same thing: while it will
enter the tool immediately, it won't necessarily finish the tool during
the call if the tool has an event loop. So for something like Rotate
"immediate" and "synchronous" have the same behaviour, but for something
like Move they do not.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15085
2023-06-30 18:57:37 +01:00
Ian McInerney
2a940a5f70
Add COMMIT to TOOL_EVENTs instead of passing as a parameter
2023-06-27 00:57:59 +01:00
Ian McInerney
2fb6f19a84
Separate immediate and delayed action dispatch
...
Using a boolean argument just leads to a lot of trailing booleans in the
function calls and is not user friendly. Instead, introduce PostAction()
to send an action that runs after the coroutine (equivalent to passing
false or the default argument), and leave RunAction as the immediate
execution function.
2023-06-27 00:57:59 +01:00
Jeff Young
ed6487da1e
Disallow sheet pins from changing sides when edited by point editor.
...
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15057
2023-06-25 19:55:13 +01:00
Jeff Young
237cc7eee1
Move TestDanglingEnds() to SCH_COMMIT.
...
Also fixes a bug where Convert Symbol wasn't undoable.
Also cleans up some SetModified() call no longer needed with SCH_COMMIT.
Also fixes bug where revert of a modification didn't update the screen's
RTree.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/15030
2023-06-23 19:59:46 +01:00
Seth Hillbrand
62f24aca1e
Fix Connectivity Asserts in new COMMIT structure
...
The connection graph should only be updated within the commit structure
because this is the only time the connectivity should be changed. We
want any connectivity changes to be included in the commit as well, so
this should be stored prior to the undo/redo list mods
2023-06-12 13:35:06 -07:00
Jeff Young
8f1b9119bf
Upgrade some symbol editor stuff to SCHEMATIC_COMMIT.
...
Also renames SCHEMATIC_COMMIT to SCH_COMMIT since it's not schematic-specifc.
2023-06-09 22:41:47 +01:00
Jeff Young
e698156975
Upgrade many editing actions to SCHEMATIC_COMMIT.
2023-06-09 22:41:47 +01:00
Seth Hillbrand
c33d1ab244
Don't dirty the item connectivity prematurely
...
Item connectivity changes once the elements are commited, not during the
process of moving.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14884
2023-06-05 09:12:20 -07:00
Wayne Stambaugh
28776f5745
Text attributes object improvements.
...
* Add compare method to COLOR4D object.
* Add unit test to validate COLOR4D comparison method.
* Add missing color test in text attribute comparison method.
* Add unit test for text attribute object.
* Remove unnecessary headers from text attribute header.
* Move text attribute code into separate source file.
2023-03-29 12:53:45 -04:00
Wayne Stambaugh
a1fb8e1b1d
Coverity fixes and code cleaning.
2023-03-06 07:12:18 -05:00
Marek Roszko
aacc9746e3
Yeet the last of wxSize/wxPoint to stop leaking gdicmn everywhere
2023-02-18 22:57:18 -05:00
Jon Evans
fc68b8d71a
Make selected background layers translucent
...
We can't render them underneath other objects, but we can at least
make it possible to see other objects through them.
2023-02-16 22:45:29 -05:00
Seth Hillbrand
43e4797d4d
Don't double-tap Connectivity Recalculate
...
SCH_EDIT_FRAME::RecalculateConnections() calls SchematicCleanup and then
resets the connectivity graph and recalculates it. OnModify() also
calls RecalculateConnections(). For long calculation schematics, this
can impact usability
2023-01-24 10:30:52 -08:00
Jeff Young
cb58cb8cd3
Put new lines and junctions on the right layer.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13505
2023-01-12 15:17:45 +00:00
jean-pierre charras
4d5c4c4ea8
Ensure all selected items have their edit flags cleared after move.
...
Some sub-items like fields can be selected, and are not in the main item list.
Fixes #13435
https://gitlab.com/kicad/code/kicad/issues/13435
2023-01-08 11:52:21 +01:00
jean-pierre charras
c2f7dbfc15
Eeschema, AlignElements(): fix broken align of lines (bus, wire, graphic line)
...
It was due to a recent change (commit d824b7f5
) for SCH_LINE_T in
SCH_MOVE_TOOL::moveItem()
2023-01-07 09:06:03 +01:00
Jeff Young
8dc7baad3d
Cleanup actions should not activate tools. It causes all manner of side-effects.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13331
2023-01-06 22:15:20 +00:00
Jeff Young
933a5d45e1
Be more aggressive about clearing edit flags after operations.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13173
Fixes https://gitlab.com/kicad/code/kicad/issues/13385
2023-01-05 18:08:22 +00:00
Mike Williams
bd5d10cd7b
Schematic: remove more extraneous dangling symbols
2023-01-04 11:07:23 -05:00
Mike Williams
e65de51fc7
Schematic: label auto orientation needs to respect move/drag/change
...
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/13226
2022-12-28 14:30:57 -05:00
Mike Williams
6cc17e4a16
Schematic: new flag IS_BROKEN for trimming BreakSegment danglers
2022-12-28 12:27:57 -05:00
Mike Williams
b5b65e1455
Schematic: update dragged lines dangling state in realtime
...
Makes the visuals a little nicer as we add bend lines
2022-12-28 12:27:57 -05:00
Mike Williams
8ca8f83a18
Schematic: sheet pin dragging special case needs to check endpoints
...
Otherwise we'll force the wrong end of a line to be special-cased
2022-12-27 12:15:49 -05:00
Mike Williams
33b774685b
Schematic: fix inconsistent selected-by-drag behavior of mid-line labels
...
Two issues here:
Selected labels would half of the time add junctions splitting lines
when the lines would have been selected-by-drag (removing the need for a
junction).
Split lines aren't selected by drag by default, and we need to test
labels against lines that are selected by drag.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/13224
2022-12-27 12:15:49 -05:00
Jeff Young
ba4a7a979a
Don't respond to Duplicate events while placing multiple copies of a symbol.
...
It doesn't really make any sense as clicking will just create another copy
as well.
Fixes https://gitlab.com/kicad/code/kicad/issues/13253
2022-12-24 19:40:39 +00:00
Mike Williams
389f0655cd
Schematic: re-enable old break wire functionality, add slice
...
Also fix break/slice wires for multiple wires. The shortcut and code
always allowed it, the context menu just didn't appear.
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/13163
2022-12-19 15:55:59 -05:00
Mike Williams
5e72a1008b
Schematic: don't trim unchanged segments that are connected
...
Previously if you had a wire with two unconnected ends and dragged the
end of another wire to connect with one end, it would delete the first
wire.
2022-12-13 09:03:23 -05:00
Mike Williams
d824b7f506
Schematic: move wires always moves the whole line
...
Discussion here:
https://gitlab.com/kicad/code/kicad/-/issues/13022#note_1205922621
2022-12-12 14:45:06 -05:00
Jeff Young
2459b61aa6
Don't add second half of line and new juction to screen twice.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13129
2022-12-12 13:44:47 +00:00
Jeff Young
45eae3e594
Don't Simplify() polys with arcs in them.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/13134
2022-12-12 12:54:34 +00:00
Mike Williams
5b2020daf5
Schematic: only delete dangling lines not created directly by the user
2022-12-01 13:13:45 -05:00
Seth Hillbrand
01cf6d76d8
Remove newly dangling lines when dragging
...
These lines are remnants from drag operations that should be cleaned
after commiting the new line positions
Fixes https://gitlab.com/kicad/code/kicad/issues/12870
2022-11-30 13:46:38 -08:00
Jeff Young
7e0ba42f0e
Bug fixes for dragging labels attached to wires in orthogonal mode.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/12677
2022-11-25 15:05:15 +00:00
Jeff Young
bc271a8d15
Protect move tool from re-entrancy.
...
m_dragInProgress is usually sufficient, except when we haven't started
one yet. In any case, conflating the two is probably a bad idea.
Fixes https://gitlab.com/kicad/code/kicad/issues/12936
2022-11-18 17:08:38 +00:00
Jeff Young
8dea227da7
Special cases for sheet-pin dragging.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/11949
2022-10-12 16:36:54 +01:00
Jeff Young
3231bc5be3
Formatting and cleanup.
2022-10-12 16:36:54 +01:00
Jeff Young
7bb0275d3c
Fix incompatibility with old rubber-band wire algo and new ortho wire drag alog.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/11948
2022-10-03 22:12:23 +01:00
Jeff Young
c6284f4835
Formatting.
2022-10-03 22:12:23 +01:00
Jeff Young
83a7ab2449
Initialize resolved status of newly created wires during drag operation.
...
Fixes https://gitlab.com/kicad/code/kicad/issues/12522
2022-09-27 14:12:06 +01:00
Mike Williams
9304607624
TOOL_EVENT: make command string non-optional
...
We're getting segfaults in places where this isn't checked. Also, add
some asserts so we can catch bad tool push/pop.
Removes all uses of GetCommandStr() and makes it private.
2022-09-19 10:23:09 -04:00
Seth Hillbrand
b736460e71
Move optional access from value() to *operator
...
`value()` throws. Where we check for existence, we don't need to use
the throwing version and should just use the unprotected variant
2022-08-30 13:59:39 -07:00
Seth Hillbrand
f1261e71d4
Replace boost::optional with std::optional
2022-08-25 15:50:47 -07:00