|
|
1.1 root 1: #import "drawundo.h"
2:
3: /*
4: * This change is created when the user finishes editing a text
5: * graphic. Undoing this change inserts the re-inserts the text
6: * editing cursor in the text. More significantly, undoing this
7: * change swaps the contents of the TextGraphic back into the
8: * field editor so that it is ready to edit.
9: */
10:
11: @interface EndEditingGraphicsChange(PrivateMethods)
12:
13: @end
14:
15: @implementation EndEditingGraphicsChange
16:
17: - initGraphicView:aGraphicView graphic:aGraphic
18: {
19: [super init];
20: graphicView = aGraphicView;
21: graphic = aGraphic;
22:
23: return self;
24: }
25:
26: - free
27: {
28: if ([self hasBeenDone] && [graphic isEmpty])
29: [graphic free];
30: return [super free];
31: }
32:
33: - (const char *)changeName
34: {
35: return NXLocalStringFromTable("Operations", "End Editing", NULL, "The operation of ending the editing process and proceding onto some other operation.");
36: }
37:
38: - undoChange
39: {
40: if ([graphic isEmpty])
41: [graphicView insertGraphic:graphic];
42: [graphic prepareFieldEditor];
43: [NXApp startEditMode];
44: return [super undoChange];
45: }
46:
47: - redoChange
48: {
49: /*
50: * The order of the next two statements is important.
51: * If endEditMode were sent before resignFieldEditor
52: * it would send resetCursor to the document which would
53: * make the window the first responder which would end
54: * up sending textDidEnd:endChar: to the TextGraphic.
55: * Then in the next line we'd send resignFieldEditor to
56: * the TextGraphic even though it had already resigned
57: * the field editor.
58: */
59: [graphic resignFieldEditor];
60: [NXApp endEditMode];
61: if ([graphic isEmpty])
62: [graphicView removeGraphic:graphic];
63: return [super redoChange];
64: }
65:
66: @end
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.