diff --git a/lcl/include/taskdialog.inc b/lcl/include/taskdialog.inc index 8a96f8244a..29f5dee016 100644 --- a/lcl/include/taskdialog.inc +++ b/lcl/include/taskdialog.inc @@ -233,8 +233,12 @@ begin //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]); + ButtonID := TWSTaskDialogClass(WidgetSetClass).Execute(Self); + FModalResult := ButtonIDToModalResult(ButtonID); + Result := (ButtonID >= 0); + debugln(['TWSTaskDialogClass(WidgetSetClass).Execute(Self)=',ButtonID,', Result=',Result]); + debugln(['New: ButtonID=',ButtonID]); + debugln(['New: FModalResult=',FModalResult]); FillChar(TaskDlg, SizeOf(LCLTaskDialog.TTaskDialog), 0); @@ -263,9 +267,12 @@ begin ButtonID := TaskDlg.Execute(TD_COMMONBUTTONS(CommonButtons), DefBtn, TD_FLAGS(Flags), TF_DIALOGICON(MainIcon), TF_FOOTERICON(FooterIcon), DefRB, FWidth, ParentWnd, tfForceNonNative in Flags, tfEmulateClassicStyle in Flags, @DoOnButtonClickedHandler); + debugln(['TaskDlg.Execute()=',ButtonID,', Result=',Result]); + debugln(['Old: ButtonID=',ButtonID]); Result := ButtonID>=0; FModalResult := ButtonIDToModalResult(ButtonID); + debugln(['Old: FModalResult=',FModalResult]); //ToDo move FirstButtonIndex and FirstRadioButtonIndex to interface section Dialogs unit. diff --git a/lcl/interfaces/win32/win32wsdialogs.pp b/lcl/interfaces/win32/win32wsdialogs.pp index 00f01407a1..b20a0a930a 100644 --- a/lcl/interfaces/win32/win32wsdialogs.pp +++ b/lcl/interfaces/win32/win32wsdialogs.pp @@ -161,7 +161,7 @@ type TWin32WSTaskDialog = class(TWSTaskDialog) public - class function Execute(const ADlg: TCustomTaskDialog): Boolean; override; + class function Execute(const ADlg: TCustomTaskDialog): Integer; override; end; function OpenFileDialogCallBack(Wnd: HWND; uMsg: UINT; {%H-}wParam: WPARAM; @@ -1578,7 +1578,7 @@ var TaskDialogIndirect: function(AConfig: pointer; Res: PInteger; ResRadio: PInteger; VerifyFlag: PBOOL): HRESULT; stdcall; -class function TWin32WSTaskDialog.Execute(const ADlg: TCustomTaskDialog): Boolean; +class function TWin32WSTaskDialog.Execute(const ADlg: TCustomTaskDialog): Integer; begin //writeln('TWin32WSTaskDialog.Execute'); Result := inherited Execute(ADlg); diff --git a/lcl/taskdlgemulation.pp b/lcl/taskdlgemulation.pp index 5fe8f11f29..0d279c42ce 100644 --- a/lcl/taskdlgemulation.pp +++ b/lcl/taskdlgemulation.pp @@ -37,7 +37,7 @@ type constructor CreateNew(AOwner: TComponent; Num: Integer = 0); override; - function Execute: Boolean; + function Execute: Integer; public /// the labels corresponding to the Task Dialog main elements Element: array[tdeContent..tdeMainInstruction] of TLabel; @@ -59,7 +59,7 @@ var TaskDialog_Translate: TTaskDialogTranslate; -function ExecuteLCLTaskDialog(const ADlg: TTaskDialog): Boolean; +function ExecuteLCLTaskDialog(const ADlg: TTaskDialog): Integer; implementation @@ -143,12 +143,12 @@ end; { -------------- } -function ExecuteLCLTaskDialog(const ADlg: TTaskDialog): Boolean; +function ExecuteLCLTaskDialog(const ADlg: TTaskDialog): Integer; var DlgForm: TLCLTaskDialog; begin debugln('ExecuteLCLTaskDialog'); - Result := False; + Result := -1; DlgForm := TLCLTaskDialog.CreateNew(ADlg); try Result := DlgForm.Execute; @@ -167,14 +167,14 @@ begin KeyPreview := True; end; -function TLCLTaskDialog.Execute: Boolean; +function TLCLTaskDialog.Execute: Integer; var mRes, I: Integer; aParent: HWND; begin debugln(['TLCLTaskDialog.Execute: Assigned(FDlg)=',Assigned(FDlg)]); if not Assigned(FDlg) then - Exit(False); + Exit(-1); SetupControls; aParent := FDlg.ParentWindow; @@ -193,8 +193,8 @@ begin - mRes := ShowModal; - Result := (mRes > 0); + Result := ShowModal; + //Result := (mRes > 0); //ToDo implement this (* diff --git a/lcl/widgetset/wsdialogs.pp b/lcl/widgetset/wsdialogs.pp index dc833a076b..e87003265d 100644 --- a/lcl/widgetset/wsdialogs.pp +++ b/lcl/widgetset/wsdialogs.pp @@ -106,7 +106,7 @@ type TWSTaskDialogClass = class of TWSTaskDialog; TWSTaskDialog = class(TWSLCLComponent) published - class function Execute(const ADlg: TCustomTaskDialog): Boolean; virtual; + class function Execute(const ADlg: TCustomTaskDialog): Integer; virtual; end; { WidgetSetRegistration } @@ -198,7 +198,7 @@ end; { TWSTaskDialog } -class function TWSTaskDialog.Execute(const ADlg: TCustomTaskDialog): Boolean; +class function TWSTaskDialog.Execute(const ADlg: TCustomTaskDialog): Integer; begin //writeln('TWSTaskDialog.Execute: Assigned(ADlg)=',Assigned(ADlg)); Result := ExecuteLCLTaskDialog(TTaskDialog(ADlg));