fix: don't return error when SaveFileDialog is cancelled by the user

This commit is contained in:
Francesco Luzzi 2025-04-29 16:25:59 +02:00 committed by FrancescoLuzzi
commit 105c10aee7
4 changed files with 8 additions and 6 deletions

View file

@ -4,4 +4,6 @@ import "errors"
var (
ErrCancelled = errors.New("cancelled by user")
ErrInvalidGUID = errors.New("guid cannot be nil")
ErrEmptyFilters = errors.New("must specify at least one filter")
)

View file

@ -58,7 +58,7 @@ func (vtbl *iShellItemArrayVtbl) getItemAt(objPtr unsafe.Pointer, index uintptr)
return "", err
}
if shellItem == nil {
return "", fmt.Errorf("shellItem is nil")
return "", ErrCancelled
}
defer shellItem.vtbl.release(unsafe.Pointer(shellItem))
return shellItem.vtbl.getDisplayName(unsafe.Pointer(shellItem))

View file

@ -34,7 +34,7 @@ func (vtbl *iModalWindowVtbl) show(objPtr unsafe.Pointer, hwnd uintptr) error {
func (vtbl *iFileDialogVtbl) setFileTypes(objPtr unsafe.Pointer, filters []FileFilter) error {
cFileTypes := len(filters)
if cFileTypes < 0 {
return fmt.Errorf("must specify at least one filter")
return ErrEmptyFilters
}
comDlgFilterSpecs := make([]comDlgFilterSpec, cFileTypes)
for i := 0; i < cFileTypes; i++ {
@ -168,7 +168,7 @@ func (vtbl *iFileDialogVtbl) getResultString(objPtr unsafe.Pointer) (string, err
return "", err
}
if shellItem == nil {
return "", fmt.Errorf("shellItem is nil")
return "", ErrCancelled
}
defer shellItem.vtbl.release(unsafe.Pointer(shellItem))
return shellItem.vtbl.getDisplayName(unsafe.Pointer(shellItem))
@ -177,7 +177,7 @@ func (vtbl *iFileDialogVtbl) getResultString(objPtr unsafe.Pointer) (string, err
func (vtbl *iFileDialogVtbl) setClientGuid(objPtr unsafe.Pointer, guid *ole.GUID) error {
// Ensure the GUID is not nil
if guid == nil {
return fmt.Errorf("guid cannot be nil")
return ErrInvalidGUID
}
// Call the SetClientGuid method