home *** CD-ROM | disk | FTP | other *** search
- /*
- fnifld.c
-
- % inter_field
-
- This function is used by the standard field functions to facilitate
- movement between fields.
-
- Handling the interfield movement in one place save code space and
- makes it easy to modify the interfield behavior. Simply replace
- inter_field with a new function that performs as desired.
-
- C-scape 3.1
- Copyright (c) 1986, 1987, 1988 by Oakland Group, Inc.
- ALL RIGHTS RESERVED.
-
- Revision History:
- -----------------
- 10/08/88 jmd Added TAB and SHFT_TAB
- 12/15/88 jmd ifdef'd out TAB and SHFT_TAB support
- */
-
- #include <stdio.h>
- #include "cscape.h"
- #include "scancode.h"
-
- boolean inter_field(sed, scancode)
- sed_type sed;
- int scancode;
- /*
- effects: Handles movement between fields.
- ESC sets baton to 0, exits
- ENTER goes to next field if possible
- else sets baton to fieldno, exits
- UP goes to the previous field,
- DOWN goes to the next field,
- * TAB goes to the right field
- * SHFT_TAB goes to the left field
-
- * Note: define the symbol TAB_SUPPORT to enable these keys
-
- returns: TRUE if intercepted a key, FALSE otherwise.
- */
- {
- switch (scancode) {
- case ESC:
- sed_SetBaton(sed, 0);
- sed_ToggleExit(sed);
- return(TRUE);
- case ENTER:
- /* try to go to the next field else exit */
- if (sed_IncField(sed) == SED_STUCK) {
- sed_SetBaton(sed, sed_GetFieldNo(sed)+1);
- sed_ToggleExit(sed);
- }
- return(TRUE);
-
- #ifdef TAB_SUPPORT
- case TAB:
- sed_RightField(sed);
- return(TRUE);
- case SHFT_TAB:
- sed_LeftField(sed);
- return(TRUE);
- #endif
-
- case UP:
- sed_DecField(sed);
- return(TRUE);
- case DOWN:
- sed_IncField(sed);
- return(TRUE);
- default:
- break;
- }
- return(FALSE);
- }
-
-