diff --git a/form/frm_driver.c b/form/frm_driver.c index b07ca7c..e41bbbd 100644 --- a/form/frm_driver.c +++ b/form/frm_driver.c @@ -841,17 +841,14 @@ _nc_Position_Form_Cursor(FORM *form) field = form->current; formwin = Get_Form_Window(form); - col = Field_Has_Option(field, O_PUBLIC) ? form->curcol : form->begincol; - row = Field_Has_Option(field, O_PUBLIC) ? form->currow : form->toprow; - - wmove(form->w, row, col); + wmove(form->w, form->currow, form->curcol); if (Has_Invisible_Parts(field)) { /* in this case fieldwin isn't derived from formwin, so we have to move the cursor in formwin by hand... */ wmove(formwin, - field->frow + row - form->toprow, - field->fcol + col - form->begincol); + field->frow + form->currow - form->toprow, + field->fcol + form->curcol - form->begincol); wcursyncup(formwin); } else @@ -888,7 +885,7 @@ _nc_Refresh_Current_Field(FORM *form) field = form->current; formwin = Get_Form_Window(form); - if (Field_Has_Option(field, O_PUBLIC)) + const bool is_public = Field_Has_Option(field, O_PUBLIC); { if (Is_Scroll_Field(field)) { @@ -905,6 +902,7 @@ _nc_Refresh_Current_Field(FORM *form) form->begincol = form->curcol - field->cols + (move_after_insert ? 1 : 0); } + if (is_public) copywin(form->w, formwin, 0, @@ -965,7 +963,7 @@ _nc_Refresh_Current_Field(FORM *form) first_modified_row = form->toprow; first_unmodified_row = first_modified_row + field->rows; } - if (first_unmodified_row != first_modified_row) + if (first_unmodified_row != first_modified_row && is_public) copywin(form->w, formwin, first_modified_row, @@ -976,14 +974,14 @@ _nc_Refresh_Current_Field(FORM *form) field->cols + field->fcol - 1, 0); } - wsyncup(formwin); + if (is_public) wsyncup(formwin); } else { /* if the field-window is simply a derived window, i.e. contains no * invisible parts, the whole thing is trivial */ - wsyncup(form->w); + if (is_public) wsyncup(form->w); } } untouchwin(form->w);