This is EndEditingGraphicsChange.m in view mode; [Download] [Up]
#import "drawundo.h"
/*
* This change is created when the user finishes editing a text
* graphic. Undoing this change inserts the re-inserts the text
* editing cursor in the text. More significantly, undoing this
* change swaps the contents of the TextGraphic back into the
* field editor so that it is ready to edit.
*/
@interface EndEditingGraphicsChange(PrivateMethods)
@end
@implementation EndEditingGraphicsChange
- initGraphicView:aGraphicView graphic:aGraphic
{
[super init];
graphicView = aGraphicView;
graphic = aGraphic;
return self;
}
- free
{
if ([self hasBeenDone] && [graphic isEmpty])
[graphic free];
return [super free];
}
- (const char *)changeName
{
return NXLocalStringFromTable("Operations", "End Editing", NULL, "The operation of ending the editing process and proceding onto some other operation.");
}
- undoChange
{
if ([graphic isEmpty])
[graphicView insertGraphic:graphic];
[graphic prepareFieldEditor];
[NXApp startEditMode];
return [super undoChange];
}
- redoChange
{
/*
* The order of the next two statements is important.
* If endEditMode were sent before resignFieldEditor
* it would send resetCursor to the document which would
* make the window the first responder which would end
* up sending textDidEnd:endChar: to the TextGraphic.
* Then in the next line we'd send resignFieldEditor to
* the TextGraphic even though it had already resigned
* the field editor.
*/
[graphic resignFieldEditor];
[NXApp endEditMode];
if ([graphic isEmpty])
[graphicView removeGraphic:graphic];
return [super redoChange];
}
@end
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.