2023R2 WebImageViewer and WebRectangle lost some settings

Opened my project which was last saved in 2023R1.1, and I just noticed that some of my WebImageViewers were not showing up. Looking in the iDE, I see that their Behavior/Image setting had been reset to ‘none’:

image

I noticed this on a WebDialog class.

After resetting the Image value, saving and re opening the project, it did not happen again.

I also notice a few WebRectangles lost their ‘has background color’ and background color values.

Maybe a one-time glitch when moving from R1.1 to R2 ?

image

Picture changed to Image. Maybe R2 didn’t translate your code saved with R1.1 so Image is now “None”.

I don’t know about WebRectangle, ‘Has Background Color’ hasn’t change:
image

yeah, and checking the Diff of my code, I see this change, as well as some other ones - for example, it looks like WebTimer classes now have a Top and Left value again:

[Left = 2023r1.1 Right = 2023 R2]

I thought the days of the ‘never ending text file format changes’ were over? :sob:

Edit to add - it looks like in some WebTimer instances, the Top and Left values were removed when saving in 2023 R2 :sob: :sob:

1 Like

Any time property names are changed, added or removed, the Text format is going to have this issue for a brief time as long as you’re only moving forward with your IDEs. If you bounce around from version to version, it’s going to happen for a long time.

FWIW, The thing that was fixed in spring 2020 was to make it so the IDE only saved things that were changed by the user, by tracking them through the undo system as anything the user does should be undoable.

Greg, I understand that, but how can one explain this flip-flopping behavior? It seems that if I had edited both WebTimers, then the IDE should save them both in the new format, not change one from old to new and the other vice-versa.

Submitted as https://tracker.xojo.com/xojoinc/xojo/-/issues/73586

2 Likes

When you open a project that uses a control whose properties need to be changed in some way, the IDE typically does that as the project opens, but as that’s not a user change, the change is not marked as needing to be saved, so it’s entirely possible that just selecting the control or making some other subtle change made the ide think that the changes it made needed to be saved.

The tricky part of all this is that when properties are added, ideally the old ones are not removed and code is added to keep them in sync. The reason is so that if you were to open the project in an older IDE, it would still work without losing data. Whether this works in practice is up to whoever is making the changes to the IDE.

All that said, the addition of left and top to a non-visual control confuses me. We went to great lengths with Web 2 to fix the loading mechanism that was broken in web 1 and what you are encountering should no longer be possible unless the IDE somehow got confused about the class hierarchy for WebTimer and somehow decided that it was a WebUIControl.

Uhm, that’s weird. It seems the IDE is adding Left/Top when saving the project on any WebControl (but not Width/Height).

Thank you for reporting it.

Also (mentioned in the Issue) the IDE shows the Top,Left values in the Inspector pane. I thought it was decided a while ago that controls such as Timer which aren’t visible would not expose those values in the IDE UI? I may be misremembering…