home *** CD-ROM | disk | FTP | other *** search
-
- /*
- * editmenu.c -- handle selection of an item in the edit menu
- */
-
- #include <quickdraw.h>
- #include <desk.h>
- #include <osutil.h>
- #include <scrap.h>
- #include <textedit.h>
- #include <window.h>
-
- #include "def.h"
-
- void
- editmenu(item)
- {
- extern TEHandle hTE;
- extern short lastTE; /* previous TE command for UNDO */
- extern long lastTEstart;
- extern long lastTEend;
- short myscr;
- extern short scrap; /* count of desk top scrap */
- extern void teadjdest();
- extern WindowPtr wp[NWINDOWS];
-
- myscr = scrap;
- if (SystemEdit(item - 1)) {
- if (scrap != myscr)
- lastTE = 0;
- return;
- };
- if (wp[1] == FrontWindow() && hTE) {
- switch(item - 1) {
- case undoCmd:
- switch(lastTE) {
- case cutCmd:
- TESetSelect(lastTEstart, lastTEstart, hTE);
- TEPaste(hTE);
- TESetSelect(lastTEstart, lastTEend, hTE);
- lastTE = pasteCmd;
- break;
- case pasteCmd:
- TESetSelect(lastTEstart, lastTEend, hTE);
- TECut(hTE);
- lastTE = cutCmd;
- break;
- default:
- SysBeep(1);
- break;
- };
- break;
- case cutCmd:
- lastTEstart = (*hTE)->selStart;
- lastTEend = (*hTE)->selEnd;
- TECut(hTE);
- ZeroScrap();
- TEToScrap();
- scrap = InfoScrap()->scrapCount;
- break;
- case copyCmd:
- TECopy(hTE);
- ZeroScrap();
- TEToScrap();
- scrap = InfoScrap()->scrapCount;
- break;
- case pasteCmd:
- lastTEstart = (*hTE)->selStart;
- lastTEend = lastTEstart + TEGetScrpLen();
- TEPaste(hTE);
- break;
- case clearCmd:
- TEDelete(hTE);
- break;
- };
- if ((item - 1) != undoCmd)
- lastTE = item - 1;
- if ((item - 1) != copyCmd)
- teadjdest();
- };
- } /* end of editmenu */
-