* Don't allow inserting a custom change during a transaction
* Don't end a transaction when a Goto happens because of a paste-script directive ( @{ or @} ).
ViewPort should have IWorkDispatcher as a constructor paramater, not an .Edit parameter. Optional parameters that make the program act different between test mode and real mode are bad.
For the same reason, this should be a required parameter. But changing the constructor of ViewPort is hard, since so many tests use it. This is an initial refactor to make less tests use the constructor directly.
Previously, the command would error unless you're in freespace. This doesn't quite match how it needs to work.
* If a user tries to copy a table and then paste it over the same table in another rom, that should work. So table pasting should go ahead and clear the data and not error, even if it's not freespace.
* If a user tries to clear out a run with the intention of writing over it, all 00's may not be valid. If the length matches exactly, don't error and don't clear. Just nop.
Tuple autocomplete is weird, because it happens in stages. This is different compared to other things, where choosing autocomplete always finishes the cell.
Using this in the tests, it becomes clear that the autocomplete really just wants to expose a new line to replace the input line. Update the IStreamRun interface to match.
* fix a context menu test that broke when I refactor the "Add New" option in the context menu
* implement autocomplete options for single element streams
The HexContent doesn't need to create a whole UI-that-watches-ViewModel-for-changes when all it wants is the bitmap source. Introduce a new lighter-weight method that doesn't do all the property changed registering so that we don't have the viewmodel hold on to countless view objects here.
Clover does some dirty things with the type names to add Fairy type, which makes the type map too long and it overlaps the type chart. I'm ok with this failing: it's clover's fault.
copy for a type chart needs to not only copy the data, but the format of the data needed for pasting.
This is already the case, almost: we copy the table format for the stream table. However, adding the stream table won't work correctly unless we also paste the end token. Otherwise the initial length of the stream table will be wrong.
Update existing tests that use the !00 metacommand: the !00 metacommand should only change the data if the data is unused, and should only cause the model to stop the edit if the data is used.
Don't adjust the selection after a double-click-follow-link operation. Only adjust the selection after a double-click-select operation.
Inner Pointers were not previously correctly tracked during cut/paste operations. There needed to be some way to say that an address was attached not only to a name that does not exist, but to a specific index of such an array. The answer is to store the array offset in the bytes that are left behind, since the value of those bytes does not matter.