http://www.newton-inc.com/dev/techinfo/qa/qa.htmFrameDirty see changes to nested frames?FrameDirty is fooled by changes to bytes within binary objects. Since strings are implemented as binary objects, this means that FrameDirty will not see changes to individual characters in a string. Since clParagraphViews try (as much as possible) to work by manipulating the characters in the string rather than by creating a new string, this means that FrameDirty can be easily fooled by normal editing of string data.s := GetStores()[0]:CreateSoup("Test:DTS", []);
e := s:Add({slot: 'value, string: "A test entry", nested: {slot: 'notherValue}})
#4410B69 {slot: value,
String: "A test entry",
nested: {slot: notherValue},
_uniqueID: 0}
FrameDirty(e)
#2 NIL
e.string[0] := $a; // modify the string w/out changing its reference
FrameDirty(e)
#2 NIL
EntryChange(e);
e.string := "A new string"; // change the string reference
FrameDirty(e)
#1A TRUE
EntryChange(e);
e.nested.slot := 'newValue; // nested change, FrameDirty is deep.
FrameDirty(e)
#1A TRUE
s:RemoveFromStore() // cleanup.