X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=test%2Fedit_field.c;h=8a664e8ca9a47c84c1fd5a562d04dab9d6403c09;hp=d4fa7f765c851d8ecc944e84c482a0d0412924c4;hb=da5e7c6148aa378da9d8da09be73e0ddd3995c6f;hpb=55ccd2b959766810cf7db8d1c4462f338ce0afc8 diff --git a/test/edit_field.c b/test/edit_field.c index d4fa7f76..8a664e8c 100644 --- a/test/edit_field.c +++ b/test/edit_field.c @@ -1,5 +1,32 @@ +/**************************************************************************** + * Copyright (c) 2003-2008,2011 Free Software Foundation, Inc. * + * * + * Permission is hereby granted, free of charge, to any person obtaining a * + * copy of this software and associated documentation files (the * + * "Software"), to deal in the Software without restriction, including * + * without limitation the rights to use, copy, modify, merge, publish, * + * distribute, distribute with modifications, sublicense, and/or sell * + * copies of the Software, and to permit persons to whom the Software is * + * furnished to do so, subject to the following conditions: * + * * + * The above copyright notice and this permission notice shall be included * + * in all copies or substantial portions of the Software. * + * * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF * + * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. * + * IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, * + * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR * + * OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR * + * THE USE OR OTHER DEALINGS IN THE SOFTWARE. * + * * + * Except as contained in this notice, the name(s) of the above copyright * + * holders shall not be used in advertising or otherwise to promote the * + * sale, use or other dealings in this Software without prior written * + * authorization. * + ****************************************************************************/ /* - * $Id: edit_field.c,v 1.11 2005/10/01 16:21:55 tom Exp $ + * $Id: edit_field.c,v 1.17 2011/01/15 18:15:11 tom Exp $ * * A wrapper for form_driver() which keeps track of the user's editing changes * for each field, and makes the result available as a null-terminated string @@ -261,7 +288,17 @@ static int offset_in_field(FORM * form) { FIELD *field = current_field(form); - return form->curcol + form->currow * field->dcols; + int currow, curcol; + + form_getyx(form, currow, curcol); + return curcol + currow * field->dcols; +} + +static void +inactive_field(FIELD * f) +{ + FieldAttrs *ptr = (FieldAttrs *) field_userptr(f); + set_field_back(f, ptr->background); } int @@ -270,21 +307,21 @@ edit_field(FORM * form, int *result) int ch = wgetch(form_win(form)); int status; FIELD *before; - FIELD *after; unsigned n; char lengths[80]; int length; char *buffer; - int before_row = form->currow; - int before_col = form->curcol; + int before_row; + int before_col; int before_off = offset_in_field(form); + form_getyx(form, before_row, before_col); before = current_field(form); set_field_back(before, A_NORMAL); if (ch <= KEY_MAX) { set_field_back(before, A_REVERSE); } else if (ch <= MAX_FORM_COMMAND) { - set_field_back(before, A_UNDERLINE); + inactive_field(before); } *result = ch; @@ -412,8 +449,8 @@ edit_field(FORM * form, int *result) set_field_buffer(before, 1, lengths); } - if ((after = current_field(form)) != before) - set_field_back(before, A_UNDERLINE); + if (current_field(form) != before) + inactive_field(before); return status; } #else