diff --git a/include/mask.cpp b/include/mask.cpp index b6c3b3569..c67376f9b 100755 --- a/include/mask.cpp +++ b/include/mask.cpp @@ -315,9 +315,10 @@ int TMask::find_first_active(WINDOW p) const return -1; } -int TMask::first_focus(short id) +int TMask::first_focus(short id, bool dirty) { static int tempfirstfocus = -1; + static bool tempdirty = false; int f = _first_focus; if (id == 0) @@ -325,7 +326,7 @@ int TMask::first_focus(short id) if (tempfirstfocus >= 0) { f = tempfirstfocus; - if (fld(f).dirty() == false) + if (tempdirty && fld(f).dirty() == false) fld(f).set_dirty(); tempfirstfocus = -1; } @@ -347,7 +348,10 @@ int TMask::first_focus(short id) tempfirstfocus = -1; } else + { f = tempfirstfocus = id2pos(-id); + tempdirty = dirty; + } } CHECKD(f >= 0 && f < fields(), "Invalid focus field ", f); diff --git a/include/mask.h b/include/mask.h index c8f7b11e9..697977796 100755 --- a/include/mask.h +++ b/include/mask.h @@ -309,7 +309,7 @@ public: // @cmember Ritorna il contenuto del primo campo attivo campo che ha come FIELD
const TString& get(const char * fld_id) const; // @cmember Indica quale campo deve ricevere per primo il focus nella maschera - int first_focus(short id); + int first_focus(short id, bool dirty = true); // @cmember Ritorna il numero del controllo che possiede il focus TOperable_field& focus_field() const; diff --git a/include/relapp.cpp b/include/relapp.cpp index 957b9dda4..c076ca5ba 100755 --- a/include/relapp.cpp +++ b/include/relapp.cpp @@ -1377,7 +1377,7 @@ void TRelation_application::main_loop() { const TMask_field & f = _mask->focus_field(); - _mask->first_focus(-f.dlg()); + _mask->first_focus(-f.dlg(), false); modify_mode(); } }