@@ -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;
11001108end ;
11011109
@@ -2193,10 +2201,18 @@ procedure TMainForm.actSaveAllExecute(Sender: TObject);
21932201end ;
21942202
21952203procedure TMainForm.actCloseExecute (Sender: TObject);
2204+ begin
2205+ actCloseExecuteByTab(Sender);
2206+ end ;
2207+
2208+ procedure TMainForm.actCloseExecuteByTab (Sender: TObject; CloseEditor:TEditor = nil );
21962209var
21972210 e: TEditor;
21982211begin
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 ;
34263442end ;
34273443
34283444procedure 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;
73387359begin
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