From b163a35cb3158fb4e03217dc744ae40447b49df0 Mon Sep 17 00:00:00 2001 From: Bart <9132501-flyingsheep@users.noreply.gitlab.com> Date: Wed, 19 Jul 2023 19:43:35 +0200 Subject: [PATCH] Refactoring TTaskDialog: - Fix not displaying common buttons in TLCLTaskDialog.SetupControls - Assign TLCLDialog.FDlg in the CreateNew() constructor. - Free LDefaultFont - Start comparing the new form vs the old form Still not functional. --- lcl/include/taskdialog.inc | 11 +++++++++-- lcl/taskdlgemulation.pp | 11 ++++++++++- lcl/widgetset/wsdialogs.pp | 2 +- 3 files changed, 20 insertions(+), 4 deletions(-) diff --git a/lcl/include/taskdialog.inc b/lcl/include/taskdialog.inc index 81b447d1b2..8a96f8244a 100644 --- a/lcl/include/taskdialog.inc +++ b/lcl/include/taskdialog.inc @@ -230,6 +230,13 @@ begin //Result := TWSTaskDialogClass(WidgetSetClass).Execute(Self); FParentWindow := ParentWnd; + + //temporary show new, then old dialog, both in emulated mode (regardless of Flags) + LCLTaskDialog.TaskDialogIndirect := nil; + Result := TWSTaskDialogClass(WidgetSetClass).Execute(Self); + debugln(['TWSTaskDialogClass(WidgetSetClass).Execute(Self)=',Result]); + + FillChar(TaskDlg, SizeOf(LCLTaskDialog.TTaskDialog), 0); if RadioButtons.DefaultButton<> nil then @@ -258,10 +265,10 @@ begin DefRB, FWidth, ParentWnd, tfForceNonNative in Flags, tfEmulateClassicStyle in Flags, @DoOnButtonClickedHandler); Result := ButtonID>=0; - - FModalResult := ButtonIDToModalResult(ButtonID); + //ToDo move FirstButtonIndex and FirstRadioButtonIndex to interface section Dialogs unit. + if (TaskDlg.RadioRes>=200) and (TaskDlg.RadioRes-200 []) or (Verify<>'') or ((Buttons<>'') and not (tfUseCommandLinks in FDlg.Flags)) then begin CurrTabOrder := Panel.TabOrder; @@ -700,8 +704,10 @@ begin Free; end; for Btn := high(TTaskDialogCommonButton) downto low(TTaskDialogCommonButton) do + begin if (Btn in aCommonButtons) then AddButton(TD_Trans(LoadResString(TD_BTNS(Btn))), TD_BTNMOD[Btn]); + end; if Verify<>'' then begin Verif := TCheckBox.Create(Self); @@ -771,6 +777,9 @@ begin inherited KeyDown(Key, Shift); end; +finalization + if assigned(LDefaultFont) then + LDefaultFont.Free; end. diff --git a/lcl/widgetset/wsdialogs.pp b/lcl/widgetset/wsdialogs.pp index e04a52c32c..dc833a076b 100644 --- a/lcl/widgetset/wsdialogs.pp +++ b/lcl/widgetset/wsdialogs.pp @@ -200,7 +200,7 @@ end; class function TWSTaskDialog.Execute(const ADlg: TCustomTaskDialog): Boolean; begin - //writeln('TWSTaskDialog.Execute'); + //writeln('TWSTaskDialog.Execute: Assigned(ADlg)=',Assigned(ADlg)); Result := ExecuteLCLTaskDialog(TTaskDialog(ADlg)); end;