diff --git a/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp b/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp index ac79377759..e8086a41cb 100644 --- a/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp +++ b/modules/juce_gui_basics/filebrowser/juce_FileChooser.cpp @@ -183,7 +183,6 @@ void FileChooser::launchAsync (int flags, std::functionlaunch(); } - std::shared_ptr FileChooser::createPimpl (int flags, FilePreviewComponent* previewComp) { results.clear(); diff --git a/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp b/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp index 796268d47a..283502159d 100644 --- a/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp +++ b/modules/juce_gui_basics/native/juce_linux_FileChooser.cpp @@ -39,16 +39,23 @@ static bool exeIsAvailable (String executable) return false; } +static bool isSet (int flags, int toCheck) +{ + return (flags & toCheck) != 0; +} + class FileChooser::Native : public FileChooser::Pimpl, private Timer { public: Native (FileChooser& fileChooser, int flags) : owner (fileChooser), - isDirectory ((flags & FileBrowserComponent::canSelectDirectories) != 0), - isSave ((flags & FileBrowserComponent::saveMode) != 0), - selectMultipleFiles ((flags & FileBrowserComponent::canSelectMultipleItems) != 0), - warnAboutOverwrite ((flags & FileBrowserComponent::warnAboutOverwriting) != 0) + // kdialog/zenity only support opening either files or directories. + // Files should take precedence, if requested. + isDirectory (isSet (flags, FileBrowserComponent::canSelectDirectories) && ! isSet (flags, FileBrowserComponent::canSelectFiles)), + isSave (isSet (flags, FileBrowserComponent::saveMode)), + selectMultipleFiles (isSet (flags, FileBrowserComponent::canSelectMultipleItems)), + warnAboutOverwrite (isSet (flags, FileBrowserComponent::warnAboutOverwriting)) { const File previousWorkingDirectory (File::getCurrentWorkingDirectory());