diff --git a/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp b/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp index c418f09978..f2c9f898cf 100644 --- a/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp +++ b/modules/juce_gui_basics/filebrowser/juce_FileBrowserComponent.cpp @@ -157,10 +157,12 @@ File FileBrowserComponent::getSelectedFile (int index) const noexcept bool FileBrowserComponent::currentFileIsValid() const { + const File f (getSelectedFile (0)); + if (isSaveMode()) - return ! getSelectedFile (0).isDirectory(); - else - return getSelectedFile (0).exists(); + return (flags & canSelectDirectories) != 0 || ! f.isDirectory(); + + return f.exists(); } File FileBrowserComponent::getHighlightedFile() const noexcept @@ -176,7 +178,8 @@ void FileBrowserComponent::deselectAllFiles() //============================================================================== bool FileBrowserComponent::isFileSuitable (const File& file) const { - return (flags & canSelectFiles) != 0 && (fileFilter == nullptr || fileFilter->isFileSuitable (file)); + return (flags & canSelectFiles) != 0 + && (fileFilter == nullptr || fileFilter->isFileSuitable (file)); } bool FileBrowserComponent::isDirectorySuitable (const File&) const @@ -300,7 +303,9 @@ void FileBrowserComponent::setFileFilter (const FileFilter* const newFileFilter) String FileBrowserComponent::getActionVerb() const { - return isSaveMode() ? TRANS("Save") : TRANS("Open"); + return isSaveMode() ? ((flags & canSelectDirectories) != 0 ? TRANS("Choose") + : TRANS("Save")) + : TRANS("Open"); } void FileBrowserComponent::setFilenameBoxLabel (const String& name) @@ -396,7 +401,7 @@ bool FileBrowserComponent::keyPressed (const KeyPress& key) { (void) key; -#if JUCE_LINUX || JUCE_WINDOWS + #if JUCE_LINUX || JUCE_WINDOWS if (key.getModifiers().isCommandDown() && (key.getKeyCode() == 'H' || key.getKeyCode() == 'h')) { @@ -404,7 +409,7 @@ bool FileBrowserComponent::keyPressed (const KeyPress& key) fileList->refresh(); return true; } -#endif + #endif return false; }