diff -Naur fltk-1.3.2_orig/FL/Fl_File_Chooser.H fltk-1.3.2/FL/Fl_File_Chooser.H
--- fltk-1.3.2_orig/FL/Fl_File_Chooser.H	2011-07-19 14:49:30.000000000 +1000
+++ fltk-1.3.2/FL/Fl_File_Chooser.H	2014-09-21 13:22:21.556125106 +1000
@@ -22,7 +22,6 @@
 #define Fl_File_Chooser_H
 #include <FL/Fl.H>
 #include <FL/Fl_Double_Window.H>
-#include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
 #include <FL/Fl_Group.H>
@@ -40,7 +39,8 @@
 
 class FL_EXPORT Fl_File_Chooser {
 public:
-  enum { SINGLE = 0, MULTI = 1, CREATE = 2, DIRECTORY = 4 }; 
+  enum { SINGLE = 0, MULTI = 1, CREATE = 2, DIRECTORY = 4 };
+  enum { OR_DIRECTORY = 8 };
 private:
   static Fl_Preferences prefs_; 
   void (*callback_)(Fl_File_Chooser*, void *); 
@@ -49,6 +49,7 @@
   char pattern_[FL_PATH_MAX]; 
   char preview_text_[2048]; 
   int type_; 
+  int options_;
   void favoritesButtonCB(); 
   void favoritesCB(Fl_Widget *w); 
   void fileListCB(); 
@@ -156,6 +157,8 @@
   Fl_Fontsize textsize();
   void type(int t);
   int type();
+  void options(int);
+  int options() const;
   void * user_data() const;
   void user_data(void *d);
   const char *value(int f = 1); 
diff -Naur fltk-1.3.2_orig/FL/Fl_Native_File_Chooser.H fltk-1.3.2/FL/Fl_Native_File_Chooser.H
--- fltk-1.3.2_orig/FL/Fl_Native_File_Chooser.H	2012-10-19 22:23:51.000000000 +1100
+++ fltk-1.3.2/FL/Fl_Native_File_Chooser.H	2014-09-21 13:25:37.036129216 +1000
@@ -29,7 +29,6 @@
 // Use Windows' chooser
 #ifdef WIN32
 // #define _WIN32_WINNT	0x0501	// needed for OPENFILENAME's 'FlagsEx'
-#include <stdio.h>
 #include <stdlib.h>		// malloc
 #include <windows.h>
 #include <commdlg.h>		// OPENFILENAME, GetOpenFileName()
@@ -116,7 +115,8 @@
     NO_OPTIONS     = 0x0000,		///< no options enabled
     SAVEAS_CONFIRM = 0x0001,		///< Show native 'Save As' overwrite confirm dialog (if supported)
     NEW_FOLDER     = 0x0002,		///< Show 'New Folder' icon (if supported)
-    PREVIEW        = 0x0004		///< enable preview mode
+    PREVIEW        = 0x0004,		///< enable preview mode
+    OR_DIRECTORY   = 0x0008 		///< enable to select either a file(s) or a directory(ies), for BROWSE_FILE and BROWSE_MULTI_FILE types (only supported with the FLTK chooser) 
   };
   /** Localizable message */
   static const char *file_exists_message;
@@ -239,6 +239,7 @@
   // Private methods
   void errmsg(const char *msg);
   int type_fl_file(int);
+  int options_fl_file(int);
   void parse_filter();
   void keeplocation();
   int exist_dialog();
diff -Naur fltk-1.3.2_orig/src/Fl_File_Chooser2.cxx fltk-1.3.2/src/Fl_File_Chooser2.cxx
--- fltk-1.3.2_orig/src/Fl_File_Chooser2.cxx	2012-10-19 22:23:51.000000000 +1100
+++ fltk-1.3.2/src/Fl_File_Chooser2.cxx	2014-09-21 13:29:04.720133583 +1000
@@ -350,7 +350,6 @@
 #include <FL/Fl_Shared_Image.H>
 #include <FL/fl_draw.H>
 
-#include <stdio.h>
 #include <stdlib.h>
 #include "flstring.h"
 #include <errno.h>
