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

  1. /*
  2.     sdlstfld.c    11/10/86
  3.  
  4.     % sed_GotoLastField
  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/18/87 jmd     changed names of some low-level funcs
  13.      4/08/88 jmd     changed sed->fieldcount to sed_GetFieldCount()
  14.  
  15.      3/24/89 jmd    added sed_ macros
  16.      9/01/89 jmd    removed menu variable to avoid Microsoft compiler bug
  17.  
  18.      3/17/90 jmd    added Cache/Flush
  19.      3/28/90 jmd    ansi-fied
  20. */
  21.  
  22. #include "sed.h"
  23.  
  24. int sed_GotoLastField(sed_type sed)
  25. /*
  26.     modifies:    sed object.
  27.     effects:    tries to go to the last unprotected editing field
  28.                 (contingent upon passing the fexit test).  
  29.                 If the sed is active, call the fenter and fexit functions.
  30. */
  31. {
  32.     register    int    last_fld;
  33.  
  34.     cs_Assert(sed_Ok(sed), CS_SD_GLF_SED, 0);
  35.  
  36.     /* find next unprotected field */
  37.     for (last_fld = menu_GetFieldCount(sed_GetMenu(sed)) - 1; last_fld >= 0; last_fld--) {
  38.         if (!menu_IsProtected(sed_GetMenu(sed), last_fld)) {
  39.             break;
  40.         }
  41.     }
  42.  
  43.     if (last_fld < 0) {            /* no unprotected fields found */
  44.         return(SED_STUCK);
  45.     }
  46.  
  47.     if (!sd_exitfield(sed)) {
  48.         return(SED_INVALID);
  49.     }
  50.  
  51.     disp_Cache();
  52.     sd_scroll_adjust(sed, last_fld);
  53.     sd_goto_field(sed, last_fld);
  54.         
  55.     if (sed_IsActive(sed)) {
  56.         sed_DoFieldFenter(sed, sed_GetFieldNo(sed));
  57.     }
  58.     disp_Flush();
  59.  
  60.     return(SED_MOVED);
  61. }
  62.