Correzione alla gestione della force_update

git-svn-id: svn://10.65.10.50/trunk@1896 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1995-09-26 11:47:07 +00:00
parent 3aa7260c7d
commit 6addcbeceb
2 changed files with 26 additions and 21 deletions

View File

@ -1147,9 +1147,10 @@ void TList_sheet::do_output(CheckTime t)
{ {
const short id = _fld->atodlg(fld); const short id = _fld->atodlg(fld);
TMask_field& f = field(id); TMask_field& f = field(id);
const char* val = rowsel.get();
if (t != STARTING_CHECK || f.field() == NULL) if (t != STARTING_CHECK || f.field() == NULL)
{ {
f.set(rowsel.get()); f.set(val);
if (field().dlg() != id) if (field().dlg() != id)
f.on_hit(); f.on_hit();
} }

View File

@ -508,7 +508,7 @@ void TSpreadsheet::update_rec(int rec)
XI_OBJ row; XI_OBJ row;
XI_MAKE_ROW(&row, _list, riga); XI_MAKE_ROW(&row, _list, riga);
xi_cell_request(&row); // Update internal values xi_cell_request(&row); // Update internal values
if (rec == selected()/* && _cur_col > 0*/) if (rec == selected())
set_focus_cell(riga, _cur_col); set_focus_cell(riga, _cur_col);
} }
} }
@ -531,7 +531,7 @@ void TSpreadsheet::set_focus_cell(int riga, int colonna)
XI_MAKE_CELL(&cell, _list, riga, colonna); XI_MAKE_CELL(&cell, _list, riga, colonna);
xi_set_focus(&cell); xi_set_focus(&cell);
if (_edit_field == NULL) if (_edit_field == NULL || r == _cur_rec)
{ {
_cur_row = riga; _cur_row = riga;
_cur_col = colonna; _cur_col = colonna;
@ -853,27 +853,31 @@ void TSpreadsheet::list_handler(XI_EVENT *xiev)
} }
break; break;
case XIE_OFF_ROW: case XIE_OFF_ROW:
if (_row_dirty && _check_enabled) if (_check_enabled)
{ {
_check_enabled = FALSE; // Avoid recursion! _check_enabled = FALSE; // Avoid recursion!
bool ok = sheet_mask().check_fields(); if (_row_dirty)
if (ok) {
{ TMask_field* old = _edit_field; // Save current field
mask2str(_cur_rec); // Update sheet with mask contents _edit_field = NULL; // Reset current field
ok = notify(_cur_rec, K_ENTER); // Notify edit bool ok = sheet_mask().check_fields();
} if (ok)
if (ok) {
{ mask2str(_cur_rec); // Update sheet with mask contents
xvt_statbar_refresh(); ok = notify(_cur_rec, K_ENTER); // Notify edit
_edit_field = NULL; // Reset current field }
if (ok)
xvt_statbar_refresh();
else
{
_edit_field = old; // Restore currrent field
xiev->refused = TRUE;
}
} }
else // Notifica l'abbandono della riga
xiev->refused = TRUE; notify(_cur_rec, K_CTRL+K_TAB);
_check_enabled = TRUE; _check_enabled = TRUE;
} }
// Notifica l'abbandono della riga
notify( _cur_rec, K_CTRL + K_TAB );
break; break;
case XIE_ON_CELL: case XIE_ON_CELL:
if (_check_enabled) if (_check_enabled)