diff --git a/source/bineditor.dfm b/source/bineditor.dfm index b9b5f96f..c8e667ea 100644 --- a/source/bineditor.dfm +++ b/source/bineditor.dfm @@ -15,10 +15,9 @@ object frmBinEditor: TfrmBinEditor Font.Style = [] OldCreateOrder = False Position = poMainFormCenter - OnCloseQuery = FormCloseQuery + OnClose = FormClose OnCreate = FormCreate OnDestroy = FormDestroy - OnDeactivate = FormDeactivate OnShow = FormShow DesignSize = ( 215 diff --git a/source/bineditor.pas b/source/bineditor.pas index a3b21eed..28456ee6 100644 --- a/source/bineditor.pas +++ b/source/bineditor.pas @@ -25,12 +25,12 @@ type procedure FormShow(Sender: TObject); procedure memoTextChange(Sender: TObject); procedure memoTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCreate(Sender: TObject); - procedure FormDeactivate(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } FModified: Boolean; + FStopping: Boolean; procedure SetModified(NewVal: Boolean); property Modified: Boolean read FModified write SetModified; public @@ -154,6 +154,9 @@ procedure TfrmBinEditor.btnCancelClick(Sender: TObject); var DoPost: Boolean; begin + if FStopping then + Exit; + FStopping := True; if Modified then DoPost := MessageDlg('Apply modifications?', mtConfirmation, [mbYes, mbNo], 0) = mrYes else @@ -165,22 +168,15 @@ begin end; -procedure TfrmBinEditor.FormCloseQuery(Sender: TObject; var CanClose: Boolean); +procedure TfrmBinEditor.FormClose(Sender: TObject; var Action: TCloseAction); begin btnCancelClick(Sender); - CanClose := False; // Done by editor link -end; - - -procedure TfrmBinEditor.FormDeactivate(Sender: TObject); -begin - // Fixes an AV when another control steels focus, reported in bug #774 - btnCancelClick(Sender); end; procedure TfrmBinEditor.btnApplyClick(Sender: TObject); begin + FStopping := True; TCustomVirtualStringTree(Owner).EndEditNode; end; diff --git a/source/grideditlinks.pas b/source/grideditlinks.pas index ff0a53a6..b15b3b38 100644 --- a/source/grideditlinks.pas +++ b/source/grideditlinks.pas @@ -157,7 +157,7 @@ function TMemoEditorLink.BeginEdit: Boolean; stdcall; begin Result := not FStopping; if Result then - FForm.Show; + FForm.ShowModal; end; @@ -166,7 +166,7 @@ begin Result := not FStopping; if Result then begin FStopping := True; - FForm.Hide; + FForm.Close; FTree.CancelEditNode; FTree.SetFocus; end; @@ -180,7 +180,7 @@ begin FStopping := True; if FForm.GetText <> FTree.Text[FNode, FColumn] then FTree.Text[FNode, FColumn] := FForm.GetText; - FForm.Hide; + FForm.Close; FTree.SetFocus; except FStopping := False; diff --git a/source/texteditor.dfm b/source/texteditor.dfm index 66d7036c..52761268 100644 --- a/source/texteditor.dfm +++ b/source/texteditor.dfm @@ -15,10 +15,9 @@ object frmTextEditor: TfrmTextEditor Font.Style = [] OldCreateOrder = False Position = poMainFormCenter - OnCloseQuery = FormCloseQuery + OnClose = FormClose OnCreate = FormCreate OnDestroy = FormDestroy - OnDeactivate = FormDeactivate OnShow = FormShow DesignSize = ( 215 diff --git a/source/texteditor.pas b/source/texteditor.pas index e01fdcfc..517b7dcc 100644 --- a/source/texteditor.pas +++ b/source/texteditor.pas @@ -25,12 +25,12 @@ type procedure FormShow(Sender: TObject); procedure memoTextChange(Sender: TObject); procedure memoTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); - procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean); procedure FormCreate(Sender: TObject); - procedure FormDeactivate(Sender: TObject); + procedure FormClose(Sender: TObject; var Action: TCloseAction); private { Private declarations } FModified: Boolean; + FStopping: Boolean; procedure SetModified(NewVal: Boolean); property Modified: Boolean read FModified write SetModified; public @@ -157,6 +157,9 @@ procedure TfrmTextEditor.btnCancelClick(Sender: TObject); var DoPost: Boolean; begin + if FStopping then + Exit; + FStopping := True; if Modified then DoPost := MessageDlg('Apply modifications?', mtConfirmation, [mbYes, mbNo], 0) = mrYes else @@ -168,22 +171,15 @@ begin end; -procedure TfrmTextEditor.FormCloseQuery(Sender: TObject; var CanClose: Boolean); +procedure TfrmTextEditor.FormClose(Sender: TObject; var Action: TCloseAction); begin btnCancelClick(Sender); - CanClose := False; // Done by editor link -end; - - -procedure TfrmTextEditor.FormDeactivate(Sender: TObject); -begin - // Fixes an AV when another control steels focus, reported in bug #774 - btnCancelClick(Sender); end; procedure TfrmTextEditor.btnApplyClick(Sender: TObject); begin + FStopping := True; TCustomVirtualStringTree(Owner).EndEditNode; end;