diff --git a/include/controls.cpp b/include/controls.cpp index 97ce1bd31..4cfe7d3e3 100755 --- a/include/controls.cpp +++ b/include/controls.cpp @@ -1088,6 +1088,16 @@ void TControl::set_caption(const char* c) xi_set_text(_obj, (char*)c); } +void TControl::destroy() +{ + if (_obj != NULL) + { + xi_delete(_obj); + _obj = NULL; + } +} + + /////////////////////////////////////////////////////////// // TText /////////////////////////////////////////////////////////// diff --git a/include/controls.h b/include/controls.h index 1c393ef09..1896ca39b 100755 --- a/include/controls.h +++ b/include/controls.h @@ -99,6 +99,8 @@ public: virtual void show(bool on = TRUE); void hide() { show(FALSE); } + virtual void destroy(); + virtual void set_rjust(bool on = TRUE); void set_ljust() { set_rjust(FALSE); } diff --git a/include/date.cpp b/include/date.cpp index 1b936016c..2512eb761 100755 --- a/include/date.cpp +++ b/include/date.cpp @@ -377,21 +377,23 @@ int TDate::week() const bool TDate::is_holiday() const { - bool holiday = wday() > 5; + bool holiday = wday() > 5; // Week-end if (!holiday) { const int d = day(); const int m = month(); - - if ((m == 1) && ((d == 1) || (d == 6))) + + if ((m == 1) && ((d == 1) || (d == 6))) // Capodanno ed Epifania return true; - if ((m == 4) && (d == 25)) + if ((m == 4) && (d == 25)) // Liberazione return true; - if ((m == 5) && (d == 1)) + if ((m == 5) && (d == 1)) // Festa dei Lavoratori return true; - if ((m == 8) && (d == 15)) + if ((m == 6) && (d == 2)) // Festa della Repubblica return true; - if ((m == 11) && (d == 1)) + if ((m == 8) && (d == 15)) // Ferragosto + return true; + if ((m == 11) && (d == 1)) // Ognissanti return true; if ((m == 12) && ((d == 8) || (d == 25) || (d == 26))) return true; diff --git a/include/mask.cpp b/include/mask.cpp index dbdf1dc8e..599c10ddd 100755 --- a/include/mask.cpp +++ b/include/mask.cpp @@ -1088,7 +1088,10 @@ WINDOW TMask::insert_page(const char* title, int where) { TMask_field& tag = fld(i); if (tag.dlg() >= DLG_PAGETAGS) + { + tag.destroy(); _field.destroy(i); + } else break; } diff --git a/include/maskfld.cpp b/include/maskfld.cpp index aa2fe02e1..07582abe5 100755 --- a/include/maskfld.cpp +++ b/include/maskfld.cpp @@ -309,6 +309,11 @@ void TMask_field::construct(TScanner& scanner, WINDOW parent) create(parent); } +void TMask_field::destroy() +{ + _ctl->destroy(); +} + void TMask_field::set_group(byte group) { if (_groups == NULL) diff --git a/include/maskfld.h b/include/maskfld.h index e0cc61c39..3cc1ab4a6 100755 --- a/include/maskfld.h +++ b/include/maskfld.h @@ -130,6 +130,7 @@ protected: // @cmember Costruisce il campo con i suoi parametri void construct(short id, const char* prompt, int x, int y, int len, WINDOW parent, const char* flags = "", int width = 0); + void destroy(); // @cmember Legge la testata del controllo dal file .msk

virtual void parse_head(TScanner& scanner);