#BUGFIX by exept
authorClaus Gittinger <cg@exept.de>
Sun, 08 Sep 2019 12:47:41 +0200
changeset 19120 fd4638232aad
parent 19119 95b0262e78b4
child 19121 e8f6eaa31790
#BUGFIX by exept class: FileDialog changed: #fileSelectionChanged do not clobber the filename in the entry field, when the folder selection changes.
FileDialog.st
--- a/FileDialog.st	Sun Sep 08 00:17:27 2019 +0200
+++ b/FileDialog.st	Sun Sep 08 12:47:41 2019 +0200
@@ -1,3 +1,5 @@
+"{ Encoding: utf8 }"
+
 "
  COPYRIGHT (c) 2002 by eXept Software AG
               All Rights Reserved
@@ -1810,40 +1812,46 @@
 !
 
 fileSelectionChanged
-    |files newFile entryFieldFilename filenameHolder|
+    |files singleSelectedFileOrDirectory newFile entryFieldFilename filenameHolder|
 
+    "/ the name in the entry field
     filenameHolder := self filenameHolder.
 
+    "/ the selection in the tree
     files := treeBrowser currentFileNameHolder value.
+    files size == 1 ifTrue:[
+        singleSelectedFileOrDirectory := files first.    
+    ].
+    singleSelectedFileOrDirectory isNil ifTrue:[
+        "/ self halt.
+        ^ self.
+    ].
+    singleSelectedFileOrDirectory := singleSelectedFileOrDirectory asFilename.
 
-    (files isEmpty) ifTrue:[
-        newFile := nil.
-    ] ifFalse:[
-        files size == 1 ifTrue:[
-            newFile := files first.    
+    singleSelectedFileOrDirectory isDirectory ifFalse:[
+        newFile := singleSelectedFileOrDirectory.
+    ] ifTrue:[
+        (entryFieldFilename := filenameHolder value) notEmptyOrNil ifTrue:[
+            entryFieldFilename := entryFieldFilename asFilename.
+            self startFilename asFilename baseName = entryFieldFilename baseName ifTrue:[
+                entryFieldFilename isDirectory ifFalse:[
+                    newFile := singleSelectedFileOrDirectory construct:entryFieldFilename baseName.
+                ].
+            ].
         ] ifFalse:[
-            newFile := ''.
+            "/ self halt.
         ].
     ].
-    (filenameHolder value notNil 
-    and:[newFile notNil 
-    and:[newFile asFilename isDirectory]]) ifTrue:[
-        entryFieldFilename := filenameHolder value asFilename.
-        self startFilename asFilename baseName = entryFieldFilename baseName ifTrue:[
-            entryFieldFilename isDirectory ifFalse:[
-                newFile := newFile asFilename construct:entryFieldFilename baseName.
-            ].
+    newFile notNil ifTrue:[
+        filenameHolder value:newFile withoutNotifying:self.
+
+        OperatingSystem supportsVolumes ifTrue:[
+            | volume |
+
+            volume := newFile volume. 
+            self selectedDeviceDrive value:volume withoutNotifying:self.
         ].
     ].
-    filenameHolder value:newFile withoutNotifying:self.
-    
-    OperatingSystem supportsVolumes ifTrue:[
-        | volume |
-        volume := (files size >= 1) 
-                ifTrue:[files first volume] 
-                ifFalse:nil.    
-        self selectedDeviceDrive value:volume.
-    ].
 
     "Created: / 14-02-2011 / 17:54:08 / cg"
     "Modified (format): / 14-02-2017 / 12:50:11 / cg"