@@ -75,6 +75,11 @@ define(function (require, exports, module) {
7575 FileSyncManager = require ( "project/FileSyncManager" ) ,
7676 EditorManager = require ( "editor/EditorManager" ) ;
7777
78+
79+ // Define the preference to decide how to sort the Project Tree files
80+ PreferencesManager . definePreference ( "sortDirectoriesFirst" , "boolean" , brackets . platform !== "mac" ) ;
81+
82+
7883 /**
7984 * @private
8085 * Forward declaration for the _fileSystemChange and _fileSystemRename functions to make JSLint happy.
@@ -86,9 +91,8 @@ define(function (require, exports, module) {
8691 * @private
8792 * File tree sorting for mac-specific sorting behavior
8893 */
89- var _isMac = brackets . platform === "mac" ,
90- _sortPrefixDir = _isMac ? "" : "0" ,
91- _sortPrefixFile = _isMac ? "" : "1" ;
94+ var _sortPrefixDir ,
95+ _sortPrefixFile ;
9296
9397 /**
9498 * @private
@@ -197,6 +201,17 @@ define(function (require, exports, module) {
197201 */
198202 var _allFilesCachePromise = null ;
199203
204+
205+ /**
206+ * @private
207+ * Generates the prefixes used for sorting the files in the project tree
208+ */
209+ function _generateSortPrefixes ( ) {
210+ var dirFirst = PreferencesManager . get ( "sortDirectoriesFirst" ) ;
211+ _sortPrefixDir = dirFirst ? "0" : "" ;
212+ _sortPrefixFile = dirFirst ? "1" : "" ;
213+ }
214+
200215 /**
201216 * @private
202217 */
@@ -697,7 +712,7 @@ define(function (require, exports, module) {
697712 * @return {string }
698713 */
699714 function _toCompareString ( name , isFolder ) {
700- return ( ( isFolder ) ? _sortPrefixDir : _sortPrefixFile ) + name ;
715+ return ( isFolder ? _sortPrefixDir : _sortPrefixFile ) + name ;
701716 }
702717
703718 /**
@@ -2115,6 +2130,8 @@ define(function (require, exports, module) {
21152130 DocumentManager . notifyPathNameChanged ( oldName , newName ) ;
21162131 } ;
21172132
2133+
2134+
21182135 // Initialize variables and listeners that depend on the HTML DOM
21192136 AppInit . htmlReady ( function ( ) {
21202137 $projectTreeContainer = $ ( "#project-files-container" ) ;
@@ -2187,6 +2204,13 @@ define(function (require, exports, module) {
21872204
21882205 $ ( exports ) . on ( "projectOpen" , _reloadProjectPreferencesScope ) ;
21892206
2207+ // Initialize the sort prefixes and make sure to change them when the sort pref changes
2208+ _generateSortPrefixes ( ) ;
2209+ PreferencesManager . on ( "change" , "sortDirectoriesFirst" , function ( ) {
2210+ _generateSortPrefixes ( ) ;
2211+ refreshFileTree ( ) ;
2212+ } ) ;
2213+
21902214 // Event Handlers
21912215 $ ( FileViewController ) . on ( "documentSelectionFocusChange" , _documentSelectionFocusChange ) ;
21922216 $ ( FileViewController ) . on ( "fileViewFocusChange" , _fileViewFocusChange ) ;
@@ -2195,7 +2219,7 @@ define(function (require, exports, module) {
21952219 // Commands
21962220 CommandManager . register ( Strings . CMD_OPEN_FOLDER , Commands . FILE_OPEN_FOLDER , openProject ) ;
21972221 CommandManager . register ( Strings . CMD_PROJECT_SETTINGS , Commands . FILE_PROJECT_SETTINGS , _projectSettings ) ;
2198- CommandManager . register ( Strings . CMD_FILE_REFRESH , Commands . FILE_REFRESH , refreshFileTree ) ;
2222+ CommandManager . register ( Strings . CMD_FILE_REFRESH , Commands . FILE_REFRESH , refreshFileTree ) ;
21992223
22002224 // Init invalid characters string
22012225 if ( brackets . platform === "mac" ) {
0 commit comments