diff --git a/v3/pkg/application/linux_cgo.go b/v3/pkg/application/linux_cgo.go index 2add24e1f..5d0931be6 100644 --- a/v3/pkg/application/linux_cgo.go +++ b/v3/pkg/application/linux_cgo.go @@ -1579,7 +1579,13 @@ func runChooserDialog(window pointer, allowMultiple, createFolders, showHidden b } func runOpenFileDialog(dialog *OpenFileDialogStruct) (chan string, error) { - const GtkFileChooserActionOpen = C.GTK_FILE_CHOOSER_ACTION_OPEN + var action int + + if dialog.canChooseDirectories { + action = C.GTK_FILE_CHOOSER_ACTION_SELECT_FOLDER + } else { + action = C.GTK_FILE_CHOOSER_ACTION_OPEN + } window := nilPointer if dialog.window != nil { @@ -1598,7 +1604,7 @@ func runOpenFileDialog(dialog *OpenFileDialogStruct) (chan string, error) { dialog.showHiddenFiles, dialog.directory, dialog.title, - GtkFileChooserActionOpen, + action, buttonText, dialog.filters) } diff --git a/v3/pkg/application/linux_purego.go b/v3/pkg/application/linux_purego.go index 5c58ae578..1b94ba6e5 100644 --- a/v3/pkg/application/linux_purego.go +++ b/v3/pkg/application/linux_purego.go @@ -1084,6 +1084,15 @@ func runChooserDialog(window pointer, allowMultiple, createFolders, showHidden b // dialog related func runOpenFileDialog(dialog *OpenFileDialogStruct) ([]string, error) { const GtkFileChooserActionOpen = 0 + const GtkFileChooserActionSelectFolder = 2 + + var action int + + if dialog.canChooseDirectories { + action = GtkFileChooserActionSelectFolder + } else { + action = GtkFileChooserActionOpen + } window := pointer(0) if dialog.window != nil {