diff --git a/include/mask.cpp b/include/mask.cpp index be64733bf..409827039 100755 --- a/include/mask.cpp +++ b/include/mask.cpp @@ -1,12 +1,12 @@ #include #include -#include #include #include #include #include #include +#include #include #include #include @@ -335,10 +335,16 @@ void TMask::notify_focus_field(short id) bool TMask::can_be_closed() const { - bool ok = TRUE; - if (is_running() && (edit_mode() || insert_mode()) && dirty()) - ok = yesno_box("Annullare i dati inseriti?"); - return ok; + if (is_running()) + { + bool ok = TRUE; + if ((edit_mode() || insert_mode()) && dirty()) + ok = yesno_box("Annullare i dati inseriti?"); + if (ok) + ((TMask*)this)->stop_run(K_FORCE_CLOSE); + return FALSE; + } + return TRUE; // Should never happen! } void TMask::close() @@ -603,8 +609,13 @@ bool TMask::stop_run( return FALSE; } - if (key == K_CTRL_ENTER || key == K_AUTO_ENTER) key = K_ENTER; else - if (key == K_FORCE_CLOSE) key = K_QUIT; + if (key == K_CTRL_ENTER || key == K_AUTO_ENTER) + key = K_ENTER; + else + { + if (key == K_FORCE_CLOSE) + key = (id2pos(DLG_QUIT)<0 && id2pos(DLG_CANCEL)>=0) ? K_ESC : K_QUIT; + } if (key != K_ESC && key != K_QUIT && key != K_DEL && key != K_F9) { @@ -1322,7 +1333,7 @@ void TMask::autosave(TRelation& r) const void TMask::on_firm_change() { - TString firm; firm << main_app().get_firm(); + TString firm; firm << prefix().get_codditta(); for (int i = fields()-1; i >= 0; i--) { TMask_field& f = fld(i); @@ -1843,7 +1854,7 @@ void TMask::set_exchange( { const real nuo = (n.sign() <= 0) ? _exchange : n; - main_app().begin_wait(); + TWait_cursor hourglass; for (int i = fields()-1; i >= 0; i--) { TMask_field& f = fld(i); @@ -1854,9 +1865,7 @@ void TMask::set_exchange( o.exchange(show_value, nuo); } } - _exchange = nuo; // Update current exchange - main_app().end_wait(); }