37 Commits

Author SHA1 Message Date
Jeff Young
5b91a24380 Retire WINDOW_FREEZER in favour of wxWindowUpdateLocker.
Also pulls out previous fix to a Sentry issue I can
no longer find, at least until I figure out what
went wrong.
2025-07-11 13:21:04 +01:00
Jeff Young
53c90b0469 Upgrade ShowPlayer re-entrancy guard (KICAD-XAC). 2025-07-10 17:54:42 +01:00
Jeff Young
0ba617bf1a MakeNetNavigatorNode() will attempt to select it (while frozen). KICAD-VV8 2025-07-08 09:42:19 +01:00
Jeff Young
693ea44990 Debugging.
(Separate wxCHECKs so Sentry can tell us which
one fired.)
2025-07-06 21:42:13 +01:00
Alex Shvartzkop
4a5039c2cf Remove some unused variables. 2025-07-02 16:48:26 +03:00
Jeff Young
b58f5607cc Don't assume net navigator has root item (KICAD-7Q7). 2025-06-24 11:52:29 -06: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
jean-pierre charras
cc75b511ba Eeschema, Net Navigator: fix incorrect refresh of nets tree.
Fixes https://gitlab.com/kicad/code/kicad/-/issues/20648
2025-05-08 11:40:50 +02:00
Jeff Young
4783bc4cfd Don't respond to net navigator events while we're updating the wxTreeCtrl. 2025-03-29 21:24:08 +00:00
Jeff Young
5996cffabc EE -> SCH (no functional changes) 2025-03-13 13:15:47 +00:00
Seth Hillbrand
1e9cf4e3d7 Add ability to quickly move through nets
After highlighting a net (`), press Tab to quikcly move to the next item
on the net and Shift-Tab to move to the previous

Fixes https://gitlab.com/kicad/code/kicad/-/issues/10911
2025-03-03 14:02:43 -08:00
Wayne Stambaugh
f45915ba93 Eeschema folder housekeeping. 2025-02-06 09:47:00 -05:00
Seth Hillbrand
0b2d4d4879 Revise Copyright statement to align with TLF
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
2025-01-01 14:12:04 -08:00
Seth Hillbrand
6e09649a70 Fix crash on net highlighting
When navigating to a sheet without the highlighted net, there was a
chance for an uninitialized pointer deref.  This also gathers the
highlighted nets into the navigator as well as their subsuming buses

Fixes https://gitlab.com/kicad/code/kicad/-/issues/18419
2024-12-24 14:46:47 -08:00
John Beard
5f69a5779f Eeschema: show pin names in net navigator
The pin number is useful, but you get a much better
idea of where the net if going if you can also see the
pin name.
2024-10-27 05:13:32 +08:00
Wayne Stambaugh
a6923b3de3 Cache full schematic sheet list sorted by sheet page number.
The sheet list is returned as a copy of the cached list rather than a
reference to prevent external code from changing the list.  While not as
performant, it eliminates the risk of the sheet list being altered in
ways that could break the schematic.  The sheet list should only be
updated by calling SCHEMATIC::RefreshHierarchy() when any appropriate
sheet changes are made.

Note to developers: there is something inherently different about how the
QA tests are loading and handling schematics versus the schematic editor.
Using the cached sheet list for the SCHEMATIC object will cause some QA
test to fail.  This is why SCHEMATIC::Hierarchy() has not replaced
SCHEMATIC::BuildSheetListSortedByPageNumbers() everywhere.
2024-10-09 09:58:50 -04:00
Mike Williams
284c52845d net navigator: add sheet changes to navigation history
Fixes: https://gitlab.com/kicad/code/kicad/-/issues/18616
2024-09-11 15:03:53 -04:00
Jeff Young
b8819b4636 Another reduction in asserts. 2024-07-19 22:11:56 +01:00
Jeff Young
edc7603d2a Make it clear that GetSheets() is heavy.
Also removes the side-effect that SCH_SHEET_LIST's
c'tor would sort the list (and write virtual page
numbers) anytime the starting sheet was the root.

Also, definitely don't build a SHEET_LIST (sorted or
otherwise) if you're not even going to use it.

Also don't build SCH_SHEET_LISTs on idle events.  Better
to just always have the Next Sheet button enabled (we
already beep if you click it and there's no next sheet).

Also, use a SCREEN_LIST when you can.  It's much cheaper
to create.
2024-06-06 18:00:59 +01:00
Jeff Young
e543ff0578 Performance for large hierarchies: lookups
Don't bother to sort sheet lists when we're just looking
up a UUID, sheet count, other symbol units, etc.
2024-06-06 11:52:57 +01:00
Wayne Stambaugh
82b310f666 Do not update schematic editor net navigator when it's not shown.
Since the addition of all nets to the net navigator, performance on very
complex designs is unacceptable.  Not updating the net navigator is a
cheap and dirty short term fix.  Users with complex designs will not be
able to use the net navigator.  A better fix to resolve the performance
issues needs to be implemented.
2024-06-05 11:46:19 -04:00
Seth Hillbrand
00538548f5 Handle net directive in navigator 2024-04-18 18:21:13 -07:00
Wayne Stambaugh
d79619edd1 Minor net navigator improvements.
Ignore bus member connection subgraphs.  They do not have a valid net
name nor do they contain schematic items.  This prevents empty nodes
from being added to the tree.  They can be reintroduced in the future
if someone wants to pursue it.

Freeze the wxTreeCtrl while populating it and thaw when done to prevent
any unnecessary repainting.

Add profiling to test how long it takes to rebuild the net navigator.
The recently added populate the navigator with all nets when no net
is highlighted has exposed some potential performances issues with some
versions of wxWidgets on certain platforms.  Namely wxWidgets 3.2.4 on
Linux GTK.

Fix an issue where a sheet name change would not update the highlighted
net navigator resulting in a stale human readable sheet path.

Prevent the highlighted net navigator from being rebuilt twice when
loading a schematic.  SCH_EDIT_FRAME::RefreshNetNavigator() was being
called from both SCH_EDIT_FRAME::UpdateHierarchyNavigator() and
SCH_EDIT_FRAME::RecalculateConnectivity().

Add a new trace helper "KICAD_UI_PROFILE" to show trace output when
profiling user interface performance.  It's used in the net navigator
profiling mentioned above.

Reuse PROF_TIMER::Show() to generate string for PROF_TIMER::to_string().
2024-04-17 14:31:50 -04:00
Mike Williams
067ef9657e net navigator: handle no-connects 2024-04-11 10:21:18 -04:00
Mike Williams
faca7ee05b net navigator: show all nets when none are highlighted 2024-04-11 10:21:17 -04:00
Jeff Young
1028a76e4a Harmonize print/plot APIs. 2024-04-06 09:34:56 +01:00
Jon Evans
2f6c9d1f3a ADDED: Selection filter for schematic editor
Fixes https://gitlab.com/kicad/code/kicad/-/issues/14988
2024-02-25 17:44:10 -05:00
Jon Evans
d6b76ae9df Net navigator: Unescape net names 2023-10-31 22:19:48 -04:00
Jeff Young
d5d07e64c9 Use IsShownOnScreen(), not IsShown(), if you really want to know if its visible. 2023-10-14 23:51:37 +01:00
Wayne Stambaugh
aeed542202 Net navigator fixes and improvements.
Remove wires, junctions, and bus entries from tree.  These objects make
the net tree noisy for complex nets.  Until a sane way to group these
objects can be, remove them for now.

Fix tree expansion and debug assertion issues.
2023-07-10 15:34:00 -04:00
Wayne Stambaugh
fc1d540036 Fix a Coverity issue in the net navigator code. 2023-06-15 08:00:08 -04:00
Wayne Stambaugh
4ccbbde54a Net navigator bug fixes and improvements.
Note: This changes the net highlight tool behavior.  When clicking on an
      already highlighted net, the net highlighting is no longer toggled
      off.  This prevents the net navigator panel from being cleared.
2023-06-14 09:57:55 -04:00
Wayne Stambaugh
a46657d802 Remove net navigator debugging code. 2023-06-10 14:04:02 -04:00
Wayne Stambaugh
e9dc00cda3 Minor schematic net navigator improvements.
- Expand tree and highlight object selected with net highlight tool.
- Expand tree and highlight object that are currently highlighted with the
  selection tool.
- Use more descriptive object text rather than menu entry text for tree
  strings.
- Rebuild tree on unit changes.
2023-06-09 14:34:54 -04:00
Wayne Stambaugh
bdee545841 Coverity warning fixes. 2023-06-03 07:28:17 -04:00
Wayne Stambaugh
d854e2bfe8 Schematic net navigator improvements.
Arrange connectivity items by sheet.  Complex nets which span many
sheets make finding objects difficult.  It also provides a higher
level of sheet view granularity.
2023-06-01 12:49:51 -04:00
Wayne Stambaugh
24b04795fd Add net navigator panel to schematic editor.
[ADDED]: A panel to the schematic editor  that allows quick access to all
         of the items connected to the currently highlighted net.

This is an initial swag at implementing a full net navigator feature.  For
now it only shows the currently highlighted net nodes.  The incremental
net list advanced setting must be enabled in order to use this feature due
to performance reasons.  There are still some issues with saving the panel
position which will be addressed in the future.

Initial code for serializing wxAuiPaneInfo settings to and from JSON have
be implemented.
2023-05-20 13:48:03 -04:00