mirror of
https://github.com/HeidiSQL/HeidiSQL.git
synced 2025-08-06 18:24:26 +08:00
Fix bug #778 you will be asked twice if you want to apply the modifications in the editor window after ESC pressed. The editor dialogs are modal now which fixes a certain part of this issue and makes the code paths less complex.
This commit is contained in:
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
|
||||
|
Reference in New Issue
Block a user