Skip to content

Commit acf2bbf

Browse files
authored
Merge pull request #102 from pmcgee69/master
Always close correct editor tab. Runtime error 216 issue.
2 parents 07f2665 + f4af513 commit acf2bbf

File tree

3 files changed

+44
-21
lines changed

3 files changed

+44
-21
lines changed

Source/CPUFrm.dfm

2.58 KB
Binary file not shown.

Source/EnviroFrm.dfm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -656,7 +656,7 @@ object EnviroForm: TEnviroForm
656656
'Glossy'
657657
'Calypso'
658658
'Flat UI Light'
659-
'Material Pattens Blue')
659+
'Material Patterns Blue')
660660
ParentCtl3D = False
661661
TabOrder = 2
662662
OnClick = ListBoxStyleClick

Source/main.pas

Lines changed: 43 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -612,6 +612,7 @@ TMainForm = class(TForm)
612612
procedure actSaveAsExecute(Sender: TObject);
613613
procedure actSaveAllExecute(Sender: TObject);
614614
procedure actCloseExecute(Sender: TObject);
615+
procedure actCloseExecuteByTab(Sender: TObject; CloseEditor:TEditor = nil);
615616
procedure actCloseAllExecute(Sender: TObject);
616617
procedure actCloseProjectExecute(Sender: TObject);
617618
procedure actExportHTMLExecute(Sender: TObject);
@@ -1096,6 +1097,13 @@ procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
10961097

10971098
SaveOptions;
10981099

1100+
// -- -- -- -- -- -- -- -- -- -- -- -- --
1101+
// This is a cheat. Also don't hard-code 'Windows10'.
1102+
// -- -- -- -- -- -- -- -- -- -- -- -- --
1103+
MainForm.Visible := false;
1104+
TStyleManager.TrySetStyle('Windows10');
1105+
// -- -- -- -- -- -- -- -- -- -- -- -- --
1106+
10991107
Action := caFree;
11001108
end;
11011109

@@ -2193,10 +2201,18 @@ procedure TMainForm.actSaveAllExecute(Sender: TObject);
21932201
end;
21942202

21952203
procedure TMainForm.actCloseExecute(Sender: TObject);
2204+
begin
2205+
actCloseExecuteByTab(Sender);
2206+
end;
2207+
2208+
procedure TMainForm.actCloseExecuteByTab(Sender: TObject; CloseEditor:TEditor = nil);
21962209
var
21972210
e: TEditor;
21982211
begin
2199-
e := fEditorList.GetEditor;
2212+
if CloseEditor = nil then
2213+
e := fEditorList.GetEditor
2214+
else
2215+
e := CloseEditor;
22002216
if Assigned(e) then
22012217
fEditorList.CloseEditor(e);
22022218

@@ -3408,6 +3424,10 @@ procedure TMainForm.actEnviroOptionsExecute(Sender: TObject);
34083424

34093425
// Rebuild recent file list (max count could have changed
34103426
dmMain.RebuildMRU;
3427+
end;
3428+
finally
3429+
Close;
3430+
end;
34113431
//Load Delphi Style
34123432
if devData.StyleChange then
34133433
begin
@@ -3419,10 +3439,6 @@ procedure TMainForm.actEnviroOptionsExecute(Sender: TObject);
34193439
else
34203440
Loadtheme;
34213441
end;
3422-
end;
3423-
finally
3424-
Close;
3425-
end;
34263442
end;
34273443

