Modify

Opened 11 years ago

Last modified 20 months ago

#5686 new defect

Combining ways while having relation editor open causes invalid link

Reported by: TuurEfe Owned by: team
Priority: normal Milestone:
Component: Core Version: tested
Keywords: Relation editor, combine way Cc:

Description (last modified by mdk)

I somehow managed to get the relations broken by combining ways while the relation editor was open. Not entirely sure how that happened, and having difficulties re-producing the problem, managed to reproduce it once by splitting triangle shape to ways while having relation editor open, but not any more.

The relation editor will in this case show a member with 0 nodes and will give error message about a bug. Saving or uploading will give error, data can be fixed manually in the xml by using text editor to remove the extra members that do not exist, from the relation.

Sometimes the relation editor says that the relation has been edited outside the editor (detects the problem) but sometimes it is unable to detect it.

Attachments (3)

5686.osm (33.7 KB) - added by mdk 6 years ago.
before merge.png (34.7 KB) - added by mdk 6 years ago.
after merge.png (32.2 KB) - added by mdk 6 years ago.

Download all attachments as: .zip

Change History (13)

comment:1 Changed 11 years ago by bastiK

Interesting... Please keep trying to reproduce!

Changed 6 years ago by mdk

Attachment: 5686.osm added

Changed 6 years ago by mdk

Attachment: before merge.png added

Changed 6 years ago by mdk

Attachment: after merge.png added

comment:2 Changed 6 years ago by mdk

Description: modified (diff)

Bug is still open in r10787. To reproduce

  • open 5686.osm
  • open relation in editor
  • select both outer ways
  • merge outer ways

comment:3 Changed 2 years ago by skyper

Keywords: Relation editor combine way added; Relations broken merge removed

Same is true for splitting ways.

comment:4 Changed 20 months ago by skyper

Can not reproduce. Only #19353 looks similar.

@mdk: You screenshots show the correct behaviour as the relation editor is independent and you need to update manually with the button on the top.

Relative:URL: ^/trunk
Repository:UUID: 0c6e7542-c601-0410-84e7-c038aed88b3b
Last:Changed Date: 2020-09-26 19:06:40 +0200 (Sat, 26 Sep 2020)
Revision:17062
Build-Date:2020-09-27 01:30:48
URL:https://josm.openstreetmap.de/svn/trunk
Last edited 20 months ago by skyper (previous) (diff)

comment:5 Changed 20 months ago by mdk

Even if the relation editor is independent, he is notified about the change. He changes the caption of the way from "0 (3 nodes)[id:0]" to "0 (0 nodes)[id:0]".
But wouldn't it make more sense that the relation editor "removes" (ignore) a way with zero nodes from the member list instead of updating the caption?

comment:6 Changed 20 months ago by GerdP

I thought about this as well. A reason to keep it might be that you can easily undo the change which "removed" the way but not the update of the member list.

comment:7 in reply to:  5 Changed 20 months ago by skyper

Replying to mdk:

Even if the relation editor is independent, he is notified about the change. He changes the caption of the way from "0 (3 nodes)[id:0]" to "0 (0 nodes)[id:0]".
But wouldn't it make more sense that the relation editor "removes" (ignore) a way with zero nodes from the member list instead of updating the caption?

You are right, sorry. The left side (memberlist) should not change at all. Neither the object information nor the connectivity. It seems the independence is not given here as within the relation editor nothing changed but the memberlist represents the layer data.

comment:8 Changed 20 months ago by GerdP

The memberlist normally contains references to the objects in the layer data. When a way is removed this happens in two steps,
first the list of referenced nodes is cleared, next the "deleted" flag is set. The memberlist still refers to the deleted way,
and the displayed information is updated.
Don't know if it would be better to replace the memberlist in the editor by a copy. If you modify the tags of a way that is in the member list you would be confused if that list would not be updated, right?

comment:9 Changed 20 months ago by mdk

As far as I understood, the memberlist is a view of the modified data and will be repaint on updates. Why is it not possible to hide ways without nodes (or with deleted flag set) when showing/updating the members?
I think showing a way without nodes, which is already deleted, is very confusing.

Last edited 20 months ago by mdk (previous) (diff)

comment:10 in reply to:  8 Changed 20 months ago by skyper

Replying to GerdP:

The memberlist normally contains references to the objects in the layer data. When a way is removed this happens in two steps,
first the list of referenced nodes is cleared, next the "deleted" flag is set. The memberlist still refers to the deleted way,
and the displayed information is updated.
Don't know if it would be better to replace the memberlist in the editor by a copy.

That would be consistent, regarding the independence, and synchronization only happens with a refresh from data layer.

If you modify the tags of a way that is in the member list you would be confused if that list would not be updated, right?

Good question. I, actually, did not care a lot about the members' tags. For connectivity it is similar and I'd probably would wonder about the missing connectivity, after connecting two ways.

Maybe, it is time to get rid of the independence of the relation editor and keep it automatically in sync with its data layer.

Last edited 20 months ago by skyper (previous) (diff)

Modify Ticket

Change Properties
Set your email in Preferences
Action
as new The owner will remain team.
as The resolution will be set.
to The owner will be changed from team to the specified user.
The owner will change to TuurEfe
as duplicate The resolution will be set to duplicate.The specified ticket will be cross-referenced with this ticket
The owner will be changed from team to anonymous.

Add Comment


E-mail address and name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.