Description

Summary

Hopefully the EXE will open as is you won't need any dependancies, if something is missing please do let me know.

Steps to reproduce

In MUI Settings turn on Groups/Hide Single tab.

Run the MUIBuilder application, on the second tab, you can Add new windows to the interface, doing so adds a listitem to the above listview the code also adds a Tab to the interface. This new Tab be found under the main tab list titled Layout.

Now return to the Windows tab, now delete all the Windows apart from the one at the top which is not allowed to be removed. As you delete the second tab to leave one remaining the screen corrupts as per the screenshot shown.

At this point, adding pages to the interface also causes the application to exhibit incorrect behaviour.

Expected results

Screen not to corrupt when Closing/deleting pages of a Clicktab gadgets which is currently out of view when the MUI Setting 'Hide single tab' is enabled. Looks like an oversight.

I think MUI builder is doing something wrong here, or at least isn't doing enough. I prepared a small demo application which adds a new page to a Title.mui object on a different page. This one works without any problem. So you better check if you surrounded all dynamic changes to your objects by the mandatory MUIM_Group_Init/ExitChange pairs.

I have added the Init/ExitChange pairing (it was missing), however this doesn't seem to have made a difference. Like you say it looks like I will have to prepare a minimal demo exhibiting this issue. Please can you add Andreas to this ticket as well, thank you.

Right, I've created a stripped down version, similiar to the Nested Register exe you kindly attached.

Now, I've observed a few things, 1, the visual mess still occurs, 2, if I use InitChange and ExitChange before and after the method AddPage is called Hollywood complains that that 'InitChange' is not recognized by this class, 3 if I comment out the InitChange/ExitChange pairing the program continues to flow.

So if Andreas can please reply with some input it would be most appreciated.

Right, I've created a stripped down version, similiar to the Nested Register exe you kindly attached.

Thanks for not sharing it with us This way you really make sure that nobody will be able to help you.

Now, I've observed a few things, 1, the visual mess still occurs, 2, if I use InitChange and ExitChange before and after the method AddPage is called Hollywood complains that that 'InitChange' is not recognized by this class, 3 if I comment out the InitChange/ExitChange pairing the program continues to flow.

In general wrappers like HollyWood should make no assumption about which method can be called for which kind of object. Although something like MUIM_Group_Init/ExitChange is suitable for groups only it also might be possible that other non-group classes use it at some day in the future for whatever reason.

All public MUI method IDs are unique. If a class doesn't know how to - or doesn't need to - handle a specific method it will pass it to its parent class and eventually up to rootclass which in turn does nothing with unknown methods except to return zero. This causes absolutely no harm except that some additional CPU cycles are spend to do exactly nothing.

No problem here on AmigaOS3. I suppose compiled Hollywood programs behave exactly like those run by Hollywood "online". Andreas?

Is it possible that your demo archive is missing some stuff? Where is that "AddPage" method defined which you use to add new pages? I cannot find it anywhere. And the MUIM_Group_Init/ExitChange pairs you mentioned before are missing, too.

Honestly, if you want this issue to be fixed then you must supply complete examples and not just half the stuff which omits all the details about which you tell that are not working for you.

Furthermore you are doing an MUIM_Group_InitChange, but no MUIM_Group_ExitChange. These methods must be used in pairs!

There definitely seems to be a difference between a compiled binary and an application run "online" by Hollywood. This difference should be eliminated first. Otherwise the results cannot be compared in any way.

I always forgot to enable the "Hide single tabs" option and hence everything was working perfectly for me. With that option active I also get the effect that the nested title group on the second page becomes visible on the first page after adding a new tab, even on AmigaOS3 and with running the demo "online" with Hollywood.

Title.c: do a full relayout with the "Hide single tabs" option active only if the object is currently visible and not located on a currently invisible page (i.e. nested registers). The layout is still not correct, but at least the object does not become visible on the wrong page. This refs #134.

Title.c: adding a second tab to a currently invisible title object (i.e. on a different nested title object page) with the "Hide single tabs" option no longer redraws that object but only performs the usual setup steps. This closes #134.

Good morning, well I am very thankful that we finally got there in the end! I do recognise and see that you are clearly devoted to MUI and ensuring that bug reports are dealt with swiftly given the strange hours that you come online to review and fix this stuff! I can fully appreciate how the oversight came about. As always, I look forward to a public release later this year.