34283444
procedure TMainForm.actUpdatePageCount(Sender: TObject);
@@ -4451,7 +4467,7 @@ procedure TMainForm.EditorPageControlMouseDown(Sender: TObject; Button: TMouseBu
44514467

44524468
if Button = mbLeft then
44534469
begin
4454-
for I := 0 to PageControl.PageCount - 1 do
4470+
for I := PageControl.PageCount - 1 downto 0 do // tabs can disappear
44554471
begin
44564472
if not (PageControl.Pages[i] is TCloseTabSheet) then Continue;
44574473
TabSheet:=PageControl.Pages[i] as TCloseTabSheet;
@@ -7191,18 +7207,22 @@ procedure TMainForm.ResizeWelcomeComponent;
71917207
LabelView.Left := (PageControlPanel.Width div 4) - (LabelView.Width + 30);
71927208
LabelDocumentation.Left := (PageControlPanel.Width div 4) - 23;
71937209
LabelHotkeys.Left := (PageControlPanel.Width div 4) - (LabelHotkeys.Width div 2);
7194-
LabelOpen.Left := (PageControlPanel.Width div 4) - 35;
7195-
LabelSave.Left := (PageControlPanel.Width div 4) - 33;
7196-
LabelZoom.Left := (PageControlPanel.Width div 4) - 38;
7197-
LabelRun.Left := (PageControlPanel.Width div 4) - 28;
7198-
LabelCompile.Left := (PageControlPanel.Width div 4) - 50;
7199-
LabelClear.left := (PageControlPanel.Width div 4) - 34;
7200-
PanelDescOpen.Left := (PageControlPanel.Width div 4) + 18;
7201-
PanelDescSave.Left := (PageControlPanel.Width div 4) + 18;
7202-
PanelDescZoom.Left := (PageControlPanel.Width div 4) + 18;
7203-
PanelDescRun.Left := (PageControlPanel.Width div 4) + 18;
7204-
PanelDescCompile.Left := (PageControlPanel.Width div 4) + 18;
7205-
PanelDescClear.Left := (PageControlPanel.Width div 4) + 18;
7210+
7211+
var adj := 45;
7212+
LabelOpen .Left := (PageControlPanel.Width div 4) - adj - LabelOpen .width;
7213+
LabelSave .Left := (PageControlPanel.Width div 4) - adj - LabelSave .width;
7214+
LabelZoom .Left := (PageControlPanel.Width div 4) - adj - LabelZoom .width;
7215+
LabelRun .Left := (PageControlPanel.Width div 4) - adj - LabelRun .width;
7216+
LabelCompile.Left := (PageControlPanel.Width div 4) - adj - LabelCompile.width;
7217+
LabelClear .left := (PageControlPanel.Width div 4) - adj - LabelClear .width;
7218+
7219+
PanelDescOpen .Left := (PageControlPanel.Width div 4) + adj;
7220+
PanelDescSave .Left := (PageControlPanel.Width div 4) + adj;
7221+
PanelDescZoom .Left := (PageControlPanel.Width div 4) + adj;
7222+
PanelDescRun .Left := (PageControlPanel.Width div 4) + adj;
7223+
PanelDescCompile.Left := (PageControlPanel.Width div 4) + adj;
7224+
PanelDescClear .Left := (PageControlPanel.Width div 4) + adj;
7225+
72067226
ButtonNewDocument.Left := Max(50, (PanelRight.Width div 2) - ButtonNewDocument.Width - (ButtonOpenDocument.Width div 2) - 65);
72077227
ButtonOpenDocument.Left := ButtonNewDocument.Left + ButtonNewDocument.Width + 25;
72087228
ButtonOptions.Left := ButtonOpenDocument.Left + ButtonOpenDocument.Width + 25;
@@ -7335,12 +7355,13 @@ procedure TMainForm.PageControlCloseButtonMouseDown(Sender: TObject;
73357355
I: Integer;
73367356
PageControl: TPageControl;
73377357
TabSheet: TCloseTabSheet;
7358+
e: TEditor;
73387359
begin
73397360
PageControl := Sender as TPageControl;
73407361

73417362
if Button = mbLeft then
73427363
begin
7343-
for I := 0 to PageControl.PageCount - 1 do
7364+
for I := PageControl.PageCount - 1 downto 0 do // tabs can disappear
73447365
begin
73457366
if not (PageControl.Pages[i] is TCloseTabSheet) then Continue;
73467367
TabSheet:=PageControl.Pages[i] as TCloseTabSheet;
@@ -7349,6 +7370,8 @@ procedure TMainForm.PageControlCloseButtonMouseDown(Sender: TObject;
73497370
FCloseButtonMouseDownTab := TabSheet;
73507371
FCloseButtonShowPushed := True;
73517372
PageControl.Repaint;
7373+
e := fEditorList.GetEditor(I,PageControl); // determine tab being closed
7374+
actCloseExecuteByTab(Sender, e);
73527375
end;
73537376
end;
73547377
end;
@@ -7398,7 +7421,7 @@ procedure TMainForm.PageControlCloseButtonMouseUp(Sender: TObject;
73987421
TThread.Synchronize(nil, procedure begin
73997422
//FCloseButtonMouseDownTab.DoClose;
74007423
//FCloseButtonMouseDownTab := nil;
7401-
actCloseExecute(Sender);
7424+
//actCloseExecute(Sender); // can close wrong tab
74027425
PageControl.Repaint;
74037426
end);
74047427
end);

0 commit comments

Comments
 (0)