Continua la saga del dirty flag
git-svn-id: svn://10.65.10.50/trunk@620 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
parent
fd2976e280
commit
6964384386
@ -135,7 +135,6 @@ void TMask::handler(WINDOW win, EVENT* ep)
|
|||||||
{
|
{
|
||||||
case DLG_OK:
|
case DLG_OK:
|
||||||
if (test_focus_change()) stop_run(K_AUTO_ENTER); break;
|
if (test_focus_change()) stop_run(K_AUTO_ENTER); break;
|
||||||
case DLG_BAR :
|
|
||||||
case DLG_CANCEL :
|
case DLG_CANCEL :
|
||||||
stop_run(K_ESC); break;
|
stop_run(K_ESC); break;
|
||||||
case DLG_QUIT :
|
case DLG_QUIT :
|
||||||
@ -322,8 +321,13 @@ int TMask::first_focus(short id)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if (id > 0) _first_focus = id2pos(id);
|
if (id > 0)
|
||||||
else tempfirstfocus = id2pos(-id);
|
{
|
||||||
|
_first_focus = id2pos(id);
|
||||||
|
tempfirstfocus = 0;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
tempfirstfocus = id2pos(-id);
|
||||||
}
|
}
|
||||||
|
|
||||||
return f;
|
return f;
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: maskfld.cpp,v 1.45 1994-11-14 09:59:59 guy Exp $
|
// $Id: maskfld.cpp,v 1.46 1994-11-14 13:22:38 guy Exp $
|
||||||
#include <xvt.h>
|
#include <xvt.h>
|
||||||
|
|
||||||
#include <applicat.h>
|
#include <applicat.h>
|
||||||
@ -374,16 +374,8 @@ word TMask_field::last_key() const
|
|||||||
|
|
||||||
void TMask_field::set_dirty(bool d)
|
void TMask_field::set_dirty(bool d)
|
||||||
{
|
{
|
||||||
#ifdef DBG
|
if (_flags.dirty > TRUE && d == FALSE)
|
||||||
if (_flags.dirty == 3)
|
return;
|
||||||
{
|
|
||||||
if (d == 0)
|
|
||||||
{
|
|
||||||
error_box("Can't reset dirty flag of a bad field: %d", dlg());
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
_flags.dirty = d;
|
_flags.dirty = d;
|
||||||
set_focusdirty(d);
|
set_focusdirty(d);
|
||||||
}
|
}
|
||||||
|
@ -955,14 +955,19 @@ void TSpreadsheet::str2mask(int riga)
|
|||||||
f.set(val);
|
f.set(val);
|
||||||
f.enable(!cell_disabled(riga, id-FIRST_FIELD));
|
f.enable(!cell_disabled(riga, id-FIRST_FIELD));
|
||||||
|
|
||||||
if (f.active() || f.ghost())
|
if (f.dirty() <= TRUE)
|
||||||
{
|
{
|
||||||
if (f.has_check()) f.check(STARTING_CHECK);
|
if (f.active() || f.ghost())
|
||||||
|
{
|
||||||
|
if (f.has_check()) f.check(STARTING_CHECK);
|
||||||
|
f.set_dirty(FALSE);
|
||||||
|
f.on_hit();
|
||||||
|
}
|
||||||
f.set_dirty(FALSE);
|
f.set_dirty(FALSE);
|
||||||
f.on_hit();
|
|
||||||
}
|
}
|
||||||
f.set_dirty(FALSE);
|
else
|
||||||
|
_mask.first_focus(-rid);
|
||||||
|
|
||||||
rid += 100;
|
rid += 100;
|
||||||
pos = _mask.id2pos(rid);
|
pos = _mask.id2pos(rid);
|
||||||
}
|
}
|
||||||
@ -1178,11 +1183,17 @@ bool TSheet_field::on_hit()
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool TSheet_field::on_key(KEY k)
|
bool TSheet_field::on_key(KEY k)
|
||||||
{
|
{
|
||||||
if (k == K_TAB || k == K_ENTER)
|
if (k == K_TAB || k == K_ENTER)
|
||||||
{
|
{
|
||||||
if (dirty() > TRUE)
|
if (dirty() > TRUE)
|
||||||
return FALSE; // Lo sheet e' inconsistente
|
return FALSE;
|
||||||
|
if (k == K_ENTER && dirty())
|
||||||
|
{
|
||||||
|
_sheet->str2mask(selected());
|
||||||
|
const bool ok = sheet_mask().check_fields();
|
||||||
|
if (!ok) return FALSE;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return TMask_field::on_key(k);
|
return TMask_field::on_key(k);
|
||||||
|
@ -1 +1 @@
|
|||||||
#define VERSION 1.15
|
#define VERSION 1.16
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
// $Id: relapp.cpp,v 1.26 1994-11-14 10:00:06 guy Exp $
|
// $Id: relapp.cpp,v 1.27 1994-11-14 13:22:46 guy Exp $
|
||||||
#include <mailbox.h>
|
#include <mailbox.h>
|
||||||
#include <sheet.h>
|
#include <sheet.h>
|
||||||
#include <urldefid.h>
|
#include <urldefid.h>
|
||||||
@ -536,10 +536,12 @@ bool TRelation_application::save(bool check_dirty)
|
|||||||
|
|
||||||
if (check_dirty)
|
if (check_dirty)
|
||||||
{
|
{
|
||||||
|
const char* ms = (mode == MODE_MOD) ? "le modifiche" : "i dati inseriti";
|
||||||
|
|
||||||
const int dirty = _mask->dirty();
|
const int dirty = _mask->dirty();
|
||||||
if (mode == MODE_QUERY)
|
if (mode == MODE_QUERY)
|
||||||
{
|
{
|
||||||
const bool cont = !dirty || yesno_box("Annullare i dati inseriti?");
|
const bool cont = !dirty || yesno_box("Annullare %s?", ms);
|
||||||
return cont;
|
return cont;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -553,13 +555,19 @@ bool TRelation_application::save(bool check_dirty)
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (_mask->field(dirty).dirty() > TRUE) // C'e' un campo errato
|
const KEY last = _mask->last_key();
|
||||||
|
const bool annulla = last == K_ESC || last == K_QUIT || last == K_F9;
|
||||||
|
const bool errore = dirty && _mask->field(dirty).dirty() > TRUE;
|
||||||
|
|
||||||
|
KEY k;
|
||||||
|
if (errore)
|
||||||
{
|
{
|
||||||
was_dirty = TRUE;
|
if (annulla) k = yesno_box("Annullare %s?", ms);
|
||||||
return FALSE;
|
else k = K_ESC;
|
||||||
}
|
}
|
||||||
const KEY k = yesnocancel_box(mode == MODE_MOD ? "Registrare le modifiche?"
|
else
|
||||||
: "Registrare i dati inseriti?");
|
k = yesnocancel_box("Registrare %s?", ms);
|
||||||
|
|
||||||
if (k == K_ESC)
|
if (k == K_ESC)
|
||||||
{
|
{
|
||||||
was_dirty = TRUE;
|
was_dirty = TRUE;
|
||||||
@ -572,9 +580,8 @@ bool TRelation_application::save(bool check_dirty)
|
|||||||
was_dirty = FALSE;
|
was_dirty = FALSE;
|
||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
const KEY last = _mask->last_key();
|
|
||||||
|
|
||||||
if (last == K_ESC || last == K_QUIT || last == K_F9)
|
if (annulla)
|
||||||
{
|
{
|
||||||
if (!_mask->check_fields()) // Exit with ESC didn't check values
|
if (!_mask->check_fields()) // Exit with ESC didn't check values
|
||||||
{
|
{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user