Ratsnest display options wonky

Bug #1740156 reported by Andy Peters on 2017-12-26
This bug affects 3 people
Affects Status Importance Assigned to Milestone
Seth Hillbrand

Bug Description

I am working in GAL mode, with yesterday’s nightly.

There are three controls for ratsnest display: left-hand-side toolbar’s (LHS) Hide/Show Board Ratsnest button, Visibility Render tab’s Ratsnest checkbox, and the right-hand-side (RHS) toolbar’s Display Local Ratsnest button.

Toggling the LHS Board Ratsnest button toggles the visibility of the whole board’s ratsnest, as expected. The icon in this button changes so subtly that it’s not at all obvious that it changes! However, the tooltip for this button changes correctly. That is, when the ratsnest is visible, the tooltip reads “hide board ratsnest,” and when the ratsnest is invisible, it reads “show board ratsnest.” This is good — the tooltip should show what will happen if you press the button. Also, toggling this button toggles the checkmark in the ratsnest visibility option in the render thing. This too is good.

In the visibility window render tab, toggling the Ratsnest checkbox toggles the whole board ratsnest, as expected. When the checkbox is off, the ratsnest is gone; when on, the ratsnest appears. Also, the LHS toolbar board ratsnest button changes tooltip and (very subtly) its icon appropriately. So far so good.

(However, the tooltip for the visibility checkbox always says “show unconnected nets as a ratsnest,” so it explains the feature, but doesn’t explain the effect of the checkbox toggle. The layer options in the visibility area are different: the checkboxes all have tooltips that say “enable this for visibility” and the items themselves have tooltips that are descriptive. This is an inconsistency, not really a bug.)

Now the really useful feature, the “local ratsnest.” It seems to work when it wants! Toggling it when the board ratsnest is enabled has no effect. The whole board ratsnest remains visible, the tooltip does not change from “Display local ratsnest” and its icon very subtly changes until you either click on something or hit M with the cursor over a footprint, at which point it reverts to its previous state.

After some experimentation, it seems as if the only way to enable local ratsnest display is to toggle the ratsnest visibility to off, so all ratsnest lines vanish, then hover the mouse over a footprint and hit “M," at which time the nets connected to that footprint will appear and move as you move the part. The ratsnest doesn’t appear when you click on a part to select it, you must hit “M.” BUT — this does not hold true for the LHS Board Ratsnest button, that is, if you turn board ratsnest off with that button and select and move a part, no local ratsnest is displayed. Thus the visibility checkbox and the LHS toolbar button are not redundant.

If in that mode, you place the part (left-mouse-button click), the ratsnest lines vanish, and press the LHS Board Ratsnest button, the whole board ratsnest does not appear until you select or move a footprint. But, if you toggle the ratsnest visibility checkbox, the board ratsnest appears immediately.

Finally, it is clear that the RHS Local Ratsnest toolbar button does absolutely nothing.

My guess is that the logic should work the following way:

a) LHS ratnest button should toggle ratsnest on and off, with its icon state showing the current state and make it obvious.
b) RHS local ratsnest button should toggle between board and local ratsnest
c) Eliminate render tab visibility option for ratsnest entirely.

I understand that c) is where the ratsnest color may be changed, and if the user changes the background color to white, then white ratsnest lines become invisible. So perhaps the way this all should work is:

a) Eliminate LHS ratsnest toolbar button entirely.
b) Toggle ratsnest visibility with the checkbox in the render tab.
c) RHS ratsnest button toggles between board and local ratnest button. (And its tooltip should change with the state.)

I know this is somewhat long-winded but local ratnest display is really important when you’re working on a crowded board.

Application: kicad
Version: (2017-12-24 revision 5708665)-master, release build
    wxWidgets 3.0.2
    libcurl/7.54.0 LibreSSL/2.0.20 zlib/1.2.11 nghttp2/1.24.0
Platform: Mac OS X (Darwin 17.3.0 x86_64), 64 bit, Little endian, wxMac
Build Info:
    wxWidgets: 3.0.2 (UTF-8,STL containers,compatible with 2.8)
    Boost: 1.61.0
    Curl: 7.43.0
    Compiler: Clang 7.3.0 with C++ ABI 1002

