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 = []
|
Font.Style = []
|
||||||
OldCreateOrder = False
|
OldCreateOrder = False
|
||||||
Position = poMainFormCenter
|
Position = poMainFormCenter
|
||||||
OnCloseQuery = FormCloseQuery
|
OnClose = FormClose
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
OnDeactivate = FormDeactivate
|
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
DesignSize = (
|
DesignSize = (
|
||||||
215
|
215
|
||||||
|
@ -25,12 +25,12 @@ type
|
|||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
procedure memoTextChange(Sender: TObject);
|
procedure memoTextChange(Sender: TObject);
|
||||||
procedure memoTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure memoTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure FormDeactivate(Sender: TObject);
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||||
private
|
private
|
||||||
{ Private declarations }
|
{ Private declarations }
|
||||||
FModified: Boolean;
|
FModified: Boolean;
|
||||||
|
FStopping: Boolean;
|
||||||
procedure SetModified(NewVal: Boolean);
|
procedure SetModified(NewVal: Boolean);
|
||||||
property Modified: Boolean read FModified write SetModified;
|
property Modified: Boolean read FModified write SetModified;
|
||||||
public
|
public
|
||||||
@ -154,6 +154,9 @@ procedure TfrmBinEditor.btnCancelClick(Sender: TObject);
|
|||||||
var
|
var
|
||||||
DoPost: Boolean;
|
DoPost: Boolean;
|
||||||
begin
|
begin
|
||||||
|
if FStopping then
|
||||||
|
Exit;
|
||||||
|
FStopping := True;
|
||||||
if Modified then
|
if Modified then
|
||||||
DoPost := MessageDlg('Apply modifications?', mtConfirmation, [mbYes, mbNo], 0) = mrYes
|
DoPost := MessageDlg('Apply modifications?', mtConfirmation, [mbYes, mbNo], 0) = mrYes
|
||||||
else
|
else
|
||||||
@ -165,22 +168,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TfrmBinEditor.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
procedure TfrmBinEditor.FormClose(Sender: TObject; var Action: TCloseAction);
|
||||||
begin
|
begin
|
||||||
btnCancelClick(Sender);
|
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;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TfrmBinEditor.btnApplyClick(Sender: TObject);
|
procedure TfrmBinEditor.btnApplyClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
FStopping := True;
|
||||||
TCustomVirtualStringTree(Owner).EndEditNode;
|
TCustomVirtualStringTree(Owner).EndEditNode;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
@ -157,7 +157,7 @@ function TMemoEditorLink.BeginEdit: Boolean; stdcall;
|
|||||||
begin
|
begin
|
||||||
Result := not FStopping;
|
Result := not FStopping;
|
||||||
if Result then
|
if Result then
|
||||||
FForm.Show;
|
FForm.ShowModal;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
@ -166,7 +166,7 @@ begin
|
|||||||
Result := not FStopping;
|
Result := not FStopping;
|
||||||
if Result then begin
|
if Result then begin
|
||||||
FStopping := True;
|
FStopping := True;
|
||||||
FForm.Hide;
|
FForm.Close;
|
||||||
FTree.CancelEditNode;
|
FTree.CancelEditNode;
|
||||||
FTree.SetFocus;
|
FTree.SetFocus;
|
||||||
end;
|
end;
|
||||||
@ -180,7 +180,7 @@ begin
|
|||||||
FStopping := True;
|
FStopping := True;
|
||||||
if FForm.GetText <> FTree.Text[FNode, FColumn] then
|
if FForm.GetText <> FTree.Text[FNode, FColumn] then
|
||||||
FTree.Text[FNode, FColumn] := FForm.GetText;
|
FTree.Text[FNode, FColumn] := FForm.GetText;
|
||||||
FForm.Hide;
|
FForm.Close;
|
||||||
FTree.SetFocus;
|
FTree.SetFocus;
|
||||||
except
|
except
|
||||||
FStopping := False;
|
FStopping := False;
|
||||||
|
@ -15,10 +15,9 @@ object frmTextEditor: TfrmTextEditor
|
|||||||
Font.Style = []
|
Font.Style = []
|
||||||
OldCreateOrder = False
|
OldCreateOrder = False
|
||||||
Position = poMainFormCenter
|
Position = poMainFormCenter
|
||||||
OnCloseQuery = FormCloseQuery
|
OnClose = FormClose
|
||||||
OnCreate = FormCreate
|
OnCreate = FormCreate
|
||||||
OnDestroy = FormDestroy
|
OnDestroy = FormDestroy
|
||||||
OnDeactivate = FormDeactivate
|
|
||||||
OnShow = FormShow
|
OnShow = FormShow
|
||||||
DesignSize = (
|
DesignSize = (
|
||||||
215
|
215
|
||||||
|
@ -25,12 +25,12 @@ type
|
|||||||
procedure FormShow(Sender: TObject);
|
procedure FormShow(Sender: TObject);
|
||||||
procedure memoTextChange(Sender: TObject);
|
procedure memoTextChange(Sender: TObject);
|
||||||
procedure memoTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
procedure memoTextKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);
|
||||||
procedure FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
|
||||||
procedure FormCreate(Sender: TObject);
|
procedure FormCreate(Sender: TObject);
|
||||||
procedure FormDeactivate(Sender: TObject);
|
procedure FormClose(Sender: TObject; var Action: TCloseAction);
|
||||||
private
|
private
|
||||||
{ Private declarations }
|
{ Private declarations }
|
||||||
FModified: Boolean;
|
FModified: Boolean;
|
||||||
|
FStopping: Boolean;
|
||||||
procedure SetModified(NewVal: Boolean);
|
procedure SetModified(NewVal: Boolean);
|
||||||
property Modified: Boolean read FModified write SetModified;
|
property Modified: Boolean read FModified write SetModified;
|
||||||
public
|
public
|
||||||
@ -157,6 +157,9 @@ procedure TfrmTextEditor.btnCancelClick(Sender: TObject);
|
|||||||
var
|
var
|
||||||
DoPost: Boolean;
|
DoPost: Boolean;
|
||||||
begin
|
begin
|
||||||
|
if FStopping then
|
||||||
|
Exit;
|
||||||
|
FStopping := True;
|
||||||
if Modified then
|
if Modified then
|
||||||
DoPost := MessageDlg('Apply modifications?', mtConfirmation, [mbYes, mbNo], 0) = mrYes
|
DoPost := MessageDlg('Apply modifications?', mtConfirmation, [mbYes, mbNo], 0) = mrYes
|
||||||
else
|
else
|
||||||
@ -168,22 +171,15 @@ begin
|
|||||||
end;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TfrmTextEditor.FormCloseQuery(Sender: TObject; var CanClose: Boolean);
|
procedure TfrmTextEditor.FormClose(Sender: TObject; var Action: TCloseAction);
|
||||||
begin
|
begin
|
||||||
btnCancelClick(Sender);
|
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;
|
end;
|
||||||
|
|
||||||
|
|
||||||
procedure TfrmTextEditor.btnApplyClick(Sender: TObject);
|
procedure TfrmTextEditor.btnApplyClick(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
|
FStopping := True;
|
||||||
TCustomVirtualStringTree(Owner).EndEditNode;
|
TCustomVirtualStringTree(Owner).EndEditNode;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user