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

  1. /*
  2.     sdpushrt.c
  3.  
  4.     % sed_PushRight
  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/06/86 jmd    Now returns the edge character.  This will have to be 
  13.                     changed when "string too short" is fixed. 
  14.     11/12/86 sng    Now handles variable-length fields.
  15.     11/18/87 jmd     changed names of some low-level funcs
  16.      5/11/88 jmd     moved work to field_PushRight
  17.  
  18.      3/24/89 jmd    added sed_ macros
  19.  
  20.      3/28/90 jmd    ansi-fied
  21. */
  22.  
  23. #include "sed.h"
  24. #include "fldpriv.h"
  25.  
  26. char sed_PushRight(sed_type sed, int scancode)
  27. /*
  28.     modifies:   the sed.
  29.     effects:    inserts the scancode at the current position, pushes the
  30.                    characters to the right:
  31.                 |hllo mom    x|
  32.                   ^  sed_PushRight(sed, 'e');
  33.                 |hello mom    |        ----> return('x');
  34.                   ^
  35.     returns:    the character that falls off the edge.  If the cursor is over
  36.                  empty space, return '\0'.
  37. */
  38. {
  39.     char edge_char;
  40.  
  41.     cs_Assert(sed_Ok(sed), CS_SD_PSHR_SED, 0);
  42.  
  43.     edge_char = menu_PushRight(sed_GetMenu(sed), sed_GetFieldNo(sed), sed_GetRecordPos(sed), (char) scancode);
  44.  
  45.     /* If the cursor is past the last character just paint it */
  46.     if (sed_GetRecordPos(sed) >= strlen(menu_GetFieldRecord(sed_GetMenu(sed), sed_GetFieldNo(sed)))) {
  47.         sd_overwrite(sed);
  48.     }
  49.     else {
  50.         sd_refresh_field(sed, sed_GetFieldNo(sed));
  51.     }
  52.  
  53.     return(edge_char);
  54. }
  55.