Build settings:

Oivind Toien (otoien) wrote :

I am not sure I follow everything here, but I have filed a separate bug report (#1740646) for an appcrash in GAL that hit when exploring (due to your current report) the local ratnests. Also the local ratnests did not display in GAL (with Windows nightly 2017-12-29 revision 93683d002) when footprints were selected; I guess that is what you also observe, they do display when you move as you say, but this is standard behavior also without that icon selected.

I agree that the "Visibility Render tab’s Ratsnest checkbox" seems redundant, but it does not hurt to have an additional location to turn this on and off where everything is in one place?
So I do not agree to "a) Eliminate LHS ratsnest toolbar button entirely.". The Render tab’s Ratsnest checkbox is normally not visible and will be difficult to find for new users and requires additional mouse clicks.

In classic canvas where local ratnests are working, the selection is cumulative instead of selecting one net at a time, so one has to turn it off again by toggling the LHS before selectively looking at another local local ratnest. I am not sure this is the best approach, but one can probably live with it. Each approach has its merits.

Certainly the local ratnests selection in GAL is in need to be looked at.

Oivind Toien (otoien) wrote :

I see now that it does not crash any longer what you mean regarding the function of the Visibility Render tab’s Ratsnest checkbox, that is needs to be transitioned to off for the local ratnests to work.

A possibility is that the LHS button would work as a filter, when on all are displayed, when off only the local ratnets would be displayed.

The problem might be that since local ratnets are displayed cumulatively they needed a button to clear it to be able to start over and used the LHS button to do that, with a complete off function. (Do we need them to be cumulative? would it not be better that clicking another footprint would swith to another net?)

But that function should rather have been assigned to the RHS button's off state. A problem there is likely that the whole column of RHS buttons work similarly to radio buttons, with only one active at a time. After switching to the selection of for instance to the route track tool one might still want to display the local ratnets.

May be the LHS button when turning ratnets off could clear all ratnets, but not disable the selection of local ones, so that one could start over. And then the tickmark enable/disable both local and global ratnets in parallel.

So we have:
a) LHS button On: turn on global ratnets. Off:Turn off global ratnets and clear all on transition to off, but allow new selection of local ratnets to to be enabled (new).
b) RHS button: Enable selection of local ratnets when selected. Not selected: No no change in ratnets but selectability is set to off. (as now).
c) Checkbox in the render tab: Turn both global and local ratnets visibility on and off (opposed to being in opposite phase now).

In classic canvas this is pretty much how it works except for c) which seem to work similarly to LHS. This is not too bad.

**So what mainly messes up things is a bug that disables selection of local ratnets when LHS button is set to off state in GAL** If it worked like in the classic canvas the functionality would be quite acceptable.

[Alternatively if only one local ratnet was selectable at a time the function of a) could be:
a) LHS button On: turn on global ratnets. Off:Turn off global ratnets. No effect on the local net selection wen transition to off and allow new selection of local ratnets to to be enabled.]

Tomasz Wlostowski (twlostow) wrote :

The 'show local ratsnest' tool has rather limited usability. For the next development cycle (post-5.0) we plan to have per-net, per-netclass and per-component rat line visibility control. Also it will be possible to change the net colors.


Changed in kicad:
importance: Undecided → Low
status: New → Confirmed
Jeff Young (jeyjey) wrote :

Might also need to adjust the ratsnest line widths for high-DPI displays.

Changed in kicad:
milestone: none → 6.0.0-rc1
Rene Poeschl (poeschlr) wrote :

Implementing this would "fix" https://bugs.launchpad.net/kicad/+bug/593962

Seth Hillbrand (sethh) wrote :

I suspect that this is fixed. Please re-open if it doesn't work as expected.

Changed in kicad:
assignee: nobody → Seth Hillbrand (sethh)
milestone: 6.0.0-rc1 → 5.1.0
status: Confirmed → Fix Committed
Changed in kicad:
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers