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);
TMask_field& f = field(id);
const char* val = rowsel.get();
if (t != STARTING_CHECK || f.field() == NULL)
{
f.set(rowsel.get());
f.set(val);
if (field().dlg() != id)
f.on_hit();
}

View File

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