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); create(-1, 6, 72, 6, "BANNER", WSF_NONE, W_PLAIN);
hide_brush(); hide_brush();
open_modal(); open();
do_events(); do_events();
} }
TBanner::~TBanner() TBanner::~TBanner()
{ {
close_modal(); if (is_open())
close();
} }
void TBanner::handler(WINDOW win, EVENT* ep) 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(); const char* fd = f.get_field_data();
CHECK(fd, "NULL pointer comparison"); CHECK(fd, "NULL pointer comparison");
if (window_data != fd) if (window_data == fd)
f.set_dirty(window_data != fd); f.set_dirty(FALSE);
} }
f.set_field_data(window_data); f.set_field_data(window_data);
} }
@ -756,9 +756,12 @@ bool TMask::on_key(KEY key)
TMask_field& f = fld(i); TMask_field& f = fld(i);
if (f.class_id() != CLASS_BUTTON_FIELD || !f.active()) continue; if (f.class_id() != CLASS_BUTTON_FIELD || !f.active()) continue;
TButton_field& b = (TButton_field&)f; 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; 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 <xvt.h>
#include <applicat.h> #include <applicat.h>
@ -68,9 +68,11 @@ char TMask_field::TField_Flags::update(const char* s)
exchange = TRUE; break; exchange = TRUE; break;
case 'Z': case 'Z':
zerofilled = TRUE; break; zerofilled = TRUE; break;
default :
#ifdef DBG #ifdef DBG
default : ::warning_box("FLAG sconosciuto in %s: %c", kk, *s); break; yesnofatal_box("FLAG sconosciuto in %s: %c", kk, *s);
#endif #endif
break;
} }
return *s; return *s;
} }
@ -370,6 +372,23 @@ word TMask_field::last_key() const
return (word)u; 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% // Certified 99%
const char* TMask_field::get_window_data() const 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 #ifndef __MASKFLD_H
#define __MASKFLD_H #define __MASKFLD_H
@ -121,7 +121,7 @@ public:
bool dirty() const { return _flags.dirty; } bool dirty() const { return _flags.dirty; }
bool focusdirty() const { return _flags.focusdirty; } bool focusdirty() const { return _flags.focusdirty; }
void set_focusdirty(bool d = TRUE) { _flags.focusdirty = d; } 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 const char* class_name() const;
virtual word class_id() 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 <mailbox.h>
#include <sheet.h> #include <sheet.h>
#include <urldefid.h> #include <urldefid.h>
@ -553,6 +553,11 @@ bool TRelation_application::save(bool check_dirty)
return TRUE; 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?" const KEY k = yesnocancel_box(mode == MODE_MOD ? "Registrare le modifiche?"
: "Registrare i dati inseriti?"); : "Registrare i dati inseriti?");
if (k == K_ESC) if (k == K_ESC)