RE: the “purge/save/cancel” thing. I see this exactly twice whenever I build a standalone for a particular project. Even in a new session, if the first thing I do is build a standalone from the splash stack, I will twice get a dialog during the process asking me the three questions. I always “purge”, and always everything works out fine.
But the only stack I open in that new session is the splash stack itself, running the build directly from there. The splash stack opens a mainStack in normal operation, and this may have something to do with the presentation of the dialog. Craig > On Oct 7, 2021, at 9:40 AM, Mark Waddingham via use-livecode > <use-livecode@lists.runrev.com> wrote: > > On 2021-10-06 22:30, Mark Wieder via use-livecode wrote: >> That's what I do as well. Kill, then go do something else for a bit. >> Reading the code that invokes this dialog (the reloadstack handler in >> revbackscriptlibrary.livecodescript) isn't much help. It's only the >> IDE that can't handle this, not the engine. >> This would all be moot if the IDE used the long id of the stack >> instead of just the short name of the stack, but that would require >> work. > > That isn't true - the problem is a lot deeper than that. > > Most 'stack' related engine syntax works with the short name of stacks e.g. > defaultStack, topStack, stackFiles. > > The IDE is built using the engine, so has to work within the limitations the > engine has. > > Internally the engine references stacks by 'weak handles' (basically pointers > which 'know' when the thing they are pointing at has been deleted) - it does > not use names... However the way stacks are referenced by script (as > mentioned above) do use the short name - to keep things simple. > > Of course it would be possible to add new syntax and such - and it would be > possible to update the IDE to use it (and thus the 'irksome' dialog could be > removed). > > However, the reality is that, that endeavour (which would be a very large > amount of work) would only shift the problem - onto users themselves. > > If user code did not use the new syntax, then chances are they would end up > causing really hard to track down issues in their own code due to having two > stacks with the same name. This is regardless of whatever resolution order > was chosen to resolve conflicts - unless user code also uses unique stack > references, there is no choice which would not stop problems from happening. > > I'd like to point out that this is not me copping out here - it is merely > pointing out that simplicity does come with restrictions - and as it stands, > one of these restrictions (with livecode) is uniquely named stacks. > > I'd further point out that 'critical things having unique name' isn't that > rare. For example, you can't have two files with the same name in a folder > for example (even though on UNIX systems, every file has an internal unique > integer id - the inode number) and you can't have two handlers, variables, > methods, types (or any named thing) with the same name (in the same > namespace) in any language that I know of. > > So, may I suggest, the problem to solve is to figure out why the dialog which > spawned this thread does not work correctly in some circumstances? > > I say some circumstances, because it does work precisely as advertised in a > (fresh) IDE after it has been started: > > 1) Create a stack "Foo" - save it as "FooEmpty.livecode" and remove from > memory > 2) Create another stack "Foo" - place a button on it and save it as > "FooButton.livecode" > 3) Load FooEmpty.livecode from the menu - ask to Purge. FooEmpty appears > (and FooButton goes) > 4) Add a tab control to FooEmpty. > 5) Load FooButton.livecode from the menu - ask to Save, FooEmpty is saved > and FooButton appears. > 6) Load FooEmpty.livecode from the menu - ask to Purge, FooEmpty appears > (now with tab control) and FooButton has gone. > > The correct behavior of that dialog is precisely what you would expect from > the button names: > > 1) Cancel - the loading of the new stack does not happen. > 2) Purge - the existing stack of the same name is removed from memory > without saving first, and the new stack is loaded. > 3) Save - the existing stack of the same name is saved and then removed from > memory, and the new stack is loaded. > > The effect observed (the looping) could be an interaction with a component in > the IDE (which somehow causes the stack which should be being removed to be > reloaded), or it could be some code pattern in user stacks which cause much > the same problem. In the former case, we need to fix the IDE to be 'purge > safe in this case', in the latter case we need to understand the pattern so > that we can change the mechanism to not be affected by it. > > Warmest Regards, > > Mark. > > -- > Mark Waddingham ~ m...@livecode.com ~ http://www.livecode.com/ > LiveCode: Everyone can create apps > > _______________________________________________ > use-livecode mailing list > use-livecode@lists.runrev.com > Please visit this url to subscribe, unsubscribe and manage your subscription > preferences: > http://lists.runrev.com/mailman/listinfo/use-livecode _______________________________________________ use-livecode mailing list use-livecode@lists.runrev.com Please visit this url to subscribe, unsubscribe and manage your subscription preferences: http://lists.runrev.com/mailman/listinfo/use-livecode