@@ -612,6 +612,7 @@ TMainForm = class(TForm)
612
612
procedure actSaveAsExecute (Sender: TObject);
613
613
procedure actSaveAllExecute (Sender: TObject);
614
614
procedure actCloseExecute (Sender: TObject);
615
+ procedure actCloseExecuteByTab (Sender: TObject; CloseEditor:TEditor = nil );
615
616
procedure actCloseAllExecute (Sender: TObject);
616
617
procedure actCloseProjectExecute (Sender: TObject);
617
618
procedure actExportHTMLExecute (Sender: TObject);
@@ -1096,6 +1097,13 @@ procedure TMainForm.FormClose(Sender: TObject; var Action: TCloseAction);
1096
1097
1097
1098
SaveOptions;
1098
1099
1100
+ // -- -- -- -- -- -- -- -- -- -- -- -- --
1101
+ // This is a cheat. Also don't hard-code 'Windows10'.
1102
+ // -- -- -- -- -- -- -- -- -- -- -- -- --
1103
+ MainForm.Visible := false;
1104
+ TStyleManager.TrySetStyle(' Windows10' );
1105
+ // -- -- -- -- -- -- -- -- -- -- -- -- --
1106
+
1099
1107
Action := caFree;
1100
1108
end ;
1101
1109
@@ -2193,10 +2201,18 @@ procedure TMainForm.actSaveAllExecute(Sender: TObject);
2193
2201
end ;
2194
2202
2195
2203
procedure TMainForm.actCloseExecute (Sender: TObject);
2204
+ begin
2205
+ actCloseExecuteByTab(Sender);
2206
+ end ;
2207
+
2208
+ procedure TMainForm.actCloseExecuteByTab (Sender: TObject; CloseEditor:TEditor = nil );
2196
2209
var
2197
2210
e: TEditor;
2198
2211
begin
2199
- e := fEditorList.GetEditor;
2212
+ if CloseEditor = nil then
2213
+ e := fEditorList.GetEditor
2214
+ else
2215
+ e := CloseEditor;
2200
2216
if Assigned(e) then
2201
2217
fEditorList.CloseEditor(e);
2202
2218
@@ -3408,6 +3424,10 @@ procedure TMainForm.actEnviroOptionsExecute(Sender: TObject);
3408
3424
3409
3425
// Rebuild recent file list (max count could have changed
3410
3426
dmMain.RebuildMRU;
3427
+ end ;
3428
+ finally
3429
+ Close;
3430
+ end ;
3411
3431
// Load Delphi Style
3412
3432
if devData.StyleChange then
3413
3433
begin
@@ -3419,10 +3439,6 @@ procedure TMainForm.actEnviroOptionsExecute(Sender: TObject);
3419
3439
else
3420
3440
Loadtheme;
3421
3441
end ;
3422
- end ;
3423
- finally
3424
- Close;
3425
- end ;
3426
3442
end ;
3427
3443
3428
3444
procedure TMainForm.actUpdatePageCount (Sender: TObject);
@@ -4451,7 +4467,7 @@ procedure TMainForm.EditorPageControlMouseDown(Sender: TObject; Button: TMouseBu
4451
4467
4452
4468
if Button = mbLeft then
4453
4469
begin
4454
- for I := 0 to PageControl.PageCount - 1 do
4470
+ for I := PageControl.PageCount - 1 downto 0 do // tabs can disappear
4455
4471
begin
4456
4472
if not (PageControl.Pages[i] is TCloseTabSheet) then Continue;
4457
4473
TabSheet:=PageControl.Pages[i] as TCloseTabSheet;
@@ -7191,18 +7207,22 @@ procedure TMainForm.ResizeWelcomeComponent;
7191
7207
LabelView.Left := (PageControlPanel.Width div 4 ) - (LabelView.Width + 30 );
7192
7208
LabelDocumentation.Left := (PageControlPanel.Width div 4 ) - 23 ;
7193
7209
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
+
7206
7226
ButtonNewDocument.Left := Max(50 , (PanelRight.Width div 2 ) - ButtonNewDocument.Width - (ButtonOpenDocument.Width div 2 ) - 65 );
7207
7227
ButtonOpenDocument.Left := ButtonNewDocument.Left + ButtonNewDocument.Width + 25 ;
7208
7228
ButtonOptions.Left := ButtonOpenDocument.Left + ButtonOpenDocument.Width + 25 ;
@@ -7335,12 +7355,13 @@ procedure TMainForm.PageControlCloseButtonMouseDown(Sender: TObject;
7335
7355
I: Integer;
7336
7356
PageControl: TPageControl;
7337
7357
TabSheet: TCloseTabSheet;
7358
+ e: TEditor;
7338
7359
begin
7339
7360
PageControl := Sender as TPageControl;
7340
7361
7341
7362
if Button = mbLeft then
7342
7363
begin
7343
- for I := 0 to PageControl.PageCount - 1 do
7364
+ for I := PageControl.PageCount - 1 downto 0 do // tabs can disappear
7344
7365
begin
7345
7366
if not (PageControl.Pages[i] is TCloseTabSheet) then Continue;
7346
7367
TabSheet:=PageControl.Pages[i] as TCloseTabSheet;
@@ -7349,6 +7370,8 @@ procedure TMainForm.PageControlCloseButtonMouseDown(Sender: TObject;
7349
7370
FCloseButtonMouseDownTab := TabSheet;
7350
7371
FCloseButtonShowPushed := True;
7351
7372
PageControl.Repaint;
7373
+ e := fEditorList.GetEditor(I,PageControl); // determine tab being closed
7374
+ actCloseExecuteByTab(Sender, e);
7352
7375
end ;
7353
7376
end ;
7354
7377
end ;
@@ -7398,7 +7421,7 @@ procedure TMainForm.PageControlCloseButtonMouseUp(Sender: TObject;
7398
7421
TThread.Synchronize(nil , procedure begin
7399
7422
// FCloseButtonMouseDownTab.DoClose;
7400
7423
// FCloseButtonMouseDownTab := nil;
7401
- actCloseExecute(Sender);
7424
+ // actCloseExecute(Sender); // can close wrong tab
7402
7425
PageControl.Repaint;
7403
7426
end );
7404
7427
end );
0 commit comments