Correzione errori dirty

git-svn-id: svn://10.65.10.50/trunk@609 c028cbd2-c16b-5b4b-a496-9718f37d4682
This commit is contained in:
guy 1994-11-14 10:00:06 +00:00
parent 26384cd733
commit c0b436abe6
5 changed files with 40 additions and 12 deletions

View File

@ -97,13 +97,14 @@ TBanner::TBanner()
{
create(-1, 6, 72, 6, "BANNER", WSF_NONE, W_PLAIN);
hide_brush();
open_modal();
open();
do_events();
}
TBanner::~TBanner()
{
close_modal();
{
if (is_open())
close();
}
void TBanner::handler(WINDOW win, EVENT* ep)

View File

@ -483,8 +483,8 @@ void TMask::get_mask_fields()
{
const char* fd = f.get_field_data();
CHECK(fd, "NULL pointer comparison");
if (window_data != fd)
f.set_dirty(window_data != fd);
if (window_data == fd)
f.set_dirty(FALSE);
}
f.set_field_data(window_data);
}
@ -756,9 +756,12 @@ bool TMask::on_key(KEY key)
TMask_field& f = fld(i);
if (f.class_id() != CLASS_BUTTON_FIELD || !f.active()) continue;
TButton_field& b = (TButton_field&)f;
if (b.virtual_key() == key && test_focus_change())
if (b.virtual_key() == key)
{
f.on_key(K_SPACE);
bool ok = b.dlg() != DLG_CANCEL && b.dlg() != DLG_QUIT && b.dlg() != DLG_F9;
if (!ok) ok = test_focus_change(b.win());
if (ok)
f.on_key(K_SPACE);
break;
}
}

View File

@ -1,4 +1,4 @@
// $Id: maskfld.cpp,v 1.44 1994-11-11 18:04:13 guy Exp $
// $Id: maskfld.cpp,v 1.45 1994-11-14 09:59:59 guy Exp $
#include <xvt.h>
#include <applicat.h>
@ -68,9 +68,11 @@ char TMask_field::TField_Flags::update(const char* s)
exchange = TRUE; break;
case 'Z':
zerofilled = TRUE; break;
default :
#ifdef DBG
default : ::warning_box("FLAG sconosciuto in %s: %c", kk, *s); break;
yesnofatal_box("FLAG sconosciuto in %s: %c", kk, *s);
#endif
break;
}
return *s;
}
@ -370,6 +372,23 @@ word TMask_field::last_key() const
return (word)u;
}
void TMask_field::set_dirty(bool d)
{
#ifdef DBG
if (_flags.dirty == 3)
{
if (d == 0)
{
error_box("Can't reset dirty flag of a bad field: %d", dlg());
return;
}
}
#endif
_flags.dirty = d;
set_focusdirty(d);
}
// Certified 99%
const char* TMask_field::get_window_data() const

View File

@ -1,4 +1,4 @@
/* $Id: maskfld.h,v 1.7 1994-11-07 13:51:00 guy Exp $ */
/* $Id: maskfld.h,v 1.8 1994-11-14 10:00:04 guy Exp $ */
#ifndef __MASKFLD_H
#define __MASKFLD_H
@ -121,7 +121,7 @@ public:
bool dirty() const { return _flags.dirty; }
bool focusdirty() const { return _flags.focusdirty; }
void set_focusdirty(bool d = TRUE) { _flags.focusdirty = d; }
void set_dirty(bool d = TRUE) { _flags.dirty = d; set_focusdirty(d); }
void set_dirty(bool d = TRUE);
virtual const char* class_name() const;
virtual word class_id() const;

View File

@ -1,4 +1,4 @@
// $Id: relapp.cpp,v 1.25 1994-11-08 16:50:58 guy Exp $
// $Id: relapp.cpp,v 1.26 1994-11-14 10:00:06 guy Exp $
#include <mailbox.h>
#include <sheet.h>
#include <urldefid.h>
@ -553,6 +553,11 @@ bool TRelation_application::save(bool check_dirty)
return TRUE;
}
if (_mask->field(dirty).dirty() > TRUE) // C'e' un campo errato
{
was_dirty = TRUE;
return FALSE;
}
const KEY k = yesnocancel_box(mode == MODE_MOD ? "Registrare le modifiche?"
: "Registrare i dati inseriti?");
if (k == K_ESC)