home *** CD-ROM | disk | FTP | other *** search
/ QBasic & Borland Pascal & C / Delphi5.iso / C / Samples / CSAPE32.ARJ / SOURCE / CSSRC / SDDECFLD.C < prev    next >
C/C++ Source or Header  |  1990-03-28  |  2KB  |  70 lines

  1. /*  
  2.     sddecfld.c
  3.  
  4.     % sed_DecField
  5.  
  6.     C-scape 3.2
  7.     Copyright (c) 1986, 1987, by Oakland Group, Inc.
  8.     ALL RIGHTS RESERVED.
  9.  
  10.     Revision History:
  11.     -----------------
  12.     11/05/86 jmd    converted to boolean    
  13.     11/06/86 jmd    removed references to toggled_in_exit
  14.     11/07/86 jmd    cleaned up the logic
  15.     11/08/86 jmd    added calls to do_funcs
  16.     11/10/86 jmd    added protected mode
  17.     11/18/87 jmd     changed names of some low-level funcs
  18.  
  19.      3/24/89 jmd    added sed_ macros
  20.      5/27/89 jmd    removed unnecessary call to goto_field
  21.  
  22.      3/17/90 jmd    added Cache/Flush
  23.      3/28/90 jmd    ansi-fied
  24. */
  25.  
  26. #include "sed.h"
  27.  
  28. int sed_DecField(sed_type sed)
  29. /*
  30.     modifies:    sed object.
  31.     effects:    tries to go to the previous editing field, without wrapping 
  32.                 around (contingent upon passing the fexit function.)
  33. */
  34. {
  35.     register int    prev_fld;
  36.  
  37.     cs_Assert(sed_Ok(sed), CS_SD_DF_SED, 0);
  38.  
  39.     if (sed_GetFieldNo(sed) <= 0) {
  40.         return(SED_STUCK);
  41.     }
  42.  
  43.     /* find previous unprotected field */
  44.     for (prev_fld = sed_GetFieldNo(sed) - 1; prev_fld >= 0; prev_fld--) {
  45.         if (!menu_IsProtected(sed_GetMenu(sed), prev_fld)) 
  46.             break;
  47.     }
  48.  
  49.     if (prev_fld < 0) {                        /* no unprotected fields found */
  50.         sd_goto_field(sed, sed_GetFieldNo(sed));        /* refresh current field */
  51.         return(SED_STUCK);
  52.     }
  53.  
  54.     if (!sd_exitfield(sed)) {
  55.         return(SED_INVALID);
  56.     }
  57.  
  58.     disp_Cache();
  59.     sd_scroll_adjust(sed, prev_fld);
  60.     sd_goto_field(sed, prev_fld);
  61.     
  62.     if (sed_IsActive(sed)) {
  63.         sed_DoFieldFenter(sed, sed_GetFieldNo(sed));
  64.     }
  65.     disp_Flush();
  66.  
  67.     return(SED_MOVED);
  68. }
  69.  
  70.