@@ -743,7 +742,7 @@
     // if so, make sure only that item is selected...
     filename = pathname + strlen(pathname) - 1;
 
-    if ((type_ & MULTI) && !(type_ & DIRECTORY)) {
+    if ((type_ & MULTI) && !(type_ & DIRECTORY) && !(options_ & OR_DIRECTORY)) {
       if (*filename == '/') {
 	// Clicked on a directory, deselect everything else...
 	int i = fileList->value();
@@ -782,7 +781,7 @@
     if (callback_) (*callback_)(this, data_);
 
     // Activate the OK button as needed...
-    if (!_fl_filename_isdir_quick(pathname) || (type_ & DIRECTORY))
+    if ( !_fl_filename_isdir_quick(pathname) || (type_ & DIRECTORY) || ( (!(type_ & CREATE) && !(type_ & DIRECTORY)) && (options_ & OR_DIRECTORY)) )
       okButton->activate();
     else
       okButton->deactivate();
diff -Naur fltk-1.3.2_orig/src/Fl_File_Chooser.cxx fltk-1.3.2/src/Fl_File_Chooser.cxx
--- fltk-1.3.2_orig/src/Fl_File_Chooser.cxx	2011-07-19 14:49:30.000000000 +1000
+++ fltk-1.3.2/src/Fl_File_Chooser.cxx	2014-09-21 13:22:23.436125145 +1000
@@ -21,6 +21,7 @@
 #include "../FL/Fl_File_Chooser.H"
 #include <FL/fl_draw.H>
 
+
 void Fl_File_Chooser::cb_window_i(Fl_Double_Window*, void*) {
   fileName->value("");
 fileList->deselect();
@@ -68,6 +69,7 @@
 void Fl_File_Chooser::cb_fileList_i(Fl_File_Browser*, void*) {
   fileListCB();
 }
+
 void Fl_File_Chooser::cb_fileList(Fl_File_Browser* o, void* v) {
   ((Fl_File_Chooser*)(o->parent()->parent()->user_data()))->cb_fileList_i(o,v);
 }
@@ -422,6 +424,14 @@
   return (type_);
 }
 
+void Fl_File_Chooser::options(int val) {
+  options_ = val;
+}
+
+int Fl_File_Chooser::options() const {
+  return(options_);
+}
+
 void * Fl_File_Chooser::user_data() const {
   return (data_);
 }
diff -Naur fltk-1.3.2_orig/src/Fl_Native_File_Chooser_FLTK.cxx fltk-1.3.2/src/Fl_Native_File_Chooser_FLTK.cxx
--- fltk-1.3.2_orig/src/Fl_Native_File_Chooser_FLTK.cxx	2012-05-26 00:46:02.000000000 +1000
+++ fltk-1.3.2/src/Fl_Native_File_Chooser_FLTK.cxx	2014-09-21 13:30:32.504135429 +1000
@@ -24,6 +24,8 @@
 #define FLTK_CHOOSER_MULTI     Fl_File_Chooser::MULTI
 #define FLTK_CHOOSER_CREATE    Fl_File_Chooser::CREATE
 
+#define FLTK_OR_DIRECTORY      Fl_File_Chooser::OR_DIRECTORY
+
 #include "Fl_Native_File_Chooser_common.cxx"
 #include <sys/stat.h>
 #include <string.h>
@@ -97,6 +99,7 @@
   }
 }
 
+
 /**
   Sets the current Fl_Native_File_Chooser::Type of browser.
  */
@@ -112,6 +115,15 @@
   return(_btype);
 }
 
+
+// PRIVATE: translate Native options to Fl_File_Chooser options
+int Fl_Native_File_Chooser::options_fl_file(int val) {
+  if(val & OR_DIRECTORY)
+      return(FLTK_OR_DIRECTORY);
+  else
+      return 0;
+}
+
 /**
   Sets the platform specific chooser options to \p val.
   \p val is expected to be one or more Fl_Native_File_Chooser::Option flags ORed together.
@@ -127,6 +139,7 @@
 */
 void Fl_Native_File_Chooser::options(int val) {
   _options = val;
+  _file_chooser->options(options_fl_file(val));
 }
 
 /**