I have a window with an NSTextView.  If I edit the text normally, even
adding a single character, it behaves properly,  I can save, close, reopen,
and the change is present.  If I close after edit, it asks to save, like it
is supposed to.  However, if I programmatically insert an attachment (with
undo/redo invocations) to the NSTextStorage, e.g., an icon, manually save,
close, reopen, -- it is not there.  If I insert the attachment and close, it
does ask to save, but again, reopening does not show it.  However, this
indicates that the change count is getting properly updated.  If I insert
the attachment, then add a character elsewhere, then save/close, or
close/tell-to-save, both the attachment and the edit are present on reopen.

    Since I'm making the change to the text storage, and it shows up
correctly in the view, I don't understand how "save" misses the change when
it streams it to data.

    Am I missing something here?  Is there something else I need to do to
make programmatic attachment insertions work properly?

    Because the attachment edit is done programmatically, is there something
akin to "end edit" I need to call to make this take?  I tried bracketing the
insertion with beginedit/endedit to no avail. I tried the following after
inserting, where "string" is the attachment character and attributes, but
that didn't help either.

    [store insertAttributedString:string atIndex:index];
    NSRange range = NSMakeRange(index, 0);
    [store edited:NSTextStorageEditedAttributes |
NSTextStorageEditedCharacters range:range changeInLength:[string length]];


Additional info:

The NSTextView (tv) is created programmatically and has binding as follows:

    //    Set binding to update continuously.  Otherwise, edits won't be
saved.
    NSDictionary* options = [NSDictionary dictionaryWithObject:[NSNumber
numberWithBool:YES] forKey:NSContinuouslyUpdatesValueBindingOption];

    [tv bind:@"attributedString" toObject:ddController
withKeyPath:@"shot.prompterText" options:options];

The local storage in the "shot" object is:

@property(assign) NSTextStorage* prompterText;  // Actually stored in a
Dictionary.


_______________________________________________

Cocoa-dev mailing list (Cocoa-dev@lists.apple.com)

Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com

Help/Unsubscribe/Update your Subscription:
http://lists.apple.com/mailman/options/cocoa-dev/archive%40mail-archive.com

This email sent to arch...@mail-archive.com

Reply via email to