From 5ea15955eb40ed254470a533d54f685ec3219a78 Mon Sep 17 00:00:00 2001 From: cjee21 <77721854+cjee21@users.noreply.github.com> Date: Tue, 18 Jun 2024 19:56:54 +0800 Subject: [PATCH] Windows GUI: Improve app closing routine Clean-up temporary HTML file on exit and address cause of sheet view crashing on exit. --- Source/GUI/VCL/GUI_Main.cpp | 16 ++++++++++++++-- Source/GUI/VCL/GUI_Main.dfm | 3 ++- Source/GUI/VCL/GUI_Main.h | 1 + 3 files changed, 17 insertions(+), 3 deletions(-) diff --git a/Source/GUI/VCL/GUI_Main.cpp b/Source/GUI/VCL/GUI_Main.cpp index a083e0f9d..64d6cec2f 100644 --- a/Source/GUI/VCL/GUI_Main.cpp +++ b/Source/GUI/VCL/GUI_Main.cpp @@ -389,9 +389,17 @@ void __fastcall TMainF::FormShow(TObject *Sender) //--------------------------------------------------------------------------- void __fastcall TMainF::FormClose(TObject *Sender, TCloseAction &Action) { - if (Page->ActivePage==Page_Sheet) //TODO : find WHY there is a crash without this... - ChangePage(Page_Easy); + //Delete temp HTML file on close + if (FileName_Temp!=__T("")) + File::Delete(FileName_Temp); + //The form is closed and all allocated memory for the form is freed. + Action = caFree; +} + +//--------------------------------------------------------------------------- +void __fastcall TMainF::FormDestroy(TObject *Sender) +{ delete Prefs; Prefs=NULL; delete I; I=NULL; } @@ -399,6 +407,10 @@ void __fastcall TMainF::FormClose(TObject *Sender, TCloseAction &Action) //--------------------------------------------------------------------------- void __fastcall TMainF::FormResize(TObject *Sender) { + //If triggered on application close + if(Prefs==NULL) + return; + //Main View Page->Left =(ToolBar->Visible?ToolBar->Width:0)-2; Page->Width =ClientWidth-Page->Left+2; diff --git a/Source/GUI/VCL/GUI_Main.dfm b/Source/GUI/VCL/GUI_Main.dfm index 9bc9b3c31..d6d3706d7 100644 --- a/Source/GUI/VCL/GUI_Main.dfm +++ b/Source/GUI/VCL/GUI_Main.dfm @@ -12,6 +12,7 @@ object MainF: TMainF Font.Style = [] Menu = MainMenu OnClose = FormClose + OnDestroy = FormDestroy OnResize = FormResize OnShow = FormShow TextHeight = 13 @@ -2090,7 +2091,7 @@ object MainF: TMainF end object MainMenu: TMainMenu Images = Menu_Image - Left = 764 + Left = 768 Top = 28 object M_File: TMenuItem Caption = 'File' diff --git a/Source/GUI/VCL/GUI_Main.h b/Source/GUI/VCL/GUI_Main.h index 81a2759ec..7358a51dc 100644 --- a/Source/GUI/VCL/GUI_Main.h +++ b/Source/GUI/VCL/GUI_Main.h @@ -270,6 +270,7 @@ class TMainF : public TForm void __fastcall Page_Easy_FileChange(TObject *Sender); void __fastcall Page_Easy_DifferentViewClick(TObject *Sender); void __fastcall FormClose(TObject *Sender, TCloseAction &Action); + void __fastcall FormDestroy(TObject *Sender); void __fastcall Page_Sheet_Change(TObject *Sender); void __fastcall Page_Sheet_WebClick(TObject *Sender); void __fastcall Page_Easy_WebClick(TObject *Sender);