6.0RC1 Wire issues while moving symbols


I am drawing a new schematic in 6.0RC1, I noticed that the wire dragging is inconsistent while moving symbols. As shown in the video below, when dragging symbols on the right, the wires on the left become diagonal, which is not happening while dragging symbols on the left side. Also trying to drag a wire using mouse is a mess, when I try to drag the wire on top side, vertical wires drift suddenly to the left causing diagonal wires to form and I have to move the mouse to fix that, using G and keyboard arrows is the only way to avoid that behavior.

That’s more or less the behavior I would expect. The difference is whether or not the vertical wire segments are in your selection when you start the move.

In your first example (right side), the vertical segments to the right of U1 pin1 and to the left of U1 pin4 are unselected. They become diagonal in order to maintain the connections to the wires you do have selected.

In your second example (left side), the vertical segments to the right of J1 are selected, so they move with your selection.

For your last example, to avoid the diagonals I think you’d have to also select the vertical segments to the left and right of the horizontal segment you’re moving. At least I think that’s what you’re describing; correct me if I misunderstood.

Basically, the wire segments you’ve directly selected will move as-is (without changing length and without changing orientation), and the adjacent unselected segments will be adjusted as necessary to maintain the preexisting connections.

Same here.
From what I can see it’s a result from how you select things.
If you drag a box from left to right, then items crossing the box boundaries are not selected, while doing a drag from right to left does include the items that cross the box boundaries.

Unfortunately the schematic editor doesn’t keep 90 degree corners (see https://gitlab.com/kicad/code/kicad/-/issues/1956 and give a thumb up), and the logic is difficult to follow or at least requires detailed thinking for each case to get it right.


Actually this is a nasty behavior, it is impractical for a user to concentrate on which segments have to be selected in order to avoid diagonal wires. According to your analysis, horizontal wires should not be selected, which is impractical after all. Generally speaking, the user has to worry about selecting symbols, rather than which very exact segments for a successful movement. In the last example, it is a complete mess to be honest when using the mouse, the pointer just gets dragged somehow i.e. it is not convenient.

I don’t necessarily agree.

What do you mean that “horizontal wires should not be selected”? I select & move horizontal wires all the time.

I think the main thing to consider is what you have selected when you start the move: the endpoints of your selected wires will move as you expect, and the end points of unselected wires don’t move. The wires immediately adjacent to your selection have one endpoint selected and one unselected, therefore one endpoint moving and one endpoint fixed, which likely results in the wire becoming diagonal.

I’m not arguing that the behavior is 100% perfect or couldn’t be improved, but to me at least it feels predictable and does what I expect.

Maybe clearer with some pictures.

Before the move:

After moving the highlighted segment down:

The end points of the selected segment moved. The endpoints further away did not move. That results in diagonal wire segments next to the moved segment.

Would it be nicer if the corners stayed 90deg? Yes, probably. Thinking about it in my head, I think it could be implemented in an equally predictable way. Give @eelik’s issue a +1 :slight_smile:

That feature is surprisingly hard to implement (despite obviously being a popular request) which is why it still doesn’t exist. Maybe in V7 :slight_smile:

1 Like

@gkeeth get your point.

I can’t see this happening, along with many other features/fixes happening sooner than v7. What worries me there is a plethora of features postponed to v7, which might leave us with what has happened to v6, and then postponed to v8, etc…

Yeah certainly the right-angle feature would be a V7 or later feature as @craftyjon says.

The kicad team has committed to smaller & more frequent (yearly) updates going forward, so hopefully that will help.

Take it or leave it, this is what it is. The only thing we can help with is ask for features and report bugs. No matter how many thumps an issue gets in gitlab, v6 is what you see at the moment, not much new stuff will be seen other than what you are getting now.

IMHO (select + drag) behavior has been less than ideal for a long time:

  1. Note that if you select a box starting from lower right (as is now my habit) you get “Greedy Select.” (This was not my term but it seems remarkably well-suited.) It select all symbols and wires which are even partially within the box. If you start from upper left, then only symbols and wires which are fully enclosed are selected. I cannot remember choosing that option on purpose.

  2. I would like to refer anyone interested to the “classic” version of ExpressPCB. This is a captive software program which I used for many years before switching to KiCad. It is very basic and rudimentary and (so far as I can tell) bug free. And the selection behavior within the schematic capture works as you would want, rubberbanding the wires rather well. On the record there are many limitations to ExpressPCB but mainly in the pcb layout department. The schematics are not nearly so aesthetically pleasing, but for example I think it does multi-page schematics easily. I am only mentioning this as an example of what can be done in a lightweight EDA package in terms of rubberbanding and schematic editing. My folder with system files + libraries is smaller than 30MB.

I can post a few .gifs of schematic editing - dragging - rubberbanding in ExpressPCB if that would help anything.

EDIT: I just now quickly revisited that software. Actually I think the key difference in dragging in ExpressPCB schematics is that it drags junction dots and not wires. So you first make sure that you capture the junction dots that you want, and when you drag, the wires rubberband between them. You can end up with diagonal wires but I think they are easier to avoid in ExpressPCB than in KiCad.

Perhaps the “gotcha” is that even simple wire corners get a junction dot. Functionally I have never had an issue with that, but some users might dislike it.