http://www.newton-inc.com/dev/techinfo/qa/qa.htm
FrameDirty